about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorFlorian Hahn <flo@fhahn.com>2015-04-14 23:25:40 +0200
committerFlorian Hahn <flo@fhahn.com>2015-04-14 23:39:45 +0200
commit7350ce84396cb38c8d21bd9a32d13de7fb500162 (patch)
tree9c81cd06507996002b7c244f3a4a7b9901d19db2 /src
parentdabf0c6371d3b193664f58746fa27c1835a010f3 (diff)
downloadrust-7350ce84396cb38c8d21bd9a32d13de7fb500162.tar.gz
rust-7350ce84396cb38c8d21bd9a32d13de7fb500162.zip
Strip configuration before checking feature gates of macros
closes #24434
Diffstat (limited to 'src')
-rw-r--r--src/librustc_driver/driver.rs5
-rw-r--r--src/test/run-pass/issue-24434.rs16
2 files changed, 19 insertions, 2 deletions
diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs
index e310798b20a..010c0a8142c 100644
--- a/src/librustc_driver/driver.rs
+++ b/src/librustc_driver/driver.rs
@@ -395,6 +395,9 @@ pub fn phase_2_configure_and_expand(sess: &Session,
     //
     // baz! should not use this definition unless foo is enabled.
 
+    krate = time(time_passes, "configuration 1", krate, |krate|
+                 syntax::config::strip_unconfigured_items(sess.diagnostic(), krate));
+
     time(time_passes, "gated macro checking", (), |_| {
         let features =
             syntax::feature_gate::check_crate_macros(sess.codemap(),
@@ -406,8 +409,6 @@ pub fn phase_2_configure_and_expand(sess: &Session,
         sess.abort_if_errors();
     });
 
-    krate = time(time_passes, "configuration 1", krate, |krate|
-                 syntax::config::strip_unconfigured_items(sess.diagnostic(), krate));
 
     krate = time(time_passes, "crate injection", krate, |krate|
                  syntax::std_inject::maybe_inject_crates_ref(krate,
diff --git a/src/test/run-pass/issue-24434.rs b/src/test/run-pass/issue-24434.rs
new file mode 100644
index 00000000000..2b0d09d7460
--- /dev/null
+++ b/src/test/run-pass/issue-24434.rs
@@ -0,0 +1,16 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// compile-flags:--cfg set1
+
+#![cfg_attr(set1, feature(custom_attribute))]
+
+#![foobar]
+fn main() {}