aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | | req -> lsp_extAleksey Kladov2020-05-107-53/+58
| | | | | | |
| * | | | | | Don't re-export lsp_typesAleksey Kladov2020-05-103-119/+119
| | | | | | |
| * | | | | | Better fn signatureAleksey Kladov2020-05-101-4/+8
| | | | | | |
| * | | | | | to_proto::semantic_tokensAleksey Kladov2020-05-102-34/+33
| | | | | | |
| * | | | | | Simplify proto conversionAleksey Kladov2020-05-108-939/+807
| | |/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | Trait based infra in conv.rs is significantly more complicated than what we actually need here.
* / | | | | 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]>