aboutsummaryrefslogtreecommitdiff
path: root/crates/ide/src/references.rs
Commit message (Collapse)AuthorAgeFilesLines
* Merge #7656bors[bot]2021-02-141-100/+170
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | 7656: Implement constructor usage search for almost all items r=matklad a=Veykril This PR moves the filering for enum constructors to the HIR, with this unprefixed variants as well as when the enum has been renamed via use will then still show up properly. We now walk the ast of the `NameRef` up until we find a `PathExpr`(which also handles `CallExpr` for tuple-type structs and variants already) or a `RecordExpr`. For enum search we then take the `path` out of that expression and do a resolution on it to compare it with the definition enum. With this PR we now support searching for all constructor literals, Unit-, Tuple- and Record-Structs, Unit-, Tuple- and Record-Variants as well as Unions. There is one shortcoming due to how the search is triggered. Unit Variants constructors can't be searched as we have no position for it to kick off the search(since a comma doesn't have to exist for the last variant). Closes #2549 though it doesn't implement it as outlined in the issue since the reference kind was removed recently, though I believe the approach taken here is better personally. Co-authored-by: Lukas Wirth <[email protected]>
| * Only use HIR when searching for enum constructors, otherwise fall back to ASTLukas Wirth2021-02-131-48/+34
| |
| * Implement constructor usage search for almost all itemsLukas Wirth2021-02-121-105/+189
| | | | | | | | | | | | | | For all struct kinds, unions and enums, as well as for record- and tuple-variants but not for unit-variants, as these have no trailing character we can anchor the search to. Functionality wise it is implemented though.
* | Don't classify attribute macros as their path unless it's a function with ↵Lukas Wirth2021-02-131-0/+35
|/ | | | the proc_macro_attribute attribute
* Update references test outputLukas Wirth2021-02-121-2/+2
|
* Use NameLike in FileReference directly as its not exported from ide anymoreLukas Wirth2021-02-121-6/+2
|
* Refactor reference searching to work with the astLukas Wirth2021-02-121-172/+185
|
* Remove unused ReferenceSearchResult functionsLukas Wirth2021-02-121-24/+5
|
* Resolve TupleStructPat in SourceAnalyzer::resolve_pathLukas Wirth2021-02-101-0/+23
|
* Shorten hir::TypeParam full_range in NavigationTargetLukas Wirth2021-01-261-0/+16
|
* Remove obsolete RangeInfo usage in referencesLukas Wirth2021-01-181-34/+18
|
* Add test for reference search on self declaration paramLukas Wirth2021-01-181-0/+20
|
* Handle self/super/crate in PathSegment as NameRefLukas Wirth2021-01-151-96/+23
|
* Rename FileReferences -> UsageSearchResultLukas Wirth2021-01-121-5/+5
|
* Ensure uniqueness of file ids in reference search via hashmapLukas Wirth2021-01-121-49/+48
|
* Group references by FileIdLukas Wirth2021-01-121-46/+52
|
* Merge #7218bors[bot]2021-01-101-1/+1
|\ | | | | | | | | | | | | | | 7218: Fix typos r=Veykril a=regexident Apart from the very last commit on this PR (which fixes a public type's name) all changes are non-breaking. Co-authored-by: Vincent Esche <[email protected]>
| * Fixed typos in code commentsVincent Esche2021-01-091-1/+1
| |
* | Replace SyntaxKind usage with T! macro where applicableLukas Wirth2021-01-101-5/+4
| |
* | Use hir::GenericParam in ide_db::Definition instead of relisting all 3Lukas Wirth2021-01-101-1/+4
|/
* Change <|> to $0 - RebaseKevaundray Wedderburn2021-01-071-37/+37
|
* Add ConstParams to the ide layerLukas Wirth2021-01-011-0/+16
|
* Support labels in reference searchLukas Wirth2020-12-241-1/+23
|
* Acquire original text range when searching for referencesLukas Wirth2020-12-211-6/+42
|
* Deduplicate highlight tags and symbol kindsAleksey Kladov2020-12-181-2/+2
| | | | | | | Curiously, LSP uses different enums for those, and unsurprising and annoyingly, there are things which exist in one but not in the other. Let's not repeat the mistake and unify the two things
* NavTarget doesn't assume that it points to a symbolAleksey Kladov2020-12-181-1/+1
|
* Don't expose SyntaxKind from IDE APIAleksey Kladov2020-12-181-36/+36
| | | | | | SyntaxKind is somewhat of an internal type, but IDE is using it to basically specify an icon. Let's have a dedicated entity for this instead.
* Lifetime reference searchLukas Wirth2020-12-161-5/+86
|
* Move to upstream `macro_rules!` modelJonas Schievink2020-12-151-1/+1
|
* Add find usages for enum constructorsDaiki Ihara2020-12-141-0/+115
|
* Support self in reference searchLukas Wirth2020-11-291-1/+102
|
* Use shorthand field syntax in destructuresLukas Wirth2020-11-141-2/+2
|
* Properly handle shorthands in destructure patterns when renamingLukas Wirth2020-11-141-6/+15
|
* Remove more unreachable pubsAleksey Kladov2020-11-021-6/+2
|
* Re-export base_db from ide_dbIgor Aleksanov2020-10-241-1/+1
|
* Clarify the names one more timeAleksey Kladov2020-10-151-2/+2
|
* More idiomatic classification APIAleksey Kladov2020-10-151-3/+3
|
* More clarificationsAleksey Kladov2020-10-151-1/+1
|
* Clarify NameClass names a bitAleksey Kladov2020-10-151-1/+1
|
* Add fix for incorrect case diagnosticIgor Aleksanov2020-10-121-1/+1
|
* Show reason for failed rename refactoringRüdiger Herrmann2020-10-101-0/+1
| | | | | | | | | | | Return an error with a meaningful message for requests to `textDocument/rename` if the operation cannot be performed. Pass errors raised by rename handling code to the LSP runtime. As a consequence, the VS Code client shows and logs the request as if a server-side programming error occured. Resolves https://github.com/rust-analyzer/rust-analyzer/issues/3981
* adt: correctly inherit field visibility from enumJonas Schievink2020-10-091-0/+24
| | | | | | | Previously, "find all references" on a variant field wouldn't find any references outside the defining module. This is because variant fields were incorrectly assumed to be private, like struct fields without explicit visibility, but they actually inherit the enum's visibility.
* Treat `ast::Name` in field patterns as useJonas Schievink2020-10-091-0/+46
|
* Fix source_to_def for named enum variant fieldsJonas Schievink2020-10-091-0/+17
|
* rename mock_analysis -> fixtureAleksey Kladov2020-10-021-2/+2
|
* Get rid of MockAnalysisAleksey Kladov2020-10-021-60/+58
|
* Expectify find_references testsAleksey Kladov2020-10-021-176/+181
|
* Future proof find-usages APIAleksey Kladov2020-08-191-1/+3
| | | | | | We might want to provide more efficient impls for check if usages exist, limiting the search, filtering and cancellation, so let's violate YAGNI a bit here.
* Rename ra_ide -> ideAleksey Kladov2020-08-131-0/+694