mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-26 11:59:49 +00:00
Auto merge of #16348 - Veykril:nested-includes, r=Veykril
fix: Fix nested includes resolving from the wrong base file Fixes https://github.com/rust-lang/rust-analyzer/issues/16109
This commit is contained in:
commit
9d8889cdfc
3 changed files with 54 additions and 2 deletions
|
@ -15,7 +15,7 @@ use crate::{
|
|||
quote,
|
||||
quote::dollar_crate,
|
||||
tt::{self, DelimSpan},
|
||||
ExpandError, ExpandResult, HirFileIdExt, MacroCallId,
|
||||
ExpandError, ExpandResult, HirFileIdExt, MacroCallId, MacroFileIdExt,
|
||||
};
|
||||
|
||||
macro_rules! register_builtin {
|
||||
|
@ -609,7 +609,7 @@ fn relative_file(
|
|||
path_str: &str,
|
||||
allow_recursion: bool,
|
||||
) -> Result<FileId, ExpandError> {
|
||||
let call_site = call_id.as_file().original_file(db);
|
||||
let call_site = call_id.as_macro_file().parent(db).original_file_respecting_includes(db);
|
||||
let path = AnchoredPath { anchor: call_site, path: path_str };
|
||||
let res = db
|
||||
.resolve_path(path)
|
||||
|
|
|
@ -318,6 +318,7 @@ pub trait MacroFileIdExt {
|
|||
fn expansion_level(self, db: &dyn ExpandDatabase) -> u32;
|
||||
/// If this is a macro call, returns the syntax node of the call.
|
||||
fn call_node(self, db: &dyn ExpandDatabase) -> InFile<SyntaxNode>;
|
||||
fn parent(self, db: &dyn ExpandDatabase) -> HirFileId;
|
||||
|
||||
fn expansion_info(self, db: &dyn ExpandDatabase) -> ExpansionInfo;
|
||||
|
||||
|
@ -353,6 +354,9 @@ impl MacroFileIdExt for MacroFileId {
|
|||
};
|
||||
}
|
||||
}
|
||||
fn parent(self, db: &dyn ExpandDatabase) -> HirFileId {
|
||||
self.macro_call_id.lookup(db).kind.file_id()
|
||||
}
|
||||
|
||||
/// Return expansion information if it is a macro-expansion file
|
||||
fn expansion_info(self, db: &dyn ExpandDatabase) -> ExpansionInfo {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue