Commit graph

21382 commits

Author SHA1 Message Date
Lukas Wirth
5ce14b0439 Enforce a current directory being set for spawned commands 2024-12-29 12:51:13 +01:00
Lukas Wirth
0f95e60da3 Cleanup toolchain info fetching 2024-12-29 12:25:51 +01:00
Lukas Wirth
885b6c697c
Merge pull request #18784 from Veykril/push-pqtwsvquxoty
fix: Do not merge spans if they have different anchors
2024-12-29 10:44:04 +00:00
Lukas Wirth
49b509310c fix: Do not merge spans if they have different anchors 2024-12-29 11:29:32 +01:00
Lukas Wirth
2d299ab8a4 Describe variance resolution approach differences to rustc 2024-12-29 10:53:17 +01:00
Chayim Refael Friedman
664e1a18c9 Consider Enum::Variant even when it comes from a different crate 2024-12-28 22:43:51 +02:00
Lukas Wirth
bb921fbe94 Show variance of parameters on hover 2024-12-28 20:31:20 +01:00
Lukas Wirth
60e28c6bd9 Simplify 2024-12-28 19:54:22 +01:00
Lukas Wirth
9419e199d8 Get rid of constrain and solve steps 2024-12-28 19:54:22 +01:00
Lukas Wirth
85119b528a Remove unnecessary VarianceTerm 2024-12-28 19:54:22 +01:00
Lukas Wirth
eee2761140 Implement parameter variance inference 2024-12-28 19:54:22 +01:00
Lukas Wirth
dc6cea57a2
Merge pull request #18778 from Veykril/push-oontvoqmxkno
fix: Fix flycheck diagnostics flickering for binary targets
2024-12-28 17:31:11 +00:00
Lukas Wirth
17b3662755 Add DynTyExt::principal_id 2024-12-28 18:26:45 +01:00
Lukas Wirth
c800485555 Downgrade salsa log levels 2024-12-28 18:23:24 +01:00
Lukas Wirth
cf307438bc fix: Fix flycheck diagnostics flickering for binary targets 2024-12-28 18:16:55 +01:00
Michael Sloan
34dc94bb2d Only include SCIP SymbolInformation for first inherent impl 2024-12-27 18:13:14 -07:00
Michael Sloan
3a93fe1150 Message updates from review 2024-12-27 18:12:55 -07:00
Michael Sloan
f8ea9cace8
Update crates/ide/src/moniker.rs
Co-authored-by: David Barsky <me@davidbarsky.com>
2024-12-27 15:58:32 -07:00
Michael Sloan
eb4543818d
Update crates/ide/src/moniker.rs
Co-authored-by: David Barsky <me@davidbarsky.com>
2024-12-27 15:58:26 -07:00
Erithax
c7f5021de1
fix doc typo 2024-12-27 23:13:09 +01:00
Lukas Wirth
a77cf8e189
Merge pull request #18744 from gbbosak/master
Treat ; as a terminator rather part of a glued expression
2024-12-27 09:57:02 +00:00
Lukas Wirth
1ce4de2585
Merge pull request #18762 from davidbarsky/davidbarsky/wrap-salsa-cancellation-error
internal: wrap `salsa::Cycle`
2024-12-26 15:42:53 +00:00
Lukas Wirth
7514a92018
Merge pull request #18761 from Veykril/push-vktnzltnxupr
internal: Swallow `error: config value is not set` cargo error
2024-12-26 15:28:24 +00:00
David Barsky
3ff2596c3f internal: wrap salsa::Cycle 2024-12-26 10:26:42 -05:00
Lukas Wirth
e820c4da90 internal: Swallow error: config value is not set cargo error 2024-12-26 16:13:39 +01:00
Lukas Wirth
ed8227c649 internal: Workaround salsa cycles leaking 2024-12-26 14:55:20 +01:00
roife
bba8d2dc02 move env vars for snapshot tests to UpdateTest 2024-12-26 20:19:26 +08:00
roife
1dcce45f48 optimize snapshot-testing macro detection and add tests 2024-12-26 19:51:14 +08:00
roife
c54bfcb181 fix incorrect name for UpdateTest config 2024-12-26 19:51:14 +08:00
roife
22280b65ff feat: add config UpdateTest to hover actions 2024-12-26 19:51:14 +08:00
roife
57cd0d5dbe feat: support UpdateTest in hover actions and runnables 2024-12-26 19:51:14 +08:00
roife
edb61b10ab feat: support UpdateTest in codelens 2024-12-26 19:50:32 +08:00
roife
dd788255b4 feat: Add TestDefs to find usage of Expect, Insta and Snapbox 2024-12-26 19:21:06 +08:00
Michael Sloan
d650daa7d3 Use empty SymbolInformation.signature_documentation.relative_path
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.
2024-12-26 03:46:00 -07:00
Michael Sloan
124c8318a4 Provide SCIP external_symbols + fix symbols provided with Document
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`.
2024-12-26 01:28:37 -07:00
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
roife
5a3d1a6d0d fix missing name enum when hovering on fields in variants 2024-12-25 07:28:26 +08:00
Lukas Wirth
493ac4d4df
Merge pull request #18743 from ChayimFriedman2/e0107
feat: Unify handling of path diagnostics in hir-ty
2024-12-24 17:13:07 +00:00
Lukas Wirth
79d9330560
Merge pull request #18754 from Veykril/push-zkkzxrsxnqnm
Cleanup target fetching for cargo metadata
2024-12-24 17:03:31 +00:00
Chayim Refael Friedman
cc11e1a796 Unify handling of path diagnostics in hir-ty
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".
2024-12-24 18:58:52 +02:00
Lukas Wirth
029261f9cc Cleanup target fetching for cargo metadata 2024-12-24 17:49:07 +01:00
Lukas Wirth
e30ce42671
Merge pull request #18707 from ChayimFriedman2/subst
feat: Show substitution where hovering over generic things
2024-12-24 14:16:16 +00:00
Lukas Wirth
633a10cb58
Merge pull request #18718 from Giga-Bowser/fix-syntaxfactory-intoiterator
internal: Standardize how we take iterator parameters in `SyntaxFactory`
2024-12-24 14:12:52 +00:00
Lukas Wirth
c67964884a
Merge pull request #18750 from Veykril/push-tyvtqpwrwvsr
Back out "internal: Disable rustc test metrics"
2024-12-24 09:52:37 +00:00
Lukas Wirth
9997374b0c Remove dangling outdated test module 2024-12-24 10:37:24 +01:00
Lukas Wirth
2c500e2939
Merge pull request #18749 from PrototypeNM1/windows-debugger-wait
minor: Break out of waiting for debugger on Windows using native debugger check API.
2024-12-24 08:40:56 +00:00
Nicholas Rishel
f8f7d37b8b minor: Break out of waiting for debugger on Windows using native debugger 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.
2024-12-23 14:33:26 -08:00
Laurențiu Nicola
a2a5b72c47 Merge from rust-lang/rust 2024-12-23 11:27:07 +02:00
Brian Bosak
5162a9ab1c Treat ; as a terminator rather than something that can be glued together in an expression 2024-12-22 16:44:01 -06:00
Lukas Wirth
fa4a40bbe8
Merge pull request #18742 from Veykril/push-yswvkzmsvqql
fix: Fix flycheck workspace when requested but package was found
2024-12-22 13:42:39 +00:00
Lukas Wirth
4a86434cf5 fix: Fix flycheck workspace when requested but package was found 2024-12-22 14:28:17 +01:00
Lukas Wirth
2e5998a9bf fix: Delay initial flycheck until after build scripts 2024-12-22 14:18:53 +01:00
Lukas Wirth
066284addd
Merge pull request #18738 from Veykril/push-vqxqutskzvvu
fix: Properly check if workspace flychecking is allowed
2024-12-22 12:11:00 +00:00
Lukas Wirth
d67b900edd
Merge pull request #18740 from Veykril/push-tntsvtmtlotw
fix: Fix empty check diagnostics not marking files as changed
2024-12-22 11:52:59 +00:00
Lukas Wirth
8da08e7100 fix: Fix empty check diagnostics not marking files as changed 2024-12-22 12:38:38 +01:00
Lukas Wirth
2f33e85f56
Merge pull request #18739 from Veykril/push-ntpvvqnnovtn
fix: Don't trigger paren wrapping typing handler after idents
2024-12-22 11:22:56 +00:00
Lukas Wirth
1962cae609 fix: Properly check if workspace flychecking is allowed 2024-12-22 12:10:48 +01:00
Lukas Wirth
a7f3265028 fix: Don't trigger paren wrapping typing handler after idents 2024-12-22 12:08:27 +01:00
Lukas Wirth
31938dbfdc
Merge pull request #18735 from Veykril/push-rpuxqrzrzvsw
fix: Set `result_id` for `RelatedFullDocumentDiagnosticReport` everywhere
2024-12-22 10:03:25 +00:00
Lukas Wirth
6b5615df46 fix: Set result_id for RelatedFullDocumentDiagnosticReport everywhere 2024-12-22 10:48:57 +01:00
roife
59e3d6684b fix: only show debug lens with a valid root 2024-12-21 07:03:45 +08:00
roife
693b110e3d fix: remove always! check for file_id in runnables 2024-12-21 07:00:49 +08:00
Lukas Wirth
c966876f85
Revert "internal: Drop proc-macro server support for ~1.66.0 and older toolchains" 2024-12-20 20:51:09 +01:00
Giga Bowser
2b6e7ce896 internal: Standardize how we take iterator parameters in SyntaxFactory 2024-12-20 12:06:27 -05:00
Chayim Refael Friedman
82896b2cc4 Move ty lowering diagnostic definitions into a separate module
To keep them organized.
2024-12-20 15:34:23 +02:00
Lukas Wirth
f4cafbb678
Merge pull request #18729 from Veykril/push-kyxtnozqzwkn
Clear flycheck diagnostics more granularly
2024-12-20 13:23:31 +00:00
Lukas Wirth
db8660410f Clear all check diagnostics when the workspace changes 2024-12-20 14:09:29 +01:00
Lukas Wirth
4a8eb8c229 Arc the package ids coming from flycheck 2024-12-20 14:09:29 +01:00
Lukas Wirth
7da17fe195 Arc the workspace root flycheck 2024-12-20 14:09:11 +01:00
Lukas Wirth
7aab6a5c12 Clear flycheck diagnostics more granularly 2024-12-20 14:09:11 +01:00
Lukas Wirth
15d2d509d0
Merge pull request #18723 from ChayimFriedman2/tracing-complete
fix: Fix a case where completion was unable to expand a macro
2024-12-20 12:33:25 +00:00
Chayim Refael Friedman
02d47f3a81 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.
2024-12-20 13:14:59 +02:00
Lukas Wirth
f3f8f4c6ad
Merge pull request #18728 from Veykril/push-ozqlrzmqklwt
internal: Split `serde` derive feature into `serde_derive` usage
2024-12-20 11:09:27 +00:00
Lukas Wirth
027daf1686
Merge pull request #18702 from ChayimFriedman2/prep
minor: Use a record struct instead of a tuple for each namespace in `PerNs`
2024-12-20 11:05:49 +00:00
Lukas Wirth
5211972743 internal: Split serde derive feature into serde_derive usage
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.
2024-12-20 11:55:02 +01:00
Chayim Refael Friedman
b5486ffc42 Show substitution where hovering over generic things
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.
2024-12-20 11:30:19 +02:00
Lukas Wirth
e0c11f631e
Merge pull request #18726 from Veykril/push-vyzotyqqtpqs
fix: Reduce applicability of unnecessary_async assist
2024-12-20 07:56:23 +00:00
Lukas Wirth
0be03285f9 fix: Reduce applicability of unnecessary_async assist 2024-12-20 08:41:46 +01:00
Lukas Wirth
fe027d79d2
Merge pull request #18717 from Veykril/push-pomxnvxotwlr
internal: Set `result_id` for pull diagnostics
2024-12-19 15:38:32 +00:00
Lukas Wirth
c1a2955b50 internal: Set result_id for pull diagnostics 2024-12-19 16:24:18 +01:00
Lukas Wirth
27fac08c82
Merge pull request #18715 from aibaars/ungram-asm-option
Fix AsmOption rule in rust.ungram
2024-12-18 14:22:05 +00:00
Lukas Wirth
e89d72056b fix: Consider both completion detail fields in to_proto 2024-12-18 15:00:09 +01:00
Arthur Baars
cb2829eaa7 Fix AsmOption rule in rust.ungram 2024-12-18 14:56:00 +01:00
Lukas Wirth
683150f4da fix: Do not ask the client ro resolve for non existing label details 2024-12-18 14:03:50 +01:00
Lukas Wirth
540ada516a internal: Cleanup label structure of CompletionItem 2024-12-18 13:37:21 +01:00
Lukas Wirth
c70b07b3c9
Merge pull request #18711 from Veykril/push-kwurwxttmqwo
Taking a raw ref of a deref is always safe
2024-12-18 10:47:07 +00:00
Lukas Wirth
dfa46292b6 Taking a raw ref of a deref is always safe 2024-12-18 11:32:29 +01:00
Ralf Jung
c858ce132f make no-variant types a dedicated Variants variant 2024-12-18 11:01:54 +01:00
Ralf Jung
d7d08ae95c Variants::Single: do not use invalid VariantIdx for uninhabited enums 2024-12-18 11:00:21 +01:00
Lukas Wirth
3d63140758 Remove salsa from proc-macro server dep tree 2024-12-18 10:24:26 +01:00
Lukas Wirth
2780dfd80c
Merge pull request #18708 from ChayimFriedman2/fix-tiny
fix: Fix pretty-printing of `@` patterns
2024-12-18 07:41:09 +00:00
Chayim Refael Friedman
8c8e738636 Fix pretty-printing of @ patterns
It didn't print the `@`.
2024-12-18 01:24:12 +02:00
ltdk
c180e41198 Stabilize #[coverage] attribute 2024-12-16 21:07:06 -05:00
Lukas Wirth
0a706f7d2a
Merge pull request #18700 from ChayimFriedman2/dyn-send
fix: Fix a panic with a diagnostics fix when a keyword is used as a field
2024-12-16 21:54:28 +00:00
Chayim Refael Friedman
79214583f6 Use a record struct instead of a tuple for each namespace in PerNs
The reason I did this is because I plan to add another field to this struct (indicating whether the item was cfg'ed out), but it seems worthy even separately and removes a bunch of one-letter variable names and tuple-indexing. It is also easy to separate from future changes, so it will be easier to review this way.
2024-12-16 22:39:50 +02:00
Chayim Refael Friedman
8277c0336e Fix a panic with a diagnostics fix when a keyword is used as a field
I found it easiest to fix in the quickfix code, and not deeper (e.g. body lowering).
2024-12-16 19:58:29 +02:00
Lukas Wirth
ada5f2059c fix: Fix path qualified auto-importing completions not working with re-exports
Prior to this commit we used to generate import paths, then zipped them with the existing qualifier to check if they agree on the path to import.
This is brittle when re-exports come into play causing items to have multiple applicable paths that refer to them.
This commit instead rewrites this logic by generating the import path for the qualifier, verifying that the rest of the qualifier resolves and then doing a final lookup on that resolution result for the final segment instead.
2024-12-16 13:20:55 +01:00
Lukas Wirth
65c8d1242b
Merge pull request #18698 from Veykril/push-vpqwrwxptsql
internal: Don't serialize empty fields in completions and resolve payloads
2024-12-16 10:39:19 +00:00
Lukas Wirth
61c222e1af
Merge pull request #18690 from Giga-Bowser/extract-variable-string
feat: Use string literal contents as a name when extracting into variable
2024-12-16 10:29:05 +00:00
Lukas Wirth
de7808bb71 internal: Don't serialize empty fields in completions and resolve payloads 2024-12-16 11:25:29 +01:00