diff options
| author | bors <bors@rust-lang.org> | 2024-06-20 09:11:44 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-06-20 09:11:44 +0000 |
| commit | 48b6f28b0e1051b6e525d7e6cc32c6bfe983cef2 (patch) | |
| tree | 0f1923f8d64a0a9d4e509884771450e26560aca2 | |
| parent | 1d0d439168ce4efcfabbceb6ad756aa044da7423 (diff) | |
| parent | 16a28cacc2f60cbc2b45a4d0dd4db0daa2df58e5 (diff) | |
| download | rust-48b6f28b0e1051b6e525d7e6cc32c6bfe983cef2.tar.gz rust-48b6f28b0e1051b6e525d7e6cc32c6bfe983cef2.zip | |
Auto merge of #17462 - Veykril:sema-attr-macro-res, r=Veykril
fix: Fix IDE features breaking in some attr macros Fixes https://github.com/rust-lang/rust-analyzer/issues/17453, Fixes https://github.com/rust-lang/rust-analyzer/issues/17458
3 files changed, 6 insertions, 6 deletions
diff --git a/src/tools/rust-analyzer/crates/hir-expand/src/lib.rs b/src/tools/rust-analyzer/crates/hir-expand/src/lib.rs index ec0716c5fa3..a7150cf3087 100644 --- a/src/tools/rust-analyzer/crates/hir-expand/src/lib.rs +++ b/src/tools/rust-analyzer/crates/hir-expand/src/lib.rs @@ -710,8 +710,8 @@ impl ExpansionInfo { self.expanded.clone() } - pub fn call_node(&self) -> InFile<Option<SyntaxNode>> { - self.arg.with_value(self.arg.value.as_ref().and_then(SyntaxNode::parent)) + pub fn arg(&self) -> InFile<Option<&SyntaxNode>> { + self.arg.as_ref().map(|it| it.as_ref()) } pub fn call_file(&self) -> HirFileId { diff --git a/src/tools/rust-analyzer/crates/hir/src/semantics.rs b/src/tools/rust-analyzer/crates/hir/src/semantics.rs index 2618ea3decc..f6c88edbff7 100644 --- a/src/tools/rust-analyzer/crates/hir/src/semantics.rs +++ b/src/tools/rust-analyzer/crates/hir/src/semantics.rs @@ -772,7 +772,7 @@ impl<'db> SemanticsImpl<'db> { let exp_info = macro_file.expansion_info(self.db.upcast()); let InMacroFile { file_id, value } = exp_info.expanded(); - if let InFile { file_id, value: Some(value) } = exp_info.call_node() { + if let InFile { file_id, value: Some(value) } = exp_info.arg() { self.cache(value.ancestors().last().unwrap(), file_id); } self.cache(value, file_id.into()); @@ -786,7 +786,7 @@ impl<'db> SemanticsImpl<'db> { // FIXME: uncached parse // Create the source analyzer for the macro call scope let Some(sa) = expansion_info - .call_node() + .arg() .value .and_then(|it| self.analyze_no_infer(&it.ancestors().last().unwrap())) else { @@ -1145,7 +1145,7 @@ impl<'db> SemanticsImpl<'db> { .expansion_info_cache .entry(macro_file) .or_insert_with(|| macro_file.expansion_info(self.db.upcast())); - expansion_info.call_node().transpose() + expansion_info.arg().map(|node| node?.parent()).transpose() }) } } diff --git a/src/tools/rust-analyzer/crates/hir/src/semantics/source_to_def.rs b/src/tools/rust-analyzer/crates/hir/src/semantics/source_to_def.rs index df17a357348..74ed2640f40 100644 --- a/src/tools/rust-analyzer/crates/hir/src/semantics/source_to_def.rs +++ b/src/tools/rust-analyzer/crates/hir/src/semantics/source_to_def.rs @@ -434,7 +434,7 @@ impl SourceToDefCtx<'_, '_> { .entry(macro_file) .or_insert_with(|| macro_file.expansion_info(this.db.upcast())); - expansion_info.call_node().map(|node| node?.parent()).transpose() + expansion_info.arg().map(|node| node?.parent()).transpose() } }; let mut node = node.cloned(); |
