Commit Graph

6332 Commits

Author SHA1 Message Date
Florian Diebold fe7bf993aa Implement better handling of divergence
Divergence here means that for some reason, the end of a block will not be
reached. We tried to model this just using the never type, but that doesn't work
fully (e.g. in `let x = { loop {}; "foo" };` x should still have type `&str`);
so this introduces a `diverges` flag that the type checker keeps track of, like
rustc does.
2020-05-08 18:15:24 +02:00
Florian Diebold f5177f91ae Fix type of byte literals
They're `&[u8; N]`, not `&[u8]` (see #4374).
2020-05-08 15:18:33 +02:00
Aleksey Kladov ecff5dc141 Cleanup 2020-05-08 14:55:28 +02:00
Aleksey Kladov 7c0409e0c7 Cleanup 2020-05-08 12:34:39 +02:00
Aleksey Kladov 6713be0b13 Rename ra_env -> ra_toolchain 2020-05-08 12:25:36 +02:00
bors[bot] 8295a9340c Merge #4329
4329: Look for `cargo`, `rustc`, and `rustup` in standard installation path r=matklad a=cdisselkoen

Discussed in #3118.  This is approximately a 90% fix for the issue described there.

This PR creates a new crate `ra_env` with a function `get_path_for_executable()`; see docs there.  `get_path_for_executable()` improves and generalizes the function `cargo_binary()` which was previously duplicated in the `ra_project_model` and `ra_flycheck` crates.  (Both of those crates now depend on the new `ra_env` crate.)  The new function checks (e.g.) `$CARGO` and `$PATH`, but also falls back on `~/.cargo/bin` manually before erroring out.  This should allow most users to not have to worry about setting the `$CARGO` or `$PATH` variables for VSCode, which can be difficult e.g. on macOS as discussed in #3118.

I've attempted to replace all calls to `cargo`, `rustc`, and `rustup` in rust-analyzer with appropriate invocations of `get_path_for_executable()`; I don't think I've missed any in Rust code, but there is at least one invocation in TypeScript code which I haven't fixed.  (I'm not sure whether it's affected by the same problem or not.) https://github.com/rust-analyzer/rust-analyzer/blob/a4778ddb7a00f552a8e653bbf56ae9fd69cfe1d3/editors/code/src/cargo.ts#L79

I'm sure this PR could be improved a bunch, so I'm happy to take feedback/suggestions on how to solve this problem better, or just bikeshedding variable/function/crate names etc.

cc @Veetaha 

Fixes #3118.

Co-authored-by: Craig Disselkoen <craigdissel@gmail.com>
Co-authored-by: veetaha <veetaha2@gmail.com>
2020-05-08 10:11:19 +00:00
Aleksey Kladov d3110859ba Move feature desugaring to the right abstraction layer 2020-05-08 02:56:53 +02:00
Craig Disselkoen 3077eae2a6 use home crate instead of dirs 2020-05-07 12:06:44 -07:00
bors[bot] 1b136aae0b Merge #4296
4296: Support cargo:rustc-cfg in build.rs r=matklad a=robojumper

Fixes #4238.

Co-authored-by: robojumper <robojumper@gmail.com>
2020-05-07 18:50:00 +00:00
bors[bot] 97b9b364d6 Merge #4362
4362: do not show runnables for main function outside of a binary target  r=matklad a=bnjjj

close #4356

Co-authored-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-05-07 17:30:13 +00:00
bors[bot] fd84c31ff7 Merge #4346
4346: Fix rename of enum variant visible from module r=matklad a=montekki

Probably fixes #4237 

It looks like the ref is found correctly in this case but it's visibility is not correctly determined. I took a stab at fixing that by adding an implementation of `HasVisibility` for `EnumVariant` so it works more or less the same way it does for struct fields.

In other words, the `search_range` here does not contain the ref since it's not considered visible:

https://github.com/rust-analyzer/rust-analyzer/blob/efd8e34c396f1524623a495e47111f1047cf2879/crates/ra_ide_db/src/search.rs#L209-L214


Before that I tried to populate `ItemScope` with visible enum variants but that ended up with breaking tests all over the place and also it looked illogical in the end: `ItemScope` is not populated with, say, public struct fields and the same should be true for `enum` variants.

I've added two more or less identical tests: one for the case with a struct field rename and one for enum variant rename; the test for struct should probably be removed and the names should be changed.


Co-authored-by: Fedor Sakharov <fedor.sakharov@gmail.com>
2020-05-07 16:29:01 +00:00
Aleksey Kladov 1e790ea314 Simplify 2020-05-07 17:32:01 +02:00
Aleksey Kladov 28fcff125a Nicer API 2020-05-07 17:29:23 +02:00
Aleksey Kladov c6b81bc013 Rename AssitLabel -> Assist 2020-05-07 17:18:28 +02:00
Benjamin Coenen c839d4f7a9 do not show runnables for main function outside of a binary target #4356
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-05-07 16:52:14 +02:00
Aleksey Kladov 4867968d22 Refactor assists API to be more convenient for adding new assists
It now duplicates completion API in its shape.
2020-05-07 16:27:54 +02:00
Fedor Sakharov 210f0cbd27 Remove HasVisibility implementation 2020-05-07 16:31:51 +03:00
Aleksey Kladov 43cedecf68 Fix panic in FunctionSignature 2020-05-07 14:29:01 +02:00
Craig Disselkoen 227929f9dd simplify by using bail! macro 2020-05-06 13:29:22 -07:00
Craig Disselkoen 5d4648884b cargo fmt 2020-05-06 12:47:13 -07:00
Craig Disselkoen 44b01ccff3 return a PathBuf instead of String 2020-05-06 12:39:11 -07:00
bors[bot] 1a0988b899 Merge #4316 #4351
4316: do not truncate display for hover r=matklad a=bnjjj

close #4311 

4351: Fix Windows server path r=matklad a=lnicola

CC @Coder-256.

Co-authored-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
Co-authored-by: Laurențiu Nicola <lnicola@users.noreply.github.com>
2020-05-06 16:54:31 +00:00
bors[bot] b832dfc917 Merge #4331
4331: Fixture improvements r=TimoFreiberg a=TimoFreiberg

As mentioned in [Zulip](https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/resolve_path.20between.20fixture.20files) :)

I think always allowing unindented first lines is friendlier than making the user fix it and I don't see any drawbacks.

Co-authored-by: Timo Freiberg <timo.freiberg@gmail.com>
2020-05-06 16:18:17 +00:00
Timo Freiberg 86fa80e5b3 Allow fixture strings with unindented first line
This allows fixtures like
        "//- /lib.rs
         ...
         //- /foo.rs
         ...
"
2020-05-06 18:09:28 +02:00
Timo Freiberg 8a5d14453e Add fixture doc comment 2020-05-06 18:09:28 +02:00
Benjamin Coenen 51c02ab84f add Ok wrapping
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-05-06 17:45:55 +02:00
bors[bot] e99447ffbf Merge #4347
4347: Fix usefulness check for never type r=flodiebold a=MikailBag



Co-authored-by: Mikail Bagishov <bagishov.mikail@yandex.ru>
2020-05-06 15:11:26 +00:00
Mikail Bagishov 7c94fa7d01 Fix usefulness check for never type 2020-05-06 17:59:27 +03:00
Aleksey Kladov 020ca6695f Simplify 2020-05-06 16:39:11 +02:00
Fedor Sakharov bd9f1f7eb7 Fix rename of enum variant visible from module 2020-05-06 17:35:22 +03:00
Aleksey Kladov 4d50709a96 Minor 2020-05-06 16:10:35 +02:00
Aleksey Kladov 0970c3454b Rename 2020-05-06 16:10:35 +02:00
Aleksey Kladov fdd4df97ba Use SourceChange for assists 2020-05-06 15:43:47 +02:00
Aleksey Kladov 1116c9a0e9 Fix TODO 2020-05-06 13:21:49 +02:00
Aleksey Kladov 233f01c9ba Move target to AssistLabel
Target is used for assists sorting, so we need it before we compute
the action.
2020-05-06 12:51:28 +02:00
Benjamin Coenen 1ec953f117 do not truncate display for hover
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-05-06 11:33:43 +02:00
Aleksey Kladov 3850b1c086 Lift SourceChange to the ra_ide_db 2020-05-06 11:32:34 +02:00
Aleksey Kladov beb35c3ecb Fix capitalization 2020-05-06 11:19:43 +02:00
Benjamin Coenen 550c629498 do not truncate display for hover
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-05-06 11:08:50 +02:00
Aleksey Kladov eea431180e Regenerate 2020-05-06 10:21:35 +02:00
Aleksey Kladov d308ff910b Merge doc_tests and tests 2020-05-06 10:18:12 +02:00
Aleksey Kladov 25e6bbde01 Merge assits::test_helpers and tests 2020-05-06 10:16:55 +02:00
Benjamin Coenen c4d128e454 Merge branch 'master' of github.com:rust-analyzer/rust-analyzer into fix_4311 2020-05-06 09:57:00 +02:00
Craig Disselkoen 1b76b4281e simplify some code using early returns 2020-05-05 16:12:56 -07:00
Craig Disselkoen 3e603a8fdd add module-level docs so that tests pass 2020-05-05 16:12:56 -07:00
Craig Disselkoen 7e60264ba0 cargo fmt 2020-05-05 16:12:56 -07:00
Craig Disselkoen 303b444dbb pull function out into new crate ra_env; use in ra_flycheck as well 2020-05-05 16:12:56 -07:00
Craig Disselkoen 5aa1bba107 more generic, find rustc as well 2020-05-05 16:12:56 -07:00
Craig Disselkoen ffaef1b7ae ra_project_model: look for Cargo in more places
See #3118
2020-05-05 16:12:56 -07:00
bors[bot] 30eb458b4f Merge #4332
4332: Refactor TextEdit r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-05-05 21:50:47 +00:00