mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-02 07:22:42 +00:00
Auto merge of #13149 - lowr:fix/unescape-raw-ident-module-path, r=Veykril
fix: unescape all occurrences of module name in module resolution Fixes #13141
This commit is contained in:
commit
b6138965cd
@ -65,6 +65,7 @@ impl ModDir {
|
||||
name: &Name,
|
||||
attr_path: Option<&SmolStr>,
|
||||
) -> Result<(FileId, bool, ModDir), Box<[String]>> {
|
||||
let name = name.unescaped();
|
||||
let orig_file_id = file_id.original_file(db.upcast());
|
||||
|
||||
let mut candidate_files = ArrayVec::<_, 2>::new();
|
||||
@ -73,12 +74,10 @@ impl ModDir {
|
||||
candidate_files.push(self.dir_path.join_attr(attr_path, self.root_non_dir_owner))
|
||||
}
|
||||
None if file_id.is_include_macro(db.upcast()) => {
|
||||
let name = name.unescaped();
|
||||
candidate_files.push(format!("{}.rs", name));
|
||||
candidate_files.push(format!("{}/mod.rs", name));
|
||||
}
|
||||
None => {
|
||||
let name = name.unescaped();
|
||||
candidate_files.push(format!("{}{}.rs", self.dir_path.0, name));
|
||||
candidate_files.push(format!("{}{}/mod.rs", self.dir_path.0, name));
|
||||
}
|
||||
|
@ -127,7 +127,15 @@ mod r#async;
|
||||
use self::r#async::Bar;
|
||||
|
||||
//- /async.rs
|
||||
mod foo;
|
||||
mod r#async;
|
||||
pub struct Bar;
|
||||
|
||||
//- /async/foo.rs
|
||||
pub struct Foo;
|
||||
|
||||
//- /async/async.rs
|
||||
pub struct Baz;
|
||||
"#,
|
||||
expect![[r#"
|
||||
crate
|
||||
@ -136,6 +144,14 @@ pub struct Bar;
|
||||
|
||||
crate::r#async
|
||||
Bar: t v
|
||||
foo: t
|
||||
r#async: t
|
||||
|
||||
crate::r#async::foo
|
||||
Foo: t v
|
||||
|
||||
crate::r#async::r#async
|
||||
Baz: t v
|
||||
"#]],
|
||||
);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user