about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2018-10-13 21:24:50 +0300
committerPietro Albini <pietro@pietroalbini.org>2018-10-18 16:58:20 +0200
commitdbfba9dfcdd4f070411316c20b0cc529aa39621c (patch)
tree022b45833708523fe89fe3e30d055af4811d3e40
parent8b2e8dc8de8d3c72282dab072c2147adf179c8b2 (diff)
downloadrust-dbfba9dfcdd4f070411316c20b0cc529aa39621c.tar.gz
rust-dbfba9dfcdd4f070411316c20b0cc529aa39621c.zip
resolve: Scale back hard-coded extern prelude additions
-rw-r--r--src/librustc_resolve/lib.rs16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs
index d479b6e2d80..f448eb3254c 100644
--- a/src/librustc_resolve/lib.rs
+++ b/src/librustc_resolve/lib.rs
@@ -1678,13 +1678,15 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
         let mut extern_prelude: FxHashSet<Name> =
             session.opts.externs.iter().map(|kv| Symbol::intern(kv.0)).collect();
 
-        // HACK(eddyb) this ignore the `no_{core,std}` attributes.
-        // FIXME(eddyb) warn (elsewhere) if core/std is used with `no_{core,std}`.
-        // if !attr::contains_name(&krate.attrs, "no_core") {
-        // if !attr::contains_name(&krate.attrs, "no_std") {
-        extern_prelude.insert(Symbol::intern("core"));
-        extern_prelude.insert(Symbol::intern("std"));
-        extern_prelude.insert(Symbol::intern("meta"));
+        if !attr::contains_name(&krate.attrs, "no_core") {
+            extern_prelude.insert(Symbol::intern("core"));
+            if !attr::contains_name(&krate.attrs, "no_std") {
+                extern_prelude.insert(Symbol::intern("std"));
+                if session.rust_2018() {
+                    extern_prelude.insert(Symbol::intern("meta"));
+                }
+            }
+        }
 
         let mut invocations = FxHashMap();
         invocations.insert(Mark::root(),