rust-analyzer/crates/ide-db/src
Michael Sloan 17c90f71bf Improve SCIP symbols
In particular, the symbol generation before this change creates a lot
of symbols with the same name for different definitions. This change
makes progress on symbol uniqueness, but does not fix a couple cases
where it was unclear to me how to fix (see TODOs in `scip.rs`)

Behavior changes:

* `scip` command now reports symbol information omitted due to symbol
collisions. Iterating with this on a large codebase (Zed!) resulted in
the other improvements in this change.

* Generally fixes providing the path to nested definitions in
symbols. Instead of having special cases for a couple limited cases of
nesting, implements `Definition::enclosing_definition` and uses this
to walk definitions.

* Parameter variables are now treated like locals.

    - This fixes a bug where closure captures also received symbols
    scoped to the containing function.  To bring back parameter
    symbols I would want a way to filter these out, since they can
    cause symbol collisions.

    - Having symbols for them seems to be intentional in
    27e2eea54f, but no particular use is
    specified there. For the typical indexing purposes of SCIP I don't see
    why parameter symbols are useful or sensible, as function parameters
    are not referencable by anything but position. I can imagine they
    might be useful in representing diagnostics or something.

* Inherent impls are now represented as `impl#[SelfType]` - a type
named `impl` which takes a single type parameter.

* Trait impls are now represented as `impl#[SelfType][TraitType]` - a
type named `impl` which takes two type parameters.

* Associated types in traits and impls are now treated like types
instead of type parameters, and so are now suffixed with `#` instead
of wrapped with `[]`.  Treating them as type parameters seems to have
been intentional in 73d9c77f2a but it
doesn't make sense to me, so changing it.

* Static variables are now treated as terms instead of `Meta`, and so
receive `.` suffix instead of `:`.

* Attributes are now treated as `Meta` instead of `Macro`, and so
receive `:` suffix instead of `!`.

* `enclosing_symbol` is now provided for labels and generic params,
which are local symbols.

* Fixes a bug where presence of `'` causes a descriptor name to get
double wrapped in backticks, since both `fn new_descriptor` and
`scip::symbol::format_symbol` have logic for wrapping in
backticks. Solution is to simply delete the redundant logic.

* Deletes a couple tests in moniker.rs because the cases are
adequeately covered in scip.rs and the format for identifiers used in
moniker.rs is clunky with the new representation for trait impls
2024-12-25 21:51:58 -07:00
..
generated Properly handle different defaults for severity of lints 2024-12-11 20:48:41 +02:00
imports fix: Fix path qualified auto-importing completions not working with re-exports 2024-12-16 13:20:55 +01:00
prime_caches internal: Remove load-cargo dependency on ide 2024-02-28 16:59:04 +01:00
syntax_helpers feat: improve name generation in destructure_tuple_binding 2024-12-13 23:34:03 +08:00
test_data Update test fixtures 2024-07-18 09:09:31 +02:00
active_parameter.rs Enum variants are not generic def ids 2024-06-24 10:07:31 +02:00
apply_change.rs Fix memory usage calculation's queries list 2024-10-25 06:15:06 +03:00
assists.rs Rename rust-analyzer commands 2024-07-20 01:11:14 -07:00
defs.rs Improve SCIP symbols 2024-12-25 21:51:58 -07:00
documentation.rs Move text-edit into ide-db 2024-10-28 14:37:41 +01:00
famous_defs.rs Move explicit range handling out of goto_definition, use OperatorClass instead 2024-10-21 20:07:07 -04:00
helpers.rs Fully remove old macro descension API 2024-08-22 16:18:01 +02:00
items_locator.rs fix: Fix path qualified auto-importing completions not working with re-exports 2024-12-16 13:20:55 +01:00
label.rs fix: Fix impl Trait<Self> causing stackoverflows 2024-04-15 15:41:20 +02:00
lib.rs Properly handle different defaults for severity of lints 2024-12-11 20:48:41 +02:00
path_transform.rs Bump typos 2024-12-13 11:45:44 +02:00
prime_caches.rs chore: rename salsa to ra_salsa 2024-10-14 10:09:22 -04:00
rename.rs Move text-edit into ide-db 2024-10-28 14:37:41 +01:00
rust_doc.rs Simplify 2024-06-30 14:00:55 +02:00
search.rs Show substitution where hovering over generic things 2024-12-20 11:30:19 +02:00
source_change.rs Move text-edit into ide-db 2024-10-28 14:37:41 +01:00
symbol_index.rs chore: rename salsa to ra_salsa 2024-10-14 10:09:22 -04:00
text_edit.rs Move text-edit into ide-db 2024-10-28 14:37:41 +01:00
traits.rs Properly account for editions in names 2024-08-16 16:46:24 +03:00
ty_filter.rs Properly account for editions in names 2024-08-16 16:46:24 +03:00
use_trivial_constructor.rs Properly account for editions in names 2024-08-16 16:46:24 +03:00