Skip to content

Commit b45b4da

Browse files
committed
resolve: Absolute paths may be undetermined on 2018 edition
due to macro-expanded `extern crate` items adding names to extern prelude.
1 parent 171df34 commit b45b4da

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

src/librustc_resolve/resolve_imports.rs

+3
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,9 @@ impl<'a, 'crateloader> Resolver<'a, 'crateloader> {
226226
let module = self.get_module(binding.def().def_id());
227227
self.populate_module_if_necessary(module);
228228
return Ok(binding);
229+
} else if !self.graph_root.unresolved_invocations.borrow().is_empty() {
230+
// Macro-expanded `extern crate`items still can add names to extern prelude.
231+
return Err(Undetermined);
229232
} else {
230233
return Err(Determined);
231234
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// compile-pass
2+
// edition:2018
3+
4+
#![feature(extern_crate_item_prelude)]
5+
6+
macro_rules! define_iso { () => {
7+
extern crate std as iso;
8+
}}
9+
10+
::iso::thread_local! {
11+
static S: u8 = 0;
12+
}
13+
14+
define_iso!();
15+
16+
fn main() {
17+
let s = S;
18+
}

0 commit comments

Comments
 (0)