summary refs log tree commit diff
path: root/src/librustc_interface
diff options
context:
space:
mode:
authorMatthew Jasper <mjjasper1@gmail.com>2019-08-25 21:03:24 +0100
committerMatthew Jasper <mjjasper1@gmail.com>2019-09-05 15:07:16 +0100
commit6fcdb36ccb60cca5c26ac804770a47fc01e0c2dd (patch)
treed93ac96d0d64b2a5473a5c04bcb41244a626bc83 /src/librustc_interface
parent4082cd95a8de6c8244e9b44908f9859e75acdeea (diff)
downloadrust-6fcdb36ccb60cca5c26ac804770a47fc01e0c2dd.tar.gz
rust-6fcdb36ccb60cca5c26ac804770a47fc01e0c2dd.zip
Make use of hygiene in AST passes
Diffstat (limited to 'src/librustc_interface')
-rw-r--r--src/librustc_interface/passes.rs27
1 files changed, 16 insertions, 11 deletions
diff --git a/src/librustc_interface/passes.rs b/src/librustc_interface/passes.rs
index 8b0b5a5b7a2..649cc8a2fb5 100644
--- a/src/librustc_interface/passes.rs
+++ b/src/librustc_interface/passes.rs
@@ -233,7 +233,7 @@ pub fn register_plugins<'a>(
         syntax::attr::inject(krate, &sess.parse_sess, &sess.opts.debugging_opts.crate_attr)
     });
 
-    let (mut krate, features) = syntax::config::features(
+    let (krate, features) = syntax::config::features(
         krate,
         &sess.parse_sess,
         sess.edition(),
@@ -268,16 +268,6 @@ pub fn register_plugins<'a>(
         middle::recursion_limit::update_limits(sess, &krate);
     });
 
-    krate = time(sess, "crate injection", || {
-        let alt_std_name = sess.opts.alt_std_name.as_ref().map(|s| &**s);
-        let (krate, name) =
-            syntax_ext::standard_library_imports::inject(krate, alt_std_name, sess.edition());
-        if let Some(name) = name {
-            sess.parse_sess.injected_crate_name.set(name);
-        }
-        krate
-    });
-
     let registrars = time(sess, "plugin loading", || {
         plugin::load::load_plugins(
             sess,
@@ -370,6 +360,21 @@ fn configure_and_expand_inner<'a>(
         &resolver_arenas,
     );
     syntax_ext::register_builtin_macros(&mut resolver, sess.edition());
+
+    krate = time(sess, "crate injection", || {
+        let alt_std_name = sess.opts.alt_std_name.as_ref().map(|s| Symbol::intern(s));
+        let (krate, name) = syntax_ext::standard_library_imports::inject(
+            krate,
+            &mut resolver,
+            alt_std_name,
+            sess.edition(),
+        );
+        if let Some(name) = name {
+            sess.parse_sess.injected_crate_name.set(name);
+        }
+        krate
+    });
+
     syntax_ext::plugin_macro_defs::inject(
         &mut krate, &mut resolver, plugin_info.syntax_exts, sess.edition()
     );