aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* 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 #4366bors[bot]2020-05-083-32/+60
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4366: Unified debug lens r=matklad a=vsrs Right now every debug engine gets the debug executable and exports the errors on its own. This PR unifies the way all engines work. And adds an option to configure each engine separably. For example, this adds visualizers for both `CodeLLDB` and `C++ tools Windows debugger` ```json "rust-analyzer.debug.engineSettings": { "cppvsdbg": { "visualizerFile": "${workspaceRoot}/rdisk.natvis" }, "lldb": { "initCommands": [ "command script import ${workspaceRoot}/rdisk.vis.py" ] } } ``` Co-authored-by: vsrs <[email protected]> Co-authored-by: vsrs <[email protected]>
| * | Merge remote-tracking branch 'upstream/master' into uniformed_debug_lensvsrs2020-05-0875-1028/+2406
| |\| | | | | | | | | | | | | # Conflicts: # editors/code/src/commands/runnables.ts
| * | "rust-analyzer.debug.openDebugPane"vsrs2020-05-081-1/+1
| | | | | | | | | Co-authored-by: bjorn3 <[email protected]>
| * | Add CodeLLDB Rust visualizationvsrs2020-05-072-2/+3
| | |
| * | Add separate settings for each debug engine.vsrs2020-05-072-5/+8
| | |
| * | Add additional debug optionsvsrs2020-05-073-3/+21
| | |
| * | Uniformed way to get Debug Lens target executable.vsrs2020-05-062-28/+37
| | |
* | | 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
| | |
* | | Merge #4376bors[bot]2020-05-083-10/+11
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4376: Fix type of byte literals r=matklad a=flodiebold They're `&[u8; N]`, not `&[u8]` (see #4374). Co-authored-by: Florian Diebold <[email protected]>
| * | | Fix type of byte literalsFlorian Diebold2020-05-083-10/+11
|/ / / | | | | | | | | | They're `&[u8; N]`, not `&[u8]` (see #4374).
* | | Merge #4375bors[bot]2020-05-0810-141/+108
|\| | | | | | | | | | | | | | | | | | | | | | | | | | 4375: Cleanup toolchain handling r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | CleanupAleksey Kladov2020-05-087-100/+64
| | |
| * | CleanupAleksey Kladov2020-05-081-27/+28
| | |
| * | Rename ra_env -> ra_toolchainAleksey Kladov2020-05-089-21/+23
|/ /
* | Merge #4329bors[bot]2020-05-0813-63/+183
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-073-78/+13
| | |
| * | 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
| | |
| * | Fix cargo not found on macos bug at vscode extension sideveetaha2020-05-063-7/+48
| | |
| * | Preliminary refactoring of cargo.tsveetaha2020-05-062-33/+19
| | |
| * | 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-069-16/+31
| | |
| * | more generic, find rustc as wellCraig Disselkoen2020-05-064-54/+71
| | |
| * | ra_project_model: look for Cargo in more placesCraig Disselkoen2020-05-063-10/+128
| | | | | | | | | | | | See #3118
* | | Merge #4372bors[bot]2020-05-083-7/+13
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4372: Add master config for inlayHints to make disabling easy r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | Add master config for inlayHints to make disabling easyAleksey Kladov2020-05-083-7/+13
|/ / /
* | | Merge #4370bors[bot]2020-05-082-18/+12
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4370: Move feature desugaring to the right abstraction layer r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | Move feature desugaring to the right abstraction layerAleksey Kladov2020-05-082-18/+12
|/ / /
* | | Merge #4367bors[bot]2020-05-071-16/+16
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4367: Update deps r=kjeremy a=kjeremy Co-authored-by: kjeremy <[email protected]>
| * | | Update depskjeremy2020-05-071-16/+16
|/ / /
* | | 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 #4365bors[bot]2020-05-071-0/+3
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4365: Use the correct color for structs r=matklad a=matklad This works around https://github.com/microsoft/vscode/issues/97162 bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | | Use the correct color for structsAleksey Kladov2020-05-071-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | This works around https://github.com/microsoft/vscode/issues/97162
* | | | | | 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
| | | | | |