aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
* internal: move diagnostics to hirAleksey Kladov2021-05-2524-676/+693
| | | | | | | | | | | | | | | | | | | | | | | The idea here is to eventually get rid of `dyn Diagnostic` and `DiagnosticSink` infrastructure altogether, and just have a `enum hir::Diagnostic` instead. The problem with `dyn Diagnostic` is that it is defined in the lowest level of the stack (hir_expand), but is used by the highest level (ide). As a first step, we free hir_expand and hir_def from `dyn Diagnostic` and kick the can up to `hir_ty`, as an intermediate state. The plan is then to move DiagnosticSink similarly to the hir crate, and, as final third step, remove its usage from the ide. One currently unsolved problem is testing. You can notice that the test which checks precise diagnostic ranges, unresolved_import_in_use_tree, was moved to the ide layer. Logically, only IDE should have the infra to render a specific range. At the same time, the range is determined with the data produced in hir_def and hir crates, so this layering is rather unfortunate. Working on hir_def shouldn't require compiling `ide` for testing.
* Merge #8986bors[bot]2021-05-251-0/+32
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8986: Add go to type definition for struct fields within struct r=matklad a=lf- Example: ```rust struct A; struct B { a/*<- cursor*/: A, } ``` Go to type definition used to not work on this position. It now goes to `A` as expected. Co-authored-by: Jade <[email protected]>
| * Add go to type definition for struct fields within structJade2021-05-251-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Example: ```rust struct A; struct B { a/*<- cursor*/: A, } ``` Go to type definition used to not work on this position. It now goes to `A` as expected.
* | Minor test fixes / new testsFlorian Diebold2021-05-251-15/+62
| |
* | Fix type mismatch caused by macrosFlorian Diebold2021-05-252-1/+45
|/ | | | | | MacroStmts should be completely transparent, but it prevented coercion. (I should maybe give `infer_expr` and `infer_expr_inner` better names.)
* Merge #8942bors[bot]2021-05-2510-62/+124
|\ | | | | | | | | | | | | | | | | | | | | | | | | 8942: Add `library` semantic token modifier to items from other crates r=arzg a=arzg Closes #5772. A lot of code here is pretty repetitive; please let me know if you have any ideas how to improve it, or whether it’s fine as-is. Side-note: How can I add tests for this? I don’t see a way for the test Rust code in `test_highlighting` to reference other crates to observe the new behaviour. Co-authored-by: Aramis Razzaghipour <[email protected]>
| * Refactor application of `library` semantic token modifierAramis Razzaghipour2021-05-251-62/+15
| |
| * Remove superfluous early-returnsAramis Razzaghipour2021-05-241-18/+22
| |
| * Rename ‘foreign’ semantic token modifier to ‘library’Aramis Razzaghipour2021-05-245-20/+20
| |
| * Add testing of foreign item highlightingAramis Razzaghipour2021-05-242-1/+55
| |
| * Highlight foreign modules as suchAramis Razzaghipour2021-05-241-1/+9
| |
| * Remove hir krate methodsAramis Razzaghipour2021-05-244-59/+11
| |
| * Add highlighting of items from other cratesAramis Razzaghipour2021-05-246-12/+103
| |
* | Merge #8979bors[bot]2021-05-241-5/+9
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8979: minor: update `CrateGraph` comment r=jonas-schievink a=jonas-schievink `cfg` flags are now implemented, and crates *may* have names, it doesn't doesn't matter for name resolution bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | Update `CrateGraph` commentJonas Schievink2021-05-241-5/+9
| | | | | | | | | | | | | | | `cfg` flags are now implemented, and crates *may* have names, it doesn't doesn't matter for name resolution
* | | internal: intern `AttrInput`Jonas Schievink2021-05-243-13/+14
|/ /
* | Merge #8975bors[bot]2021-05-243-62/+111
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 8975: Use todo!() as placeholder body for generated match arms r=matklad a=jDomantas `todo!()` seems to be a better fit for this than `{}`. Seeing that this assist predates stabilization of `todo` my guess is that simply no one bothered to change it yet. Also fixed the issue where if the last arm was not block-like, rust-analyzer would not add a comma after it and would generate invalid code. Co-authored-by: Domantas Jadenkus <[email protected]>
| * | add test that it does not create extraneous commasDomantas Jadenkus2021-05-241-0/+20
| | |
| * | tidyDomantas Jadenkus2021-05-241-2/+2
| | |
| * | generate match arms with todo!() as placeholder bodyDomantas Jadenkus2021-05-242-60/+89
| | |
* | | Merge #8977bors[bot]2021-05-247-90/+101
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8977: internal: minor `TokenMap` cleanups r=jonas-schievink a=jonas-schievink bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | | FixupJonas Schievink2021-05-242-4/+8
| | | |
| * | | Make `TokenTextRange` privateJonas Schievink2021-05-245-11/+10
| | | |
| * | | Move `TokenMap` to its own fileJonas Schievink2021-05-243-81/+89
| | | |
* | | | internal: rename hypothetical -> speculativeAleksey Kladov2021-05-245-25/+25
| | | | | | | | | | | | | | | | | | | | Lets steal this good naming from Roslyn before I forget about it yet again.
* | | | Merge #8970bors[bot]2021-05-241-15/+21
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8970: fix: duplicate dependencies that have multiple DepKinds r=jonas-schievink a=jonas-schievink Cargo collapses identical dependencies that are listed under `[dependencies]` and `[build-dependencies]` into a single `NodeDep`. We have to undo that by duplicating the dependency for each of its listed `DepKind`s. Not doing that would incorrectly treat a dependency as `DepKind::Normal`, even though it is *also* meant to be a `DepKind::Build`. Fixes https://github.com/rust-analyzer/rust-analyzer/pull/8812#issuecomment-847125395 bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | | Duplicate dependencies that have multiple DepKindsJonas Schievink2021-05-241-15/+21
| |/ /
* | | Merge #8963bors[bot]2021-05-2418-12/+68
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | 8963: Bump deps r=matklad a=lnicola Co-authored-by: Laurențiu Nicola <[email protected]>
| * | Update test fixturesLaurențiu Nicola2021-05-2411-1/+57
| | |
| * | Bump rustc_lexerLaurențiu Nicola2021-05-241-1/+1
| | |
| * | Disable `unaliged` feature of `object`Laurențiu Nicola2021-05-241-1/+1
| | |
| * | Bump objectLaurențiu Nicola2021-05-243-3/+3
| | |
| * | Bump misc depsLaurențiu Nicola2021-05-242-4/+4
| | |
| * | Bump chalkLaurențiu Nicola2021-05-241-3/+3
| | |
* | | Intern `GenericArgs`Jonas Schievink2021-05-244-11/+10
| | | | | | | | | | | | This shaves off another ~4 mb or so
* | | internal: intern `TypeBound`sJonas Schievink2021-05-2412-27/+49
|/ / | | | | | | | | Doesn't save much memory (~2 mb), but interning things is generally a good pattern to follow
* | Merge #8955bors[bot]2021-05-248-20/+141
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8955: feature: Support standalone Rust files r=matklad a=SomeoneToIgnore ![standalone](https://user-images.githubusercontent.com/2690773/119277037-0b579380-bc26-11eb-8d77-20d46ab4916a.gif) Closes https://github.com/rust-analyzer/rust-analyzer/issues/6388 Caveats: * I've decided to support multiple detached files in the code (anticipating the scratch files), but I found no way to open multiple files in VSCode at once: running `code *.rs` makes the plugin to register in the `vscode.workspace.textDocuments` only the first file, while code actually displays all files later. Apparently what happens is the same as when you have VSCode open at some workplace already and then run `code some_other_file.rs`: it gets opened in the same workspace of the same VSCode with no server to support it. If there's a way to override it, I'd appreciate the pointer. * No way to toggle inlay hints, since the setting is updated for the workspace (which does not exist for a single file opened) > [2021-05-24 00:22:49.100] [exthost] [error] Error: Unable to write to Workspace Settings because no workspace is opened. Please open a workspace first and try again. * No runners/lens to run or check the code are implemented for this mode. In theory, we can detect `rustc`, run it on a file and run the resulting binary, but not sure if worth doing it at this stage. Otherwise imports, hints, completion and other features work. Co-authored-by: Kirill Bulatov <[email protected]>
| * | Add a FIXMEKirill Bulatov2021-05-241-0/+9
| | |
| * | Small file error display fixKirill Bulatov2021-05-241-1/+1
| | | | | | | | | Co-authored-by: Aleksey Kladov <[email protected]>
| * | Don't discover workspaces when detached files are givenKirill Bulatov2021-05-231-3/+2
| | |
| * | Deal with todosKirill Bulatov2021-05-231-4/+14
| | |
| * | Do not add cargo target for detached files only projectKirill Bulatov2021-05-231-13/+22
| | |
| * | Drag detached files towards loadingKirill Bulatov2021-05-236-11/+83
| | |
| * | Draft detached files retrievalKirill Bulatov2021-05-236-3/+25
| | |
* | | Merge #8945bors[bot]2021-05-2314-69/+175
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8945: fix: Make expected type work in more situations r=flodiebold a=flodiebold Also makes call info show the correct types for generic methods. ![2021-05-23-182952_1134x616_scrot](https://user-images.githubusercontent.com/906069/119269023-dd5a5b00-bbf5-11eb-993a-b6e122c3b9a6.png) ![2021-05-23-183117_922x696_scrot](https://user-images.githubusercontent.com/906069/119269025-dfbcb500-bbf5-11eb-983c-fc415b8428e0.png) Co-authored-by: Florian Diebold <[email protected]>
| * | | Get rid of field_type againFlorian Diebold2021-05-236-24/+16
| | | |
| * | | Infer correct expected type in closureFlorian Diebold2021-05-231-1/+8
| | | | | | | | | | | | | | | | Sadly currently only works if the closure body isn't completely missing.
| * | | Infer correct expected type for generic struct fieldsFlorian Diebold2021-05-234-19/+46
| | | |
| * | | Record method call substs and use them in call infoFlorian Diebold2021-05-239-45/+125
| | | |
* | | | Merge #8953bors[bot]2021-05-232-9/+108
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8953: feat: generate getter avoids generating types like `&Vec<T>` r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>