Commit Graph

7736 Commits

Author SHA1 Message Date
Matthew Jasper
49b53cd7a0 Address review comments 2020-02-10 20:11:44 +00:00
bors[bot]
29f5e7eebf
Merge #3084
3084: More specific error if `rustc --print sysroot` fails r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-02-10 16:05:27 +00:00
Aleksey Kladov
5a71eb8749 More specific error if rustc --print sysroot fails 2020-02-10 17:04:18 +01:00
kjeremy
f51e3a357e Update some crates 2020-02-10 10:42:56 -05:00
Aleksey Kladov
5b703bdc58 eamcs is now upstreamed 2020-02-10 15:55:21 +01:00
Aleksey Kladov
727dcf5231
Merge pull request #3081 from matklad/with-output
xtask release
2020-02-10 15:37:12 +01:00
Aleksey Kladov
57147d7471 xtask release 2020-02-10 15:34:04 +01:00
bors[bot]
46a474866e
Merge #3080
3080: More convenient run_with_output r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-02-10 14:16:42 +00:00
Aleksey Kladov
1b6acc391a More convenient run_with_output 2020-02-10 15:16:07 +01:00
bors[bot]
33df947d62 Merge #3079
3079: Add note r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-02-10 09:53:54 +00:00
Aleksey Kladov
bbd9013bca Add note 2020-02-10 10:53:31 +01:00
bors[bot]
b4ac3dda78 Merge #3075
3075: Migrate u32::from(TextUnit) as usize to .to_usize() r=matklad a=Veetaha

@matklad I see 29 uses of `.to_usize()` cast, wouldn't it be reasonable to change `TextUnit(u32)` to `TextUnit(usize)` ? Or do you have reasons to stick with `u32` here?

Co-authored-by: Veetaha <gerzoh1@gmail.com>
2020-02-10 09:06:01 +00:00
bors[bot]
abeadb29ce Merge #3077
3077: Move build prerequisites into build section r=matklad a=dvermd



Co-authored-by: dvermd <315743+dvermd@users.noreply.github.com>
2020-02-10 06:53:42 +00:00
dvermd
7fb0311ac8 Move build prerequisites into build section 2020-02-10 06:55:10 +01:00
Kevin DeLorey
3ffc84fd15 Added associated const magic completion. 2020-02-09 20:59:12 -06:00
Veetaha
139479e8a3 move to to_usize() 2020-02-10 01:57:43 +02:00
Matthew Jasper
504e2a46bd Update tests for or-patterns 2020-02-09 22:06:28 +00:00
Matthew Jasper
8c8d0bb34f Add or- and parenthesized-patterns 2020-02-09 22:06:15 +00:00
bors[bot]
c48c0f370a Merge #3072
3072: vscode: removed unnecessary awaits feature r=matklad a=Veetaha

Found a feature that when the user has no internet connection the whole extension is blocked by waiting for the user to dismiss the error message and for making a sanity-check dns resolution.

Co-authored-by: Veetaha <gerzoh1@gmail.com>
2020-02-09 20:33:50 +00:00
Veetaha
e709f113c1 vscode: changed dns sanity-check url from google.com to example.com 2020-02-09 22:27:01 +02:00
bors[bot]
2eb1c34f85 Merge #3071
3071: Freshen docs for prebuilt binaries and raLspServer setting r=matklad a=Veetaha

Better documented breaking changes as per an incident in #2988
Follow up for #3053 


Co-authored-by: Veetaha <gerzoh1@gmail.com>
2020-02-09 20:21:47 +00:00
Veetaha
5d39f6d3b2 vscode: add on-success logic to dns resolution sanity check 2020-02-09 22:00:33 +02:00
Veetaha
fa7b91a2f7 vscode: removed unnecessary awaits 2020-02-09 21:55:29 +02:00
Veetaha
843d00ec9d docs: quick fix inner link in docs 2020-02-09 21:40:39 +02:00
Veetaha
3ebbeb46d4 docs: more documentation on prebuilt binaries all-editors-wise 2020-02-09 21:25:24 +02:00
Kevin DeLorey
d85abd77b9 Added a utility function that can be used to determine the missing impl items. 2020-02-09 12:24:59 -06:00
Veetaha
e18661f62b docs: Freshen docs for prebuilt binaries and raLspServer setting 2020-02-09 20:19:23 +02:00
Kevin DeLorey
a957c473fd Merge branch 'master' into kdelorey/complete-trait-impl 2020-02-09 10:37:43 -06:00
bors[bot]
1b9b13b4b4
Merge #3068
3068: Do not import anything if first segment of the qualified path resolves r=matklad a=SomeoneToIgnore

Part of initial https://github.com/rust-analyzer/rust-analyzer/pull/3061, closing 2nd issue mentioned in the last comment there.

Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
2020-02-09 15:32:39 +00:00
Kirill Bulatov
d39d401612 Fix rebase leftovers 2020-02-09 17:25:51 +02:00
Kirill Bulatov
48abcaaabe Do not import anything if first segment of FQN resolves 2020-02-09 17:22:59 +02:00
bors[bot]
360890fcec
Merge #3053
3053: Feature: downloading lsp server from GitHub r=matklad a=Veetaha

This is currently very WIP, I may need to change this and that, add "download language server command", logging stuff (for future bug reports), etc., but it already works.
Also didn't test this on windows yet and mac (don't have the latter)

The quirks:
* Downloaded binary doesn't have executable permissions by default, that's why we ~~`chmod 111`~~ (**[UPD]** `chmod 755` as per @lnicola [suggestion](https://github.com/rust-analyzer/rust-analyzer/pull/3053#discussion_r376694456)) for it.
* To remove installed binary run `rm /${HOME}/.config/Code/User/globalStorage/matklad.rust-analyzer/ra_lsp_server-linux`, ~~note that `-f` flag is necessary, because of `111` permissions (I think this should be changed)~~ (**[UPD]** --force is no longer needed due to 755 permissions).

I also tried to keep things simple and not to use too many dependencies, all the ones added have 0 dependencies, (`ts-not-nil` is my personal npm package, that imitates `unwrap()` in TypeScript)

**[UPD]** I reduced throttle latency of progress indicator to 200ms for smoother UX


// TODO:
- [x] ~~Add `Rust Analyzer: Download latest language server` vscode command.~~ **[UPD]**: having reviewed the code and estimated available options I concluded that this feature requires too many code changes, I'd like to extract this into a separate PR after we merge this one.
- [x] Add some logging for future debugging
- [x] ~~Gracefully handle the case when language server is not available (e.g. no internet connection, user explicitly rejected the download, etc.)~~ **[UPD]** Decided to postpone better implementation of graceful degradation logic as per [conversation](https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/Deployment.20and.20installation/near/187758550).

Demo (**[UPD]** this is a bit outdated, but still mainly reflects the feature):
![ra-github-release-download-mvp](https://user-images.githubusercontent.com/36276403/74077961-4f248a80-4a2d-11ea-962f-27c650fd6c4c.gif)

Related issue: #2988 #3007 

Co-authored-by: Veetaha <gerzoh1@gmail.com>
Co-authored-by: Veetaha <veetaha2@gmail.com>
2020-02-09 15:21:12 +00:00
bors[bot]
0db5525c44 Merge #3070
3070: Set auto-import target r=matklad a=matklad

closes #3067

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-02-09 15:14:30 +00:00
Aleksey Kladov
fe141a8c10 Set auto-import target
closes #3067
2020-02-09 16:14:07 +01:00
Veetaha
dfb81a8cd4 docs: fix spelling untill -> until
Co-Authored-By: Jonas Platte <jplatte@users.noreply.github.com>
2020-02-09 17:04:33 +02:00
bors[bot]
a836247de4 Merge #3069
3069: Simplify Assists interface r=matklad a=matklad

Instead of building a physical tree structure, just tag related
assists with the same group

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-02-09 15:04:20 +00:00
Aleksey Kladov
9769c5140c Simplify Assists interface
Instead of building a physical tree structure, just "tag" related
assists with the same group
2020-02-09 16:03:54 +01:00
Veetaha
be244ab2fb docs: minor fixes in wordings and punctuation 2020-02-09 15:54:54 +02:00
Veetaha
6a367886ec vscode: updated docs on prebuilt binaries 2020-02-09 15:51:28 +02:00
Aleksey Kladov
fb99831cb0 Slightly simpler API for groups 2020-02-09 14:30:27 +01:00
Veetaha
7cba77ed4e vscode: added logging when donloading binaries 2020-02-09 15:01:00 +02:00
bors[bot]
aa5f80aed1
Merge #3066
3066: Some README fixes/cleanups r=matklad a=flodiebold

Make capitalization more consistent and fix some typos.

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2020-02-09 12:41:36 +00:00
Edwin Cheng
3038470c68 Use get_or_insert_with 2020-02-09 20:41:29 +08:00
Florian Diebold
9bb699b28d Some README fixes/cleanups
Make capitalization more consistent and fix some typos.
2020-02-09 13:35:54 +01:00
Veetaha
f3240e22c6 vscode: move throtting of download progress to call site 2020-02-09 14:18:05 +02:00
Veetaha
a63659badb vscode: replaced unwrapNotNil() with ! as per @matklad 2020-02-09 13:59:27 +02:00
Veetaha
7a09274e52 vscode: refactor inverted ternaries to if statements as per @matklad 2020-02-09 13:45:06 +02:00
Veetaha
34241b9af9 vscode: remove noise data fields declarations as per @matklad 2020-02-09 13:39:54 +02:00
Veetaha
3159e87c49 vscode: refactor levels of code nesting and string literals quotes 2020-02-09 13:36:36 +02:00
bors[bot]
01836a0f35
Merge #3050
3050: Refactor type parameters, implement argument position impl trait r=matklad a=flodiebold

I wanted to implement APIT by lowering to type parameters because we need to do that anyway for correctness and don't need Chalk support for it; this grew into some more wide-ranging refactoring of how type parameters are handled 😅 

 - use Ty::Bound instead of Ty::Param to represent polymorphism, and explicitly
   count binders. This gets us closer to Chalk's way of doing things, and means
   that we now only use Param as a placeholder for an unknown type, e.g. within
   a generic function. I.e. we're never using Param in a situation where we want
   to substitute it, and the method to do that is gone; `subst` now always works
   on bound variables. (This changes how the types of generic functions print; 
   previously, you'd get something like `fn identity<i32>(T) -> T`, but now we
   display the substituted signature `fn identity<i32>(i32) -> i32`, which I think 
   makes more sense.)
 - once we do this, it's more natural to represent `Param` by a globally unique
   ID; the use of indices was mostly to make substituting easier. This also
   means we fix the bug where `Param` loses its name when going through Chalk.
 - I would actually like to rename `Param` to `Placeholder` to better reflect its use and
   get closer to Chalk, but I'll leave that to a follow-up.
 - introduce a context for type lowering, to allow lowering `impl Trait` to
   different things depending on where we are. And since we have that, we can
   also lower type parameters directly to variables instead of placeholders.
   Also, we'll be able to use this later to collect diagnostics.
 - implement argument position impl trait by lowering it to type parameters.
   I've realized that this is necessary to correctly implement it; e.g. consider
   `fn foo(impl Display) -> impl Something`. It's observable that the return
   type of e.g. `foo(1u32)` unifies with itself, but doesn't unify with e.g.
   `foo(1i32)`; so the return type needs to be parameterized by the argument
   type.

   
This fixes a few bugs as well:
 - type parameters 'losing' their name when they go through Chalk, as mentioned
   above (i.e. getting `[missing name]` somewhere)
 - impl trait not being considered as implementing the super traits (very
   noticeable for the `db` in RA)
 - the fact that argument impl trait was only turned into variables when the
   function got called caused type mismatches when the function was used as a
   value (fixes a few type mismatches in RA)

The one thing I'm not so happy with here is how we're lowering `impl Trait` types to variables; since `TypeRef`s don't have an identity currently, we just count how many of them we have seen while going through the function signature. That's quite fragile though, since we have to do it while desugaring generics and while lowering the type signature, and in the exact same order in both cases. We could consider either giving only `TypeRef::ImplTrait` a local id, or maybe just giving all `TypeRef`s an identity after all (we talked about this before)...

Follow-up tasks:
 - handle return position impl trait; we basically need to create a variable and some trait obligations for that variable
 - rename `Param` to `Placeholder`

Co-authored-by: Florian Diebold <florian.diebold@freiheit.com>
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2020-02-09 11:35:08 +00:00