aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | Handle coercing function types to function pointers in matchFlorian Diebold2020-05-084-11/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | E.g. in ```rust match x { 1 => function1, 2 => function2, } ``` we need to try coercing both to pointers. Turns out this is a special case in rustc as well (see the link in the comment).
* | | | | Merge #4377bors[bot]2020-05-089-25/+362
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4377: Implement better handling of divergence r=matklad a=flodiebold 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. We also add some checking for `break`, but no support for break-with-value or labeled breaks yet. Co-authored-by: Florian Diebold <[email protected]> Co-authored-by: Florian Diebold <[email protected]>
| * | | | | Add diagnostic for break outside of loopFlorian Diebold2020-05-084-1/+62
| | | | | |
| * | | | | Use matches!Florian Diebold2020-05-081-4/+1
| | | | | |
| * | | | | Handle break somewhat betterFlorian Diebold2020-05-083-3/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Still no break-with-value or labels, but at least we know that `loop { break; }` doesn't diverge.
| * | | | | Implement better handling of divergenceFlorian Diebold2020-05-087-23/+200
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | | Merge #4378bors[bot]2020-05-081-1/+6
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4378: Add stderr to error message r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | Add stderr to error messageAleksey Kladov2020-05-081-1/+6
| | | | |
* | | | | Fix type of byte literalsFlorian Diebold2020-05-083-10/+11
|/ / / / | | | | | | | | | | | | They're `&[u8; N]`, not `&[u8]` (see #4374).
* | | | CleanupAleksey Kladov2020-05-086-99/+64
| | | |
* | | | CleanupAleksey Kladov2020-05-081-27/+28
| | | |
* | | | Rename ra_env -> ra_toolchainAleksey Kladov2020-05-088-11/+13
|/ / /
* | | Merge #4329bors[bot]2020-05-088-23/+97
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <[email protected]> Co-authored-by: veetaha <[email protected]>
| * | | use home crate instead of dirsCraig Disselkoen2020-05-072-2/+2
| | | |
| * | | simplify by using bail! macroCraig Disselkoen2020-05-061-4/+7
| | | |
| * | | cargo fmtCraig Disselkoen2020-05-061-1/+5
| | | |
| * | | return a PathBuf instead of StringCraig Disselkoen2020-05-062-8/+9
| | | |
| * | | simplify some code using early returnsCraig Disselkoen2020-05-061-24/+17
| | | |
| * | | add module-level docs so that tests passCraig Disselkoen2020-05-061-0/+4
| | | |
| * | | cargo fmtCraig Disselkoen2020-05-061-1/+4
| | | |
| * | | pull function out into new crate ra_env; use in ra_flycheck as wellCraig Disselkoen2020-05-068-15/+21
| | | |
| * | | more generic, find rustc as wellCraig Disselkoen2020-05-064-54/+71
| | | |
| * | | ra_project_model: look for Cargo in more placesCraig Disselkoen2020-05-062-9/+52
| | | | | | | | | | | | | | | | See #3118
* | | | Move feature desugaring to the right abstraction layerAleksey Kladov2020-05-082-18/+12
| | | |
* | | | Merge #4296bors[bot]2020-05-074-5/+130
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4296: Support cargo:rustc-cfg in build.rs r=matklad a=robojumper Fixes #4238. Co-authored-by: robojumper <[email protected]>
| * | | | Assume cargo_metadata uses String for cfgs soonrobojumper2020-05-052-10/+9
| | | | |
| * | | | Merge heavy testsrobojumper2020-05-051-134/+105
| | | | |
| * | | | Support build.rs cargo:rustc-cfgrobojumper2020-05-044-3/+158
| | | | |
* | | | | Merge #4362bors[bot]2020-05-071-2/+24
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4362: do not show runnables for main function outside of a binary target r=matklad a=bnjjj close #4356 Co-authored-by: Benjamin Coenen <[email protected]>
| * | | | | do not show runnables for main function outside of a binary target #4356Benjamin Coenen2020-05-071-2/+24
| | |_|/ / | |/| | | | | | | | | | | | | Signed-off-by: Benjamin Coenen <[email protected]>
* | | | | Merge #4346bors[bot]2020-05-072-2/+70
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <[email protected]>
| * | | | | Remove HasVisibility implementationFedor Sakharov2020-05-073-12/+6
| | | | | |
| * | | | | Fix rename of enum variant visible from moduleFedor Sakharov2020-05-064-2/+76
| | | | | |
* | | | | | SimplifyAleksey Kladov2020-05-075-6/+5
| | | | | |
* | | | | | Nicer APIAleksey Kladov2020-05-073-42/+42
| | | | | |
* | | | | | Rename AssitLabel -> AssistAleksey Kladov2020-05-074-24/+24
| | | | | |
* | | | | | Refactor assists API to be more convenient for adding new assistsAleksey Kladov2020-05-0738-593/+521
| | | | | | | | | | | | | | | | | | | | | | | | It now duplicates completion API in its shape.
* | | | | | Fix panic in FunctionSignatureAleksey Kladov2020-05-071-1/+7
| |/ / / / |/| | | |
* | | | | Merge #4316 #4351bors[bot]2020-05-061-4/+45
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <[email protected]> Co-authored-by: LaurenČ›iu Nicola <[email protected]>
| * | | | | do not truncate display for hoverBenjamin Coenen2020-05-061-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Benjamin Coenen <[email protected]>
| * | | | | do not truncate display for hoverBenjamin Coenen2020-05-061-1/+42
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Benjamin Coenen <[email protected]>
| * | | | | Merge branch 'master' of github.com:rust-analyzer/rust-analyzer into fix_4311Benjamin Coenen2020-05-0655-425/+634
| |\ \ \ \ \ | | | |_|/ / | | |/| | |
| * | | | | do not truncate display for hover #4311Benjamin Coenen2020-05-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Benjamin Coenen <[email protected]>
* | | | | | Merge #4331bors[bot]2020-05-062-10/+140
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <[email protected]>
| * | | | | | Allow fixture strings with unindented first lineTimo Freiberg2020-05-061-9/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows fixtures like "//- /lib.rs ... //- /foo.rs ... "
| * | | | | | Add fixture doc commentTimo Freiberg2020-05-061-1/+45
| | | | | | |
* | | | | | | add Ok wrappingBenjamin Coenen2020-05-063-0/+986
|/ / / / / / | | | | | | | | | | | | | | | | | | Signed-off-by: Benjamin Coenen <[email protected]>
* | | | | | Merge #4347bors[bot]2020-05-061-6/+23
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4347: Fix usefulness check for never type r=flodiebold a=MikailBag Co-authored-by: Mikail Bagishov <[email protected]>
| * | | | | | Fix usefulness check for never typeMikail Bagishov2020-05-061-6/+23
| | |_|/ / / | |/| | | |
* | | | | | SimplifyAleksey Kladov2020-05-063-33/+17
| | | | | |