about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndrea Canciani <ranma42@gmail.com>2016-03-03 10:06:09 +0100
committerAndrea Canciani <ranma42@gmail.com>2016-03-03 10:06:09 +0100
commit4e46eee110b739ab415affc8f9b524d6b4be8554 (patch)
treef5679c3650247a0c418702b64d100561babc2b6a
parentc984cbd9397562f58d654a639923f16569b393ba (diff)
downloadrust-4e46eee110b739ab415affc8f9b524d6b4be8554.tar.gz
rust-4e46eee110b739ab415affc8f9b524d6b4be8554.zip
Hide gated cfg attributes from the output of `--print cfg`
Gated cfg attributes are not available on the stable and beta release
channels, therefore they should not be presented to users of those
channels in order to avoid confusion.
-rw-r--r--src/librustc_driver/lib.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/librustc_driver/lib.rs b/src/librustc_driver/lib.rs
index 0a3ebcb4ca1..da565856a9f 100644
--- a/src/librustc_driver/lib.rs
+++ b/src/librustc_driver/lib.rs
@@ -94,7 +94,7 @@ use syntax::errors;
 use syntax::errors::emitter::Emitter;
 use syntax::diagnostics;
 use syntax::parse::token;
-use syntax::feature_gate::UnstableFeatures;
+use syntax::feature_gate::{GatedCfg, UnstableFeatures};
 
 #[cfg(test)]
 pub mod test;
@@ -567,7 +567,16 @@ impl RustcDefaultCalls {
                 PrintRequest::Cfg => {
                     let mut cfg = config::build_configuration(&sess);
                     target_features::add_configuration(&mut cfg, &sess);
+
+                    let allow_unstable_cfg = match get_unstable_features_setting() {
+                        UnstableFeatures::Disallow => false,
+                        _ => true,
+                    };
+
                     for cfg in cfg {
+                        if !allow_unstable_cfg && GatedCfg::gate(&*cfg).is_some() {
+                            continue;
+                        }
                         match cfg.node {
                             ast::MetaItemKind::Word(ref word) => println!("{}", word),
                             ast::MetaItemKind::NameValue(ref name, ref value) => {