Chayim Refael Friedman
cd7cbddaf6
When resolving labels in break
and continue
for the IDE, do not resolve them textually, instead reuse the results of HIR lowering
...
This fixes a bug where labels inside macros were not resolved, but more importantly this prepares us to a future where we have hygiene, and textual equivalence isn't enough to resolve identifiers.
2024-09-30 15:13:45 +03:00
Chayim Refael Friedman
432b2559cd
Fix name resolution when an import is resolved to some namespace and then later in the algorithm another namespace is added
...
The import is flagged as "indeterminate", and previously it was re-resolved, but only at the end of name resolution, when it's already too late for anything that depends on it.
This issue was tried to fix in https://github.com/rust-lang/rust-analyzer/pull/2466 , but it was not fixed fully.
2024-09-22 04:19:10 +03:00
Chayim Refael Friedman
1cd707e693
Fix name resolution of shadowed builtin macro
2024-08-28 23:20:46 +03:00
Lukas Wirth
354ab7a9e8
Rename macro descension functions
2024-08-22 16:24:01 +02:00
Lukas Wirth
64064907ce
Fully remove old macro descension API
2024-08-22 16:18:01 +02:00
Chayim Refael Friedman
9d3368f2c2
Properly account for editions in names
...
This PR touches a lot of parts. But the main changes are changing
`hir_expand::Name` to be raw edition-dependently and only when necessary
(unrelated to how the user originally wrote the identifier),
and changing `is_keyword()` and `is_raw_identifier()` to be edition-aware
(this was done in #17896 , but the FIXMEs were fixed here).
It is possible that I missed some cases, but most IDE parts should properly
escape (or not escape) identifiers now.
The rules of thumb are:
- If we show the identifier to the user, its rawness should be determined
by the edition of the edited crate. This is nice for IDE features,
but really important for changes we insert to the source code.
- For tests, I chose `Edition::CURRENT` (so we only have to (maybe) update
tests when an edition becomes stable, to avoid churn).
- For debugging tools (helper methods and logs), I used `Edition::LATEST`.
2024-08-16 16:46:24 +03:00
Lukas Wirth
f90bdfc13d
internal: Properly check the edition for edition dependent syntax kinds
2024-08-15 15:57:47 +02:00
Lukas Wirth
fcb88832de
Simplify FileDelegate
2024-08-05 13:03:03 +02:00
roife
f027a46d94
internal: move NavigationTarget::from_expr to goto_definition
2024-07-20 01:58:51 +08:00
roife
1b59cf2d52
fix: sort references in tests
2024-07-20 01:55:55 +08:00
roife
55cd8ab904
fix: handle highlightings inside macro calls & only highlight kws in current file
2024-07-20 01:45:51 +08:00
roife
d94dcfa841
fix: ensure that highlight_related works for macro_expr
2024-07-20 01:42:52 +08:00
roife
ae6e8d56d4
use token_ancestors_with_macros to simplify goto-def on kw
2024-07-20 01:42:52 +08:00
roife
22c5924080
fix: navigate to label directly when perform 'goto-def' on control-flow kw
...
See https://github.com/rust-lang/rust-analyzer/pull/17542#discussion_r1667656190
2024-07-20 01:42:52 +08:00
roife
a93a7c2403
fix: ensure that goto-def works on fn/try/async kw
2024-07-20 01:41:01 +08:00
roife
37085d9dcd
feat: goto-def on keywords
2024-07-20 01:41:00 +08:00
Lukas Wirth
5264f86242
Encode edition within FileId in the hir layer
2024-07-18 08:49:10 +02:00
Lukas Wirth
3fe815b0f3
Use Symbol in Name
2024-07-12 16:06:44 +02:00
roife
22e82c72ac
test: add regression test for prelude shadowing in block modules
2024-06-06 17:03:40 +08:00
Lukas Wirth
a39c0493a1
Render literal escaping errors in hovers
2024-05-13 12:51:57 +02:00
Lukas Wirth
d2f8eae2ec
feat: Support macro calls in eager macros for IDE features
2024-03-14 15:40:35 +01:00
roife
9cc3a9cfc2
fix: formatting
2024-03-05 19:55:31 +08:00
roife
16995ceda9
test: add tests for constants inside range pattern
2024-03-05 19:31:20 +08:00
Shoyu Vanilla
83f6dd14f8
Add a new failing test for Goto index_mut definition
2024-02-29 00:52:30 +09:00
Shoyu Vanilla
d1bdebf2b9
Add a new failing test for goto deref_mut
2024-02-27 23:54:05 +09:00
Lukas Wirth
2ebf0c87c2
Deduplicate some code
2024-02-10 01:51:22 +01:00
Lukas Wirth
d252247ab7
internal: Remove unnecessary usages of ExpansionInfo
2024-01-31 09:57:17 +01:00
YangzeLuo
b22e772cab
feat: Support for GOTO def from *inside* files included with include! macro
2024-01-27 23:36:01 +08:00
Matthias Krüger
b22bd36f6e
remove more redundant clones manually
2024-01-07 00:26:49 +01:00
unexge
3b8801c3ac
Go to definition for macros in #[macro_use(...)]
2023-12-16 18:00:29 +00:00
Lukas Wirth
9cb13b6efb
Allow navigation targets to be duplicated when the focus range lies in the macro definition site
2023-12-06 12:38:19 +01:00
Lukas Wirth
d2cd30007c
Implicit format args support
2023-12-05 17:07:00 +01:00
Lukas Wirth
5b8e386bae
Improve macro descension API
2023-12-05 17:06:57 +01:00
Lukas Wirth
30093a6d81
spans always come from real file
2023-11-28 10:55:39 +01:00
Lukas Wirth
890eb17b4e
Replace ID based TokenMap with proper relative text-ranges / spans
2023-11-28 10:55:39 +01:00
Lukas Wirth
53b292478d
internal: Add offset param to token descending API
2023-08-16 10:07:18 +02:00
Lukas Wirth
6e2c3f610b
Remove suspicious unwrap
2023-08-02 12:18:10 +02:00
Lukas Wirth
bcff166b3a
Add ExternCrateDecl to HIR
2023-08-02 11:52:55 +02:00
alibektas
1222869b3e
Fix #14557 . Docs aliases can now be detected and used in searching for workspace symbols
2023-05-24 23:57:24 +02:00
hkalbasi
92d6670f72
Consider block impls in lookup_impl_assoc_item_for_trait_ref
2023-05-20 01:11:17 +03:30
Jake Heinz
a497e9a05e
mbe: fix token conversion for doc comments
2023-04-22 03:06:06 +00:00
Jonas Schievink
901c8a4259
Map tokens from include!
expansion to the included file
2023-04-13 17:41:24 +02:00
Ryo Yoshida
f8eac19b33
Support trait aliases in IDE where type support isn't needed
2023-03-04 00:24:08 +09:00
morine0122
aa877645a6
Fix resolving types when resolving HIR and add a related test
2023-02-26 21:50:39 +09:00
bvanjoi
9a15cc81b4
fix(ty): should query impls in nearest block
2023-01-10 10:28:17 +08:00
Yuri Astrakhan
e16c76e3c3
Inline all format arguments where possible
...
This makes code more readale and concise,
moving all format arguments like `format!("{}", foo)`
into the more compact `format!("{foo}")` form.
The change was automatically created with, so there are far less change
of an accidental typo.
```
cargo clippy --fix -- -A clippy::all -W clippy::uninlined_format_args
```
2022-12-24 14:36:10 -05:00
Ryo Yoshida
19306c070d
Fix tests that depended on loose visibility restriction
2022-11-11 20:31:46 +09:00
Ryo Yoshida
67f1d8fe2c
Test all generic args for trait when finding matching impl
2022-10-25 23:28:40 +09:00
DropDemBits
a69cccfc0e
Underline only the intra-doc link instead of the whole doc comment
2022-10-09 21:29:31 -04:00
Maybe Waffle
1c0ec9f0c8
Fix go-to-def for #[doc = include_str!("path")]
2022-10-07 09:04:41 +00:00