aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
* Omit default types in HirDisplay SourceCode modeTimo Freiberg2020-05-103-28/+64
|
* infer: Make expected rhs type for plain assign the lhs typeEmil Lauridsen2020-05-102-1/+31
| | | | | | | | | | | | | This fixes an issue where the following code sample would fail to infer the type contained in the option: ```rust fn main() { let mut end = None; // TODO: Fix inference for this in RA loop { end = Some(true); } } ```
* Remove dbgEdwin Cheng2020-05-101-1/+0
|
* Hot fix panic for function_signatureEdwin Cheng2020-05-101-7/+13
|
* Merge #4392bors[bot]2020-05-091-14/+11
|\ | | | | | | | | | | | | | | | | | | | | 4392: Add From should not move the cursor r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * Add From should not move the cursorAleksey Kladov2020-05-091-14/+11
| |
* | Ascribe more correct typesAleksey Kladov2020-05-091-9/+10
|/
* unindent -> dedentAleksey Kladov2020-05-093-3/+3
|
* More fluent indent APIAleksey Kladov2020-05-097-34/+45
|
* Fix visibilityAleksey Kladov2020-05-091-1/+1
|
* Merge #4175bors[bot]2020-05-095-99/+300
|\ | | | | | | | | | | | | | | | | | | | | | | 4175: Introduce HirDisplay method for rendering source code & use it in add_function assist r=flodiebold a=TimoFreiberg Next feature for #3639. So far the only change in the new `HirDisplay` method is that paths are qualified, but more changes will be necessary (omitting the function name from function types, returning an error instead of printing `"{unknown}"`, probably more). Is that approach okay? Co-authored-by: Timo Freiberg <[email protected]>
| * Use new HirDisplay variant in add_function assistTimo Freiberg2020-05-081-58/+116
| |
| * New HirDisplay method for displaying sourcecodeTimo Freiberg2020-05-084-41/+184
| |
* | Simpify project discoveryveetaha2020-05-091-36/+15
| |
* | Simplifyveetaha2020-05-091-11/+9
| |
* | 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
| | | | |