Skip to content

Commit

Permalink
Auto merge of #16348 - Veykril:nested-includes, r=Veykril
Browse files Browse the repository at this point in the history
fix: Fix nested includes resolving from the wrong base file

Fixes #16109
  • Loading branch information
bors committed Jan 11, 2024
2 parents 3e1ae6b + 215ede8 commit 9d8889c
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 2 deletions.
48 changes: 48 additions & 0 deletions crates/hir-def/src/nameres/tests/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1264,6 +1264,54 @@ struct A;
);
}

#[test]
fn nested_include() {
check(
r#"
//- minicore: include
//- /lib.rs
include!("out_dir/includes.rs");
//- /out_dir/includes.rs
pub mod company_name {
pub mod network {
pub mod v1 {
include!("company_name.network.v1.rs");
}
}
}
//- /out_dir/company_name.network.v1.rs
pub struct IpAddress {
pub ip_type: &'static str,
}
/// Nested message and enum types in `IpAddress`.
pub mod ip_address {
pub enum IpType {
IpV4(u32),
}
}
"#,
expect![[r#"
crate
company_name: t
crate::company_name
network: t
crate::company_name::network
v1: t
crate::company_name::network::v1
IpAddress: t
ip_address: t
crate::company_name::network::v1::ip_address
IpType: t
"#]],
);
}

#[test]
fn macro_use_imports_all_macro_types() {
let db = TestDB::with_files(
Expand Down
4 changes: 2 additions & 2 deletions crates/hir-expand/src/builtin_fn_macro.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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)
Expand Down
4 changes: 4 additions & 0 deletions crates/hir-expand/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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 {
Expand Down

0 comments on commit 9d8889c

Please sign in to comment.