aboutsummaryrefslogtreecommitdiff
path: root/crates/hir/src
Commit message (Collapse)AuthorAgeFilesLines
* internal: refactor unresolved macro call diagnosticAleksey Kladov2021-06-132-38/+19
|
* internal: refactor unresolved import diagnosticAleksey Kladov2021-06-132-26/+6
|
* internal: refactor unresolved extern crate diagnosticAleksey Kladov2021-06-132-25/+8
|
* internal: unified missing fields diagnosticAleksey Kladov2021-06-132-107/+62
|
* internal: move missing_fields diagnosticsAleksey Kladov2021-06-132-56/+20
|
* internal: start new diagnostics APIAleksey Kladov2021-06-132-34/+37
| | | | | | | | | | | | | | | | | | At the moment, this moves only a single diagnostic, but the idea is reafactor the rest to use the same pattern. We are going to have a single file per diagnostic. This file will define diagnostics code, rendering range and fixes, if any. It'll also have all of the tests. This is similar to how we deal with assists. After we refactor all diagnostics to follow this pattern, we'll probably move them to a new `ide_diagnostics` crate. Not that we intentionally want to test all diagnostics on this layer, despite the fact that they are generally emitted in the guts on the compiler. Diagnostics care to much about the end presentation details/fixes to be worth-while "unit" testing. So, we'll unit-test only the primary output of compilation process (types and name res tables), and will use integrated UI tests for diagnostics.
* clippy::clone_on_copyMaan20032021-06-131-1/+1
|
* clippy::redudant_borrowMaan20032021-06-133-9/+9
|
* internal: move diagnostics infra to hirAleksey Kladov2021-06-123-17/+159
|
* Move some hir_ty diagnostics to hirAleksey Kladov2021-06-122-17/+421
|
* minor: optimizeAleksey Kladov2021-06-121-3/+4
| | | | | We shouldn't be looking at the source map unless we actually have diagnostics.
* internal: move missing unsafe diagnostic to hirAleksey Kladov2021-06-122-4/+40
|
* internal: move inference diagnostics to hirAleksey Kladov2021-06-122-4/+72
|
* Merge #9218bors[bot]2021-06-111-0/+14
|\ | | | | | | | | | | | | | | 9218: Item search now respects trait impl items r=Veykril a=Veykril Fixes #2977 Co-authored-by: Lukas Wirth <[email protected]>
| * Item search now respects trait impl itemsLukas Wirth2021-06-111-0/+14
| |
* | Add more profiling for flyimportsKirill Bulatov2021-06-101-0/+4
|/
* Implement dummy expansions for builtin attributesLukas Wirth2021-06-091-0/+1
|
* Merge #9191bors[bot]2021-06-091-2/+10
|\ | | | | | | | | | | | | | | 9191: fix: Don't descend MacroCall TokenTree delimiters r=jonas-schievink a=Veykril Fixes #9190 Co-authored-by: Lukas Wirth <[email protected]>
| * Don't descend MacroCall TokenTree delimitersLukas Wirth2021-06-091-2/+10
| |
| |
| \
*-. \ Merge #9181 #9182bors[bot]2021-06-082-1/+21
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9181: Don't complete values in type position r=jonas-schievink a=Veykril Will add some proper tests in a bit 9182: fix: don't complete derive macros as fn-like macros r=jonas-schievink a=jonas-schievink Part of https://github.com/rust-analyzer/rust-analyzer/issues/8518 bors r+ Co-authored-by: Lukas Wirth <[email protected]> Co-authored-by: Jonas Schievink <[email protected]>
| | * | fix: don't complete derive macros as fn-like macrosJonas Schievink2021-06-081-0/+7
| | |/
| * / Don't complete values in type positionLukas Wirth2021-06-082-1/+14
| |/
* / source_to_def: skip items with no defJonas Schievink2021-06-081-50/+56
|/
* Merge #9169bors[bot]2021-06-072-20/+87
|\ | | | | | | | | | | | | | | | | | | 9169: internal: steps towards attribute macro token mapping r=jonas-schievink a=jonas-schievink This doesn't work yet, but we seem to be getting a bit further along (for example, we now stop highlighting `use` items inside item with attribute macros as if they were written verbatim). bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * Attempt to track attr macros during highlightingJonas Schievink2021-06-071-0/+10
| |
| * Make "expand macro" command work with attribute macrosJonas Schievink2021-06-071-0/+16
| |
| * Handle attribute macros in `descend_into_macros`Jonas Schievink2021-06-062-20/+61
| |
* | feat: goto definition on an impl fn goes to that fn in the traitJade2021-06-071-4/+5
|/ | | | | | | e.g. if you have a trait T and `impl T for S` for some struct, if you goto definition on some function name inside the impl, it will go to the definition of that function inside the `trait T` block, rather than the current behaviour of not going anywhere at all.
* Expand procedural attribute macrosJonas Schievink2021-06-031-1/+15
|
* Merge #8866bors[bot]2021-05-311-1/+1
|\ | | | | | | | | | | | | | | 8866: Update salsa r=matklad a=jonas-schievink This updates salsa to include https://github.com/salsa-rs/salsa/pull/265, and removes all cancellation-related code from rust-analyzer Co-authored-by: Jonas Schievink <[email protected]>
| * Update salsaJonas Schievink2021-05-271-1/+1
| |
* | Diagnose unimplemented built-in macrosJonas Schievink2021-05-302-2/+34
| |
* | Thread proc-macro types through the HIRJonas Schievink2021-05-291-5/+13
| |
* | Don't store supertraits in ItemTreeLaurențiu Nicola2021-05-271-4/+0
|/
* Merge #8997bors[bot]2021-05-271-20/+6
|\ | | | | | | | | | | | | | | | | | | | | | | 8997: internal: stop expanding UseTrees during ItemTree lowering r=jonas-schievink a=jonas-schievink Closes https://github.com/rust-analyzer/rust-analyzer/issues/8908 Messy diff, but `ItemTree` lowering got simpler, since we now have a strict 1-to-1 mapping between `ast::Item` and `ModItem`. The most messy part is mapping a single `UseTree` back to its `ast::UseTree` counterpart for diagnostics, but I think the ad-hoc source map built during lowering does the job. Co-authored-by: Jonas Schievink <[email protected]>
| * Stop expanding UseTrees during ItemTree loweringJonas Schievink2021-05-261-20/+6
| |
* | simplifyLukas Wirth2021-05-261-1/+5
|/
* internal: move diagnostics to hirAleksey Kladov2021-05-252-13/+395
| | | | | | | | | | | | | | | | | | | | | | | 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 #8942bors[bot]2021-05-251-32/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | 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]>
| * Remove hir krate methodsAramis Razzaghipour2021-05-241-48/+0
| |
| * Add highlighting of items from other cratesAramis Razzaghipour2021-05-241-0/+17
| |
* | internal: rename hypothetical -> speculativeAleksey Kladov2021-05-241-5/+5
| | | | | | | | | | Lets steal this good naming from Roslyn before I forget about it yet again.
* | internal: intern `TypeBound`sJonas Schievink2021-05-241-1/+1
| | | | | | | | | | Doesn't save much memory (~2 mb), but interning things is generally a good pattern to follow
* | Merge #8945bors[bot]2021-05-233-14/+17
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-233-18/+11
| | |
| * | Infer correct expected type for generic struct fieldsFlorian Diebold2021-05-231-3/+15
| | |
| * | Record method call substs and use them in call infoFlorian Diebold2021-05-232-7/+5
| |/
* / Correctly resolve crate name in use paths when import shadows itselfLukas Tobias Wirth2021-05-231-1/+10
|/
* Give ‘unsafe’ semantic token modifier to unsafe traitsAramis Razzaghipour2021-05-231-0/+4
|
* Paper over #8931 a bit moreFlorian Diebold2021-05-231-2/+3
| | | | | | | | | The problem was the skipping of binders in `resolve_method_call_as_callable`; this still doesn't use the _correct_ substitution, but at least it doesn't return a type with free variables in it. Fixes #8931.