about summary refs log tree commit diff
diff options
context:
space:
mode:
authordylan_DPC <dylan.dpc@gmail.com>2019-01-04 12:37:27 +0530
committerdylan_DPC <dylan.dpc@gmail.com>2019-01-08 00:17:03 +0530
commit1ef99f1353b5cb2e2a4c4fe316d9869c4834888b (patch)
treeab6683e6387f78104c3ebc67e56cf717dd585193
parent21ac19d8fefb023752645fcf2517ce0fad663bf0 (diff)
downloadrust-1ef99f1353b5cb2e2a4c4fe316d9869c4834888b.tar.gz
rust-1ef99f1353b5cb2e2a4c4fe316d9869c4834888b.zip
stabilise cfg_attr
-rw-r--r--src/doc/unstable-book/src/language-features/cfg-attr-multi.md20
-rw-r--r--src/libsyntax/config.rs22
-rw-r--r--src/libsyntax/feature_gate.rs5
-rw-r--r--src/test/ui/conditional-compilation/cfg-attr-multi-false.rs2
-rw-r--r--src/test/ui/conditional-compilation/cfg-attr-multi-invalid-1.rs1
-rw-r--r--src/test/ui/conditional-compilation/cfg-attr-multi-invalid-2.rs1
-rw-r--r--src/test/ui/conditional-compilation/cfg-attr-multi-true.rs2
-rw-r--r--src/test/ui/conditional-compilation/cfg-attr-parse.rs2
-rw-r--r--src/test/ui/feature-gates/feature-gate-cfg-attr-multi-1.rs5
-rw-r--r--src/test/ui/feature-gates/feature-gate-cfg-attr-multi-1.stderr11
-rw-r--r--src/test/ui/feature-gates/feature-gate-cfg-attr-multi-2.rs3
-rw-r--r--src/test/ui/feature-gates/feature-gate-cfg-attr-multi-2.stderr11
-rw-r--r--src/test/ui/feature-gates/feature-gate-cfg-attr-multi-bootstrap-1.rs7
-rw-r--r--src/test/ui/feature-gates/feature-gate-cfg-attr-multi-bootstrap-2.rs9
14 files changed, 7 insertions, 94 deletions
diff --git a/src/doc/unstable-book/src/language-features/cfg-attr-multi.md b/src/doc/unstable-book/src/language-features/cfg-attr-multi.md
deleted file mode 100644
index 6365d3e71c6..00000000000
--- a/src/doc/unstable-book/src/language-features/cfg-attr-multi.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# `cfg_attr_multi`
-
-The tracking issue for this feature is: [#54881]
-The RFC for this feature is: [#2539]
-
-[#54881]: https://github.com/rust-lang/rust/issues/54881
-[#2539]: https://github.com/rust-lang/rfcs/pull/2539
-
-------------------------
-
-This feature flag lets you put multiple attributes into a `cfg_attr` attribute.
-
-Example:
-
-```rust,ignore
-#[cfg_attr(all(), must_use, optimize)]
-```
-
-Because `cfg_attr` resolves before procedural macros, this does not affect
-macro resolution at all.
\ No newline at end of file
diff --git a/src/libsyntax/config.rs b/src/libsyntax/config.rs
index 9eebbedc0bc..cf5ae4e7630 100644
--- a/src/libsyntax/config.rs
+++ b/src/libsyntax/config.rs
@@ -94,11 +94,6 @@ impl<'a> StripUnconfigured<'a> {
             return vec![attr];
         }
 
-        let gate_cfg_attr_multi = if let Some(ref features) = self.features {
-            !features.cfg_attr_multi
-        } else {
-            false
-        };
         let cfg_attr_span = attr.span;
 
         let (cfg_predicate, expanded_attrs) = match attr.parse(self.sess, |parser| {
@@ -130,21 +125,8 @@ impl<'a> StripUnconfigured<'a> {
         // Check feature gate and lint on zero attributes in source. Even if the feature is gated,
         // we still compute as if it wasn't, since the emitted error will stop compilation further
         // along the compilation.
-        match (expanded_attrs.len(), gate_cfg_attr_multi) {
-            (0, false) => {
-                // FIXME: Emit unused attribute lint here.
-            },
-            (1, _) => {},
-            (_, true) => {
-                emit_feature_err(
-                    self.sess,
-                    "cfg_attr_multi",
-                    cfg_attr_span,
-                    GateIssue::Language,
-                    "cfg_attr with zero or more than one attributes is experimental",
-                );
-            },
-            (_, false) => {}
+        if expanded_attrs.len() == 0 {
+            // FIXME: Emit unused attribute lint here.
         }
 
         if attr::cfg_matches(&cfg_predicate, self.sess, self.features) {
diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs
index cca2702f1a7..c900bb916f4 100644
--- a/src/libsyntax/feature_gate.rs
+++ b/src/libsyntax/feature_gate.rs
@@ -465,9 +465,6 @@ declare_features! (
     // Allows `impl Trait` in bindings (`let`, `const`, `static`).
     (active, impl_trait_in_bindings, "1.30.0", Some(34511), None),
 
-    // `#[cfg_attr(predicate, multiple, attributes, here)]`
-    (active, cfg_attr_multi, "1.31.0", Some(54881), None),
-
     // Allows `const _: TYPE = VALUE`.
     (active, underscore_const_names, "1.31.0", Some(54912), None),
 
@@ -689,6 +686,8 @@ declare_features! (
     (accepted, repr_packed, "1.33.0", Some(33158), None),
     // Allows calling `const unsafe fn` inside `unsafe` blocks in `const fn` functions.
     (accepted, min_const_unsafe_fn, "1.33.0", Some(55607), None),
+// `#[cfg_attr(predicate, multiple, attributes, here)]`
+    (accepted, cfg_attr_multi, "1.33.0", Some(54881), None),
 );
 
 // If you change this, please modify `src/doc/unstable-book` as well. You must
diff --git a/src/test/ui/conditional-compilation/cfg-attr-multi-false.rs b/src/test/ui/conditional-compilation/cfg-attr-multi-false.rs
index ec4ee80b498..283a4b36812 100644
--- a/src/test/ui/conditional-compilation/cfg-attr-multi-false.rs
+++ b/src/test/ui/conditional-compilation/cfg-attr-multi-false.rs
@@ -4,7 +4,7 @@
 // compile-pass
 
 #![warn(unused_must_use)]
-#![feature(cfg_attr_multi)]
+#![cfg_attr(stage0, feature(cfg_attr_multi))]
 
 #[cfg_attr(any(), deprecated, must_use)]
 struct Struct {}
diff --git a/src/test/ui/conditional-compilation/cfg-attr-multi-invalid-1.rs b/src/test/ui/conditional-compilation/cfg-attr-multi-invalid-1.rs
index 16813a7623c..be762c56048 100644
--- a/src/test/ui/conditional-compilation/cfg-attr-multi-invalid-1.rs
+++ b/src/test/ui/conditional-compilation/cfg-attr-multi-invalid-1.rs
@@ -1,6 +1,5 @@
 // compile-flags: --cfg broken
 
-#![feature(cfg_attr_multi)]
 #![crate_type = "lib"]
 #![cfg_attr(broken, no_core, no_std)] //~ ERROR no_core is experimental
 
diff --git a/src/test/ui/conditional-compilation/cfg-attr-multi-invalid-2.rs b/src/test/ui/conditional-compilation/cfg-attr-multi-invalid-2.rs
index 39f8fc4b8b9..8a9e99d703c 100644
--- a/src/test/ui/conditional-compilation/cfg-attr-multi-invalid-2.rs
+++ b/src/test/ui/conditional-compilation/cfg-attr-multi-invalid-2.rs
@@ -1,6 +1,5 @@
 // compile-flags: --cfg broken
 
-#![feature(cfg_attr_multi)]
 #![crate_type = "lib"]
 #![cfg_attr(broken, no_std, no_core)] //~ ERROR no_core is experimental
 
diff --git a/src/test/ui/conditional-compilation/cfg-attr-multi-true.rs b/src/test/ui/conditional-compilation/cfg-attr-multi-true.rs
index 68307a9c456..d2fd3ec2bec 100644
--- a/src/test/ui/conditional-compilation/cfg-attr-multi-true.rs
+++ b/src/test/ui/conditional-compilation/cfg-attr-multi-true.rs
@@ -5,7 +5,7 @@
 // compile-pass
 
 #![warn(unused_must_use)]
-#![feature(cfg_attr_multi)]
+#![cfg_attr(stage0, feature(cfg_attr_multi))]
 
 #[cfg_attr(all(), deprecated, must_use)]
 struct MustUseDeprecated {}
diff --git a/src/test/ui/conditional-compilation/cfg-attr-parse.rs b/src/test/ui/conditional-compilation/cfg-attr-parse.rs
index eec0e8faca8..5e695375eba 100644
--- a/src/test/ui/conditional-compilation/cfg-attr-parse.rs
+++ b/src/test/ui/conditional-compilation/cfg-attr-parse.rs
@@ -1,6 +1,6 @@
 // Parse `cfg_attr` with varying numbers of attributes and trailing commas
 
-#![feature(cfg_attr_multi)]
+#![cfg_attr(stage0, feature(cfg_attr_multi))]
 
 // Completely empty `cfg_attr` input
 #[cfg_attr()] //~ error: expected identifier, found `)`
diff --git a/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-1.rs b/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-1.rs
deleted file mode 100644
index 9515380bc28..00000000000
--- a/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-1.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-// gate-test-cfg_attr_multi
-
-#![cfg_attr(all(), warn(nonstandard_style), allow(unused_attributes))]
-//~^ ERROR cfg_attr with zero or more than one attributes is experimental
-fn main() {}
diff --git a/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-1.stderr b/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-1.stderr
deleted file mode 100644
index 088e6df1a1a..00000000000
--- a/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-1.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0658]: cfg_attr with zero or more than one attributes is experimental (see issue #54881)
-  --> $DIR/feature-gate-cfg-attr-multi-1.rs:3:1
-   |
-LL | #![cfg_attr(all(), warn(nonstandard_style), allow(unused_attributes))]
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |
-   = help: add #![feature(cfg_attr_multi)] to the crate attributes to enable
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-2.rs b/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-2.rs
deleted file mode 100644
index cf02432274b..00000000000
--- a/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-2.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-#![cfg_attr(all(),)]
-//~^ ERROR cfg_attr with zero or more than one attributes is experimental
-fn main() {}
diff --git a/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-2.stderr b/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-2.stderr
deleted file mode 100644
index a01876114dd..00000000000
--- a/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-2.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0658]: cfg_attr with zero or more than one attributes is experimental (see issue #54881)
-  --> $DIR/feature-gate-cfg-attr-multi-2.rs:1:1
-   |
-LL | #![cfg_attr(all(),)]
-   | ^^^^^^^^^^^^^^^^^^^^
-   |
-   = help: add #![feature(cfg_attr_multi)] to the crate attributes to enable
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-bootstrap-1.rs b/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-bootstrap-1.rs
deleted file mode 100644
index e4737926e7a..00000000000
--- a/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-bootstrap-1.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-// Test that settingt the featute gate while using its functionality doesn't error.
-
-// compile-pass
-
-#![cfg_attr(all(), feature(cfg_attr_multi), crate_type="bin")]
-
-fn main() {}
diff --git a/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-bootstrap-2.rs b/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-bootstrap-2.rs
deleted file mode 100644
index df740541f55..00000000000
--- a/src/test/ui/feature-gates/feature-gate-cfg-attr-multi-bootstrap-2.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-// Test that settingt the featute gate while using its functionality doesn't error.
-// Specifically, if there's a cfg-attr *before* the feature gate.
-
-// compile-pass
-
-#![cfg_attr(all(),)]
-#![cfg_attr(all(), feature(cfg_attr_multi), crate_type="bin")]
-
-fn main() {}