| Age | Commit message (Collapse) | Author | Lines |
|
I'm fairly sure this is more correct, and saves space(~90mb to 82mb
for Zed's index). I'm checking in about this with SCIP folks in
https://github.com/sourcegraph/scip/pull/299.
|
|
Before this change `SymbolInformation` provided by a document was the
info for all encountered symbols that have not yet been emitted. So,
the symbol information on a `Document` was a mishmash of symbols
defined in the documents, symbols from other documents, and external
symbols.
After this change, the `SymbolInformation` on documents is just the
locals and defined symbols from the document. All symbols referenced
and not from emitted documents are included in `external_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
27e2eea54fbd1edeefa2b47ddd4f552a04b86582, 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 73d9c77f2aeed394cf131dce55807be2d3f54064 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
|
|
|
|
feat: Unify handling of path diagnostics in hir-ty
|
|
Cleanup target fetching for cargo metadata
|
|
Because it was a mess.
Previously, pretty much you had to handle all path diagnostics manually: remember to check for them and handle them. Now, we wrap the resolver in `TyLoweringContext` and ensure proper error reporting.
This means that you don't have to worry about them: most of the things are handled automatically, and things that cannot will create a compile-time error (forcing you top `drop(ty_lowering_context);`) if forgotten, instead of silently dropping the diagnostics.
The real place for error reporting is in the hir-def resolver, because there are other things resolving, both in hir-ty and in hir-def, and they all need to ensure proper diagnostics. But this is a good start, and future compatible.
This commit also ensures proper path diagnostics for value/pattern paths, which is why it's marked "feat".
|
|
|
|
feat: Show substitution where hovering over generic things
|
|
internal: Standardize how we take iterator parameters in `SyntaxFactory`
|
|
Back out "internal: Disable rustc test metrics"
|
|
|
|
minor: Break out of waiting for debugger on Windows using native debugger check API.
|
|
check API.
For Windows, this removes the need to add a breakpoint and modify a value to exit the debugger wait loop.
As a ridealong, this adds a 100ms sleep for all platforms such that waiting for the debugger doesn't hog the CPU thread.
|
|
Subtree update of `rust-analyzer`
r? `@ghost`
|
|
|
|
r=wesleywiser"
This reverts commit 1d35638dc38dbfbf1cc2a9823135dfcf3c650169, reversing
changes made to f23a80a4c2fbca593b64e70f5970368824b4c5e9.
|
|
an expression
|
|
fix: Fix flycheck workspace when requested but package was found
|
|
|
|
|
|
fix: Properly check if workspace flychecking is allowed
|
|
fix: Fix empty check diagnostics not marking files as changed
|
|
|
|
fix: Don't trigger paren wrapping typing handler after idents
|
|
|
|
|
|
fix: Set `result_id` for `RelatedFullDocumentDiagnosticReport` everywhere
|
|
|
|
|
|
|
|
toolchains"
|
|
|
|
To keep them organized.
|
|
Clear flycheck diagnostics more granularly
|
|
|
|
|
|
|
|
|
|
fix: Fix a case where completion was unable to expand a macro
|
|
Which caused the macros of the popular `tracing` crate to not offer completions.
The reason is rather complicated: it boils down to macro ignoring their input and completion always choosing the first expansion.
|
|
internal: Split `serde` derive feature into `serde_derive` usage
|
|
minor: Use a record struct instead of a tuple for each namespace in `PerNs`
|
|
Ideally we'd not have any dependency pull in the derive feature for faster build times, once that is the case this change would have an actual effect.
See https://github.com/matklad/macro-dep-test/blob/master/README.md for context.
|
|
There are few things to note in the implementation:
First, this is a best-effort implementation. Mainly, type aliases may not be shown (due to their eager nature it's harder) and partial pathes (aka. hovering over `Struct` in `Struct::method`) are not supported at all.
Second, we only need to show substitutions in expression and pattern position, because in type position all generic arguments always have to be written explicitly.
|
|
fix: Reduce applicability of unnecessary_async assist
|
|
|
|
internal: Set `result_id` for pull diagnostics
|
|
|
|
Fix AsmOption rule in rust.ungram
|