diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index f48cfa0b1479f..ab3d87fafdac7 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -1697,7 +1697,12 @@ impl<'a> hir::lowering::Resolver for Resolver<'a> { components: &[&str], is_value: bool ) -> hir::Path { - let segments = iter::once(keywords::PathRoot.ident()) + let root = if crate_root.is_some() { + keywords::PathRoot + } else { + keywords::Crate + }; + let segments = iter::once(root.ident()) .chain( crate_root.into_iter() .chain(components.iter().cloned()) diff --git a/src/test/run-pass/no-core-2.rs b/src/test/run-pass/no-core-2.rs new file mode 100644 index 0000000000000..e09f8f6b7a87c --- /dev/null +++ b/src/test/run-pass/no-core-2.rs @@ -0,0 +1,18 @@ +#![allow(dead_code, unused_imports)] +#![feature(no_core)] +#![no_core] +// edition:2018 + +extern crate std; +extern crate core; +use core::{prelude::v1::*, *}; + +fn foo() { + for _ in &[()] {} +} + +fn bar() -> Option<()> { + None? +} + +fn main() {}