From 045f8f69293fae924ee4998439ec0e34f98320be Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Sun, 1 Jan 2017 16:14:35 -0800 Subject: [PATCH] rustc: Stabilize the `proc_macro` feature This commit stabilizes the `proc_macro` and `proc_macro_lib` features in the compiler to stabilize the "Macros 1.1" feature of the language. Many more details can be found on the tracking issue, #35900. Closes #35900 --- src/libproc_macro/lib.rs | 9 ++++++--- src/librustc_driver/driver.rs | 3 +-- src/librustc_metadata/lib.rs | 1 - src/libsyntax/ext/expand.rs | 1 - src/libsyntax/feature_gate.rs | 12 +++--------- src/libsyntax_ext/deriving/mod.rs | 8 +------- src/libsyntax_ext/lib.rs | 1 - src/libsyntax_ext/proc_macro_registrar.rs | 10 +--------- .../proc-macro/attribute.rs | 1 - .../proc-macro/auxiliary/derive-a-b.rs | 1 - .../proc-macro/auxiliary/derive-a.rs | 2 -- .../proc-macro/auxiliary/derive-b.rs | 2 -- .../proc-macro/auxiliary/derive-bad.rs | 2 -- .../proc-macro/auxiliary/derive-panic.rs | 2 -- .../proc-macro/auxiliary/derive-unstable-2.rs | 2 -- .../proc-macro/auxiliary/derive-unstable.rs | 2 -- .../proc-macro/define-two.rs | 1 - .../proc-macro/derive-bad.rs | 2 -- .../proc-macro/derive-still-gated.rs | 1 - .../proc-macro/expand-to-unstable-2.rs | 1 - .../proc-macro/expand-to-unstable.rs | 1 - .../proc-macro/export-macro.rs | 1 - .../proc-macro/feature-gate-1.rs | 13 ------------- .../proc-macro/feature-gate-2.rs | 13 ------------- .../proc-macro/feature-gate-3.rs | 15 --------------- .../proc-macro/feature-gate-4.rs | 17 ----------------- .../proc-macro/feature-gate-5.rs | 12 ------------ .../proc-macro/illegal-proc-macro-derive-use.rs | 2 -- .../compile-fail-fulldeps/proc-macro/import.rs | 1 - .../proc-macro/issue-37788.rs | 2 -- .../proc-macro/item-error.rs | 1 - .../proc-macro/load-panic.rs | 2 -- .../proc-macro/proc-macro-attributes.rs | 1 - .../proc-macro/pub-at-crate-root.rs | 1 - .../proc-macro/shadow-builtin.rs | 1 - .../compile-fail-fulldeps/proc-macro/shadow.rs | 2 -- .../proc-macro/signature.rs | 1 - src/test/run-make/issue-37839/a.rs | 1 - src/test/run-make/issue-37893/a.rs | 1 - src/test/run-make/issue-38237/foo.rs | 1 - src/test/run-make/rustc-macro-dep-files/bar.rs | 2 -- src/test/run-make/rustc-macro-dep-files/foo.rs | 2 -- .../run-pass-fulldeps/proc-macro/add-impl.rs | 2 -- .../run-pass-fulldeps/proc-macro/append-impl.rs | 1 - .../proc-macro/auxiliary/add-impl.rs | 2 -- .../proc-macro/auxiliary/append-impl.rs | 2 -- .../proc-macro/auxiliary/derive-a.rs | 2 -- .../proc-macro/auxiliary/derive-atob.rs | 2 -- .../proc-macro/auxiliary/derive-b.rs | 2 -- .../proc-macro/auxiliary/derive-ctod.rs | 2 -- .../proc-macro/auxiliary/derive-nothing.rs | 2 -- .../proc-macro/auxiliary/derive-reexport.rs | 2 +- .../proc-macro/auxiliary/derive-same-struct.rs | 3 --- .../proc-macro/auxiliary/double.rs | 2 -- .../proc-macro/auxiliary/expand-with-a-macro.rs | 2 -- .../run-pass-fulldeps/proc-macro/crate-var.rs | 1 - .../run-pass-fulldeps/proc-macro/derive-b.rs | 2 -- .../proc-macro/derive-same-struct.rs | 2 -- .../run-pass-fulldeps/proc-macro/derive-test.rs | 2 -- .../proc-macro/expand-with-a-macro.rs | 1 - .../run-pass-fulldeps/proc-macro/load-two.rs | 2 -- src/test/run-pass-fulldeps/proc-macro/smoke.rs | 2 -- .../proc-macro/struct-field-macro.rs | 2 -- .../proc-macro/use-reexport.rs | 2 -- src/test/rustdoc/rustc-macro-crate.rs | 2 -- 65 files changed, 13 insertions(+), 188 deletions(-) delete mode 100644 src/test/compile-fail-fulldeps/proc-macro/feature-gate-1.rs delete mode 100644 src/test/compile-fail-fulldeps/proc-macro/feature-gate-2.rs delete mode 100644 src/test/compile-fail-fulldeps/proc-macro/feature-gate-3.rs delete mode 100644 src/test/compile-fail-fulldeps/proc-macro/feature-gate-4.rs delete mode 100644 src/test/compile-fail-fulldeps/proc-macro/feature-gate-5.rs diff --git a/src/libproc_macro/lib.rs b/src/libproc_macro/lib.rs index 5ee9fecfb21b3..1491bdc6c8d31 100644 --- a/src/libproc_macro/lib.rs +++ b/src/libproc_macro/lib.rs @@ -15,8 +15,7 @@ //! Currently the primary use of this crate is to provide the ability to define //! new custom derive modes through `#[proc_macro_derive]`. //! -//! Added recently as part of [RFC 1681] this crate is currently *unstable* and -//! requires the `#![feature(proc_macro_lib)]` directive to use. +//! Added recently as part of [RFC 1681] this crate is stable as of Rust 1.15.0. //! //! [RFC 1681]: https://github.com/rust-lang/rfcs/blob/master/text/1681-macros-1.1.md //! @@ -27,7 +26,7 @@ //! area for macro authors is stabilized. #![crate_name = "proc_macro"] -#![unstable(feature = "proc_macro_lib", issue = "27812")] +#![stable(feature = "proc_macro_lib", since = "1.15.0")] #![crate_type = "rlib"] #![crate_type = "dylib"] #![cfg_attr(not(stage0), deny(warnings))] @@ -55,12 +54,14 @@ use syntax::ptr::P; /// /// The API of this type is intentionally bare-bones, but it'll be expanded over /// time! +#[stable(feature = "proc_macro_lib", since = "1.15.0")] pub struct TokenStream { inner: Vec>, } /// Error returned from `TokenStream::from_str`. #[derive(Debug)] +#[stable(feature = "proc_macro_lib", since = "1.15.0")] pub struct LexError { _inner: (), } @@ -131,6 +132,7 @@ pub mod __internal { } } +#[stable(feature = "proc_macro_lib", since = "1.15.0")] impl FromStr for TokenStream { type Err = LexError; @@ -154,6 +156,7 @@ impl FromStr for TokenStream { } } +#[stable(feature = "proc_macro_lib", since = "1.15.0")] impl fmt::Display for TokenStream { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { for item in self.inner.iter() { diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index e9c14b4f99c22..63abc09a07672 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -716,8 +716,7 @@ pub fn phase_2_configure_and_expand(sess: &Session, is_proc_macro_crate, is_test_crate, num_crate_types, - sess.diagnostic(), - &sess.features.borrow()) + sess.diagnostic()) }); } diff --git a/src/librustc_metadata/lib.rs b/src/librustc_metadata/lib.rs index f4ccc01544aa6..3986cc507d4be 100644 --- a/src/librustc_metadata/lib.rs +++ b/src/librustc_metadata/lib.rs @@ -21,7 +21,6 @@ #![feature(conservative_impl_trait)] #![feature(core_intrinsics)] #![feature(proc_macro_internals)] -#![feature(proc_macro_lib)] #![feature(quote)] #![feature(rustc_diagnostic_macros)] #![feature(rustc_private)] diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index 5d62175fbf23a..d45dbd3f72342 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -926,7 +926,6 @@ impl<'feat> ExpansionConfig<'feat> { fn enable_allow_internal_unstable = allow_internal_unstable, fn enable_custom_derive = custom_derive, fn enable_pushpop_unsafe = pushpop_unsafe, - fn enable_proc_macro = proc_macro, } } diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index e7df454cf6a50..5092412475872 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -279,9 +279,6 @@ declare_features! ( // instead of just the platforms on which it is the C ABI (active, abi_sysv64, "1.13.0", Some(36167)), - // Macros 1.1 - (active, proc_macro, "1.13.0", Some(35900)), - // Allows untagged unions `union U { ... }` (active, untagged_unions, "1.13.0", Some(32836)), @@ -377,6 +374,8 @@ declare_features! ( // Allows `..` in tuple (struct) patterns (accepted, dotdot_in_tuple_patterns, "1.14.0", Some(33627)), (accepted, item_like_imports, "1.14.0", Some(35120)), + // Macros 1.1 + (accepted, proc_macro, "1.15.0", Some(35900)), ); // (changing above list without updating src/doc/reference.md makes @cmr sad) @@ -650,11 +649,7 @@ pub const BUILTIN_ATTRIBUTES: &'static [(&'static str, AttributeType, AttributeG is an experimental feature", cfg_fn!(fundamental))), - ("proc_macro_derive", Normal, Gated(Stability::Unstable, - "proc_macro", - "the `#[proc_macro_derive]` attribute \ - is an experimental feature", - cfg_fn!(proc_macro))), + ("proc_macro_derive", Normal, Ungated), ("rustc_copy_clone_marker", Whitelisted, Gated(Stability::Unstable, "rustc_attrs", @@ -760,7 +755,6 @@ const GATED_CFGS: &'static [(&'static str, &'static str, fn(&Features) -> bool)] ("target_vendor", "cfg_target_vendor", cfg_fn!(cfg_target_vendor)), ("target_thread_local", "cfg_target_thread_local", cfg_fn!(cfg_target_thread_local)), ("target_has_atomic", "cfg_target_has_atomic", cfg_fn!(cfg_target_has_atomic)), - ("proc_macro", "proc_macro", cfg_fn!(proc_macro)), ]; #[derive(Debug, Eq, PartialEq)] diff --git a/src/libsyntax_ext/deriving/mod.rs b/src/libsyntax_ext/deriving/mod.rs index 0511b0d252b60..2573690d15375 100644 --- a/src/libsyntax_ext/deriving/mod.rs +++ b/src/libsyntax_ext/deriving/mod.rs @@ -15,7 +15,7 @@ use syntax::attr::HasAttrs; use syntax::codemap; use syntax::ext::base::{Annotatable, ExtCtxt, SyntaxExtension}; use syntax::ext::build::AstBuilder; -use syntax::feature_gate::{self, emit_feature_err}; +use syntax::feature_gate; use syntax::ptr::P; use syntax::symbol::Symbol; use syntax_pos::Span; @@ -220,12 +220,6 @@ pub fn expand_derive(cx: &mut ExtCtxt, .filter(|&(_, ref name)| !is_builtin_trait(name.name().unwrap())) .next(); if let Some((i, titem)) = macros_11_derive { - if !cx.ecfg.features.unwrap().proc_macro { - let issue = feature_gate::GateIssue::Language; - let msg = "custom derive macros are experimentally supported"; - emit_feature_err(cx.parse_sess, "proc_macro", titem.span, issue, msg); - } - let tname = ast::Ident::with_empty_ctxt(titem.name().unwrap()); let path = ast::Path::from_ident(titem.span, tname); let ext = cx.resolver.resolve_macro(cx.current_expansion.mark, &path, false).unwrap(); diff --git a/src/libsyntax_ext/lib.rs b/src/libsyntax_ext/lib.rs index e31b29d5cc1b4..cbc2b2263f20e 100644 --- a/src/libsyntax_ext/lib.rs +++ b/src/libsyntax_ext/lib.rs @@ -19,7 +19,6 @@ html_root_url = "https://doc.rust-lang.org/nightly/")] #![cfg_attr(not(stage0), deny(warnings))] -#![feature(proc_macro_lib)] #![feature(proc_macro_internals)] #![feature(rustc_private)] #![feature(staged_api)] diff --git a/src/libsyntax_ext/proc_macro_registrar.rs b/src/libsyntax_ext/proc_macro_registrar.rs index 5323ace79d849..c93e2c054d240 100644 --- a/src/libsyntax_ext/proc_macro_registrar.rs +++ b/src/libsyntax_ext/proc_macro_registrar.rs @@ -17,7 +17,6 @@ use syntax::ext::base::ExtCtxt; use syntax::ext::build::AstBuilder; use syntax::ext::expand::ExpansionConfig; use syntax::parse::ParseSess; -use syntax::feature_gate::Features; use syntax::fold::Folder; use syntax::ptr::P; use syntax::symbol::Symbol; @@ -47,8 +46,7 @@ pub fn modify(sess: &ParseSess, is_proc_macro_crate: bool, is_test_crate: bool, num_crate_types: usize, - handler: &errors::Handler, - features: &Features) -> ast::Crate { + handler: &errors::Handler) -> ast::Crate { let ecfg = ExpansionConfig::default("proc_macro".to_string()); let mut cx = ExtCtxt::new(sess, ecfg, resolver); @@ -66,12 +64,6 @@ pub fn modify(sess: &ParseSess, if !is_proc_macro_crate { return krate - } else if !features.proc_macro { - let mut err = handler.struct_err("the `proc-macro` crate type is \ - experimental"); - err.help("add #![feature(proc_macro)] to the crate attributes to \ - enable"); - err.emit(); } if num_crate_types > 1 { diff --git a/src/test/compile-fail-fulldeps/proc-macro/attribute.rs b/src/test/compile-fail-fulldeps/proc-macro/attribute.rs index abf11637631f4..5d5e61270b61d 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/attribute.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/attribute.rs @@ -9,7 +9,6 @@ // except according to those terms. #![crate_type = "proc-macro"] -#![feature(proc_macro, proc_macro_lib)] extern crate proc_macro; diff --git a/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-a-b.rs b/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-a-b.rs index 8a92ca74f376a..cd8750bc89c42 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-a-b.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-a-b.rs @@ -11,7 +11,6 @@ // force-host // no-prefer-dynamic -#![feature(proc_macro, proc_macro_lib)] #![crate_type = "proc-macro"] extern crate proc_macro; diff --git a/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-a.rs b/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-a.rs index 8d26207273d42..53b2c23e5d7df 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-a.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-a.rs @@ -11,8 +11,6 @@ // force-host // no-prefer-dynamic -#![feature(proc_macro)] -#![feature(proc_macro_lib)] #![crate_type = "proc-macro"] extern crate proc_macro; diff --git a/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-b.rs b/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-b.rs index 70b778b1030e7..5787546fb1e5a 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-b.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-b.rs @@ -11,8 +11,6 @@ // force-host // no-prefer-dynamic -#![feature(proc_macro)] -#![feature(proc_macro_lib)] #![crate_type = "proc-macro"] extern crate proc_macro; diff --git a/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-bad.rs b/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-bad.rs index aae8b63e25354..841b39eaed07b 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-bad.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-bad.rs @@ -11,8 +11,6 @@ // no-prefer-dynamic // force-host -#![feature(proc_macro)] -#![feature(proc_macro_lib)] #![crate_type = "proc-macro"] extern crate proc_macro; diff --git a/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-panic.rs b/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-panic.rs index f426fe5437671..3274f0324e1cb 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-panic.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-panic.rs @@ -11,8 +11,6 @@ // no-prefer-dynamic // force-host -#![feature(proc_macro)] -#![feature(proc_macro_lib)] #![crate_type = "proc-macro"] extern crate proc_macro; diff --git a/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-unstable-2.rs b/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-unstable-2.rs index d8952e3478b6c..2d492d341ebba 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-unstable-2.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-unstable-2.rs @@ -11,8 +11,6 @@ // force-host // no-prefer-dynamic -#![feature(proc_macro)] -#![feature(proc_macro_lib)] #![crate_type = "proc-macro"] extern crate proc_macro; diff --git a/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-unstable.rs b/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-unstable.rs index 1187b5102e23f..a7b5d1e3e54cf 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-unstable.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-unstable.rs @@ -11,8 +11,6 @@ // force-host // no-prefer-dynamic -#![feature(proc_macro)] -#![feature(proc_macro_lib)] #![crate_type = "proc-macro"] extern crate proc_macro; diff --git a/src/test/compile-fail-fulldeps/proc-macro/define-two.rs b/src/test/compile-fail-fulldeps/proc-macro/define-two.rs index bdb3c09c4d723..87b32096d7b01 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/define-two.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/define-two.rs @@ -11,7 +11,6 @@ // no-prefer-dynamic #![crate_type = "proc-macro"] -#![feature(proc_macro, proc_macro_lib)] extern crate proc_macro; diff --git a/src/test/compile-fail-fulldeps/proc-macro/derive-bad.rs b/src/test/compile-fail-fulldeps/proc-macro/derive-bad.rs index 4cc6b9f984c94..0e4ac9fe1eaf5 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/derive-bad.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/derive-bad.rs @@ -10,8 +10,6 @@ // aux-build:derive-bad.rs -#![feature(proc_macro)] - #[macro_use] extern crate derive_bad; diff --git a/src/test/compile-fail-fulldeps/proc-macro/derive-still-gated.rs b/src/test/compile-fail-fulldeps/proc-macro/derive-still-gated.rs index eb0bb00be9175..f36236c53562d 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/derive-still-gated.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/derive-still-gated.rs @@ -10,7 +10,6 @@ // aux-build:derive-a.rs -#![feature(proc_macro)] #![allow(warnings)] #[macro_use] diff --git a/src/test/compile-fail-fulldeps/proc-macro/expand-to-unstable-2.rs b/src/test/compile-fail-fulldeps/proc-macro/expand-to-unstable-2.rs index 4f4ed90f8fca2..e4fcbb117a505 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/expand-to-unstable-2.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/expand-to-unstable-2.rs @@ -10,7 +10,6 @@ // aux-build:derive-unstable-2.rs -#![feature(proc_macro)] #![allow(warnings)] #[macro_use] diff --git a/src/test/compile-fail-fulldeps/proc-macro/expand-to-unstable.rs b/src/test/compile-fail-fulldeps/proc-macro/expand-to-unstable.rs index 84ac776a765a2..836e336fc22f0 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/expand-to-unstable.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/expand-to-unstable.rs @@ -10,7 +10,6 @@ // aux-build:derive-unstable.rs -#![feature(proc_macro)] #![allow(warnings)] #[macro_use] diff --git a/src/test/compile-fail-fulldeps/proc-macro/export-macro.rs b/src/test/compile-fail-fulldeps/proc-macro/export-macro.rs index 48b73e7333185..477039bd7a2fa 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/export-macro.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/export-macro.rs @@ -11,7 +11,6 @@ // error-pattern: cannot export macro_rules! macros from a `proc-macro` crate #![crate_type = "proc-macro"] -#![feature(proc_macro)] #[macro_export] macro_rules! foo { diff --git a/src/test/compile-fail-fulldeps/proc-macro/feature-gate-1.rs b/src/test/compile-fail-fulldeps/proc-macro/feature-gate-1.rs deleted file mode 100644 index f5618fc6425e2..0000000000000 --- a/src/test/compile-fail-fulldeps/proc-macro/feature-gate-1.rs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 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 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// error-pattern: the `proc-macro` crate type is experimental - -#![crate_type = "proc-macro"] diff --git a/src/test/compile-fail-fulldeps/proc-macro/feature-gate-2.rs b/src/test/compile-fail-fulldeps/proc-macro/feature-gate-2.rs deleted file mode 100644 index 9c4053266f471..0000000000000 --- a/src/test/compile-fail-fulldeps/proc-macro/feature-gate-2.rs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 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 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -extern crate proc_macro; //~ ERROR: use of unstable library feature - -fn main() {} diff --git a/src/test/compile-fail-fulldeps/proc-macro/feature-gate-3.rs b/src/test/compile-fail-fulldeps/proc-macro/feature-gate-3.rs deleted file mode 100644 index bb6b575962250..0000000000000 --- a/src/test/compile-fail-fulldeps/proc-macro/feature-gate-3.rs +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 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 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -#![crate_type = "proc-macro"] - -#[proc_macro_derive(Foo)] //~ ERROR: is an experimental feature -pub fn foo() { -} diff --git a/src/test/compile-fail-fulldeps/proc-macro/feature-gate-4.rs b/src/test/compile-fail-fulldeps/proc-macro/feature-gate-4.rs deleted file mode 100644 index 6a8fcdf4ab782..0000000000000 --- a/src/test/compile-fail-fulldeps/proc-macro/feature-gate-4.rs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 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 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// aux-build:derive-a.rs - -#[macro_use] -extern crate derive_a; - -#[derive(A)] //~ ERROR custom derive macros are experimentally supported -struct S; diff --git a/src/test/compile-fail-fulldeps/proc-macro/feature-gate-5.rs b/src/test/compile-fail-fulldeps/proc-macro/feature-gate-5.rs deleted file mode 100644 index 672579ce8f14b..0000000000000 --- a/src/test/compile-fail-fulldeps/proc-macro/feature-gate-5.rs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 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 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -#[cfg(proc_macro)] //~ ERROR: experimental and subject to change -fn foo() {} diff --git a/src/test/compile-fail-fulldeps/proc-macro/illegal-proc-macro-derive-use.rs b/src/test/compile-fail-fulldeps/proc-macro/illegal-proc-macro-derive-use.rs index 70c8db5ddd2ec..f37980c5e0f54 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/illegal-proc-macro-derive-use.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/illegal-proc-macro-derive-use.rs @@ -8,8 +8,6 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(proc_macro, proc_macro_lib)] - extern crate proc_macro; #[proc_macro_derive(Foo)] diff --git a/src/test/compile-fail-fulldeps/proc-macro/import.rs b/src/test/compile-fail-fulldeps/proc-macro/import.rs index 8f907183cc39b..fae2439344fb0 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/import.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/import.rs @@ -10,7 +10,6 @@ // aux-build:derive-a.rs -#![feature(proc_macro)] #![allow(warnings)] #[macro_use] diff --git a/src/test/compile-fail-fulldeps/proc-macro/issue-37788.rs b/src/test/compile-fail-fulldeps/proc-macro/issue-37788.rs index 6d1030026dba2..691c280580122 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/issue-37788.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/issue-37788.rs @@ -10,8 +10,6 @@ // aux-build:derive-a-b.rs -#![feature(proc_macro)] - #[macro_use] extern crate derive_a_b; diff --git a/src/test/compile-fail-fulldeps/proc-macro/item-error.rs b/src/test/compile-fail-fulldeps/proc-macro/item-error.rs index 2a68accf91f71..4133e75e3a62d 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/item-error.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/item-error.rs @@ -10,7 +10,6 @@ // aux-build:derive-b.rs -#![feature(proc_macro)] #![allow(warnings)] #[macro_use] diff --git a/src/test/compile-fail-fulldeps/proc-macro/load-panic.rs b/src/test/compile-fail-fulldeps/proc-macro/load-panic.rs index 39c27e82fa5b3..f9906b650fb87 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/load-panic.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/load-panic.rs @@ -10,8 +10,6 @@ // aux-build:derive-panic.rs -#![feature(proc_macro)] - #[macro_use] extern crate derive_panic; diff --git a/src/test/compile-fail-fulldeps/proc-macro/proc-macro-attributes.rs b/src/test/compile-fail-fulldeps/proc-macro/proc-macro-attributes.rs index 651a277d4abd5..4ad1cf79d61c6 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/proc-macro-attributes.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/proc-macro-attributes.rs @@ -10,7 +10,6 @@ // aux-build:derive-b.rs -#![feature(proc_macro)] #![allow(warnings)] #[macro_use] diff --git a/src/test/compile-fail-fulldeps/proc-macro/pub-at-crate-root.rs b/src/test/compile-fail-fulldeps/proc-macro/pub-at-crate-root.rs index 2bf25892c44d2..238dde5160cd4 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/pub-at-crate-root.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/pub-at-crate-root.rs @@ -9,7 +9,6 @@ // except according to those terms. #![crate_type = "proc-macro"] -#![feature(proc_macro, proc_macro_lib)] extern crate proc_macro; diff --git a/src/test/compile-fail-fulldeps/proc-macro/shadow-builtin.rs b/src/test/compile-fail-fulldeps/proc-macro/shadow-builtin.rs index 1bcd4b15eb863..8c5affb7b5ab3 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/shadow-builtin.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/shadow-builtin.rs @@ -9,7 +9,6 @@ // except according to those terms. #![crate_type = "proc-macro"] -#![feature(proc_macro, proc_macro_lib)] extern crate proc_macro; diff --git a/src/test/compile-fail-fulldeps/proc-macro/shadow.rs b/src/test/compile-fail-fulldeps/proc-macro/shadow.rs index dc828fbf7d160..d76cf003ed14d 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/shadow.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/shadow.rs @@ -10,8 +10,6 @@ // aux-build:derive-a.rs -#![feature(proc_macro)] - #[macro_use] extern crate derive_a; #[macro_use] diff --git a/src/test/compile-fail-fulldeps/proc-macro/signature.rs b/src/test/compile-fail-fulldeps/proc-macro/signature.rs index b7df9489dff30..6d6b5a23e941f 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/signature.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/signature.rs @@ -9,7 +9,6 @@ // except according to those terms. #![crate_type = "proc-macro"] -#![feature(proc_macro, proc_macro_lib)] #![allow(warnings)] extern crate proc_macro; diff --git a/src/test/run-make/issue-37839/a.rs b/src/test/run-make/issue-37839/a.rs index 3dff45388c75b..052317438c2f7 100644 --- a/src/test/run-make/issue-37839/a.rs +++ b/src/test/run-make/issue-37839/a.rs @@ -8,6 +8,5 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(proc_macro)] #![allow(unused)] #![crate_type = "proc-macro"] diff --git a/src/test/run-make/issue-37893/a.rs b/src/test/run-make/issue-37893/a.rs index 3dff45388c75b..052317438c2f7 100644 --- a/src/test/run-make/issue-37893/a.rs +++ b/src/test/run-make/issue-37893/a.rs @@ -8,6 +8,5 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(proc_macro)] #![allow(unused)] #![crate_type = "proc-macro"] diff --git a/src/test/run-make/issue-38237/foo.rs b/src/test/run-make/issue-38237/foo.rs index c291ffbf4e856..6fb315731de17 100644 --- a/src/test/run-make/issue-38237/foo.rs +++ b/src/test/run-make/issue-38237/foo.rs @@ -9,7 +9,6 @@ // except according to those terms. #![crate_type = "proc-macro"] -#![feature(proc_macro, proc_macro_lib)] extern crate proc_macro; diff --git a/src/test/run-make/rustc-macro-dep-files/bar.rs b/src/test/run-make/rustc-macro-dep-files/bar.rs index a2db98049d287..03330c3d1700d 100644 --- a/src/test/run-make/rustc-macro-dep-files/bar.rs +++ b/src/test/run-make/rustc-macro-dep-files/bar.rs @@ -8,8 +8,6 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(proc_macro)] - #[macro_use] extern crate foo; diff --git a/src/test/run-make/rustc-macro-dep-files/foo.rs b/src/test/run-make/rustc-macro-dep-files/foo.rs index bd9e9158c5052..2f2524f6ef115 100644 --- a/src/test/run-make/rustc-macro-dep-files/foo.rs +++ b/src/test/run-make/rustc-macro-dep-files/foo.rs @@ -9,8 +9,6 @@ // except according to those terms. #![crate_type = "proc-macro"] -#![feature(proc_macro)] -#![feature(proc_macro_lib)] extern crate proc_macro; diff --git a/src/test/run-pass-fulldeps/proc-macro/add-impl.rs b/src/test/run-pass-fulldeps/proc-macro/add-impl.rs index e82282f3d8c58..7ea7ceafc2876 100644 --- a/src/test/run-pass-fulldeps/proc-macro/add-impl.rs +++ b/src/test/run-pass-fulldeps/proc-macro/add-impl.rs @@ -10,8 +10,6 @@ // aux-build:add-impl.rs -#![feature(proc_macro)] - #[macro_use] extern crate add_impl; diff --git a/src/test/run-pass-fulldeps/proc-macro/append-impl.rs b/src/test/run-pass-fulldeps/proc-macro/append-impl.rs index f062111df9daf..591f3331d28c0 100644 --- a/src/test/run-pass-fulldeps/proc-macro/append-impl.rs +++ b/src/test/run-pass-fulldeps/proc-macro/append-impl.rs @@ -10,7 +10,6 @@ // aux-build:append-impl.rs -#![feature(proc_macro)] #![allow(warnings)] #[macro_use] diff --git a/src/test/run-pass-fulldeps/proc-macro/auxiliary/add-impl.rs b/src/test/run-pass-fulldeps/proc-macro/auxiliary/add-impl.rs index 1d34049db249f..3959eccd81e35 100644 --- a/src/test/run-pass-fulldeps/proc-macro/auxiliary/add-impl.rs +++ b/src/test/run-pass-fulldeps/proc-macro/auxiliary/add-impl.rs @@ -11,8 +11,6 @@ // no-prefer-dynamic #![crate_type = "proc-macro"] -#![feature(proc_macro)] -#![feature(proc_macro_lib)] extern crate proc_macro; diff --git a/src/test/run-pass-fulldeps/proc-macro/auxiliary/append-impl.rs b/src/test/run-pass-fulldeps/proc-macro/auxiliary/append-impl.rs index 7260bc4a5e7bb..fdce709e5bad6 100644 --- a/src/test/run-pass-fulldeps/proc-macro/auxiliary/append-impl.rs +++ b/src/test/run-pass-fulldeps/proc-macro/auxiliary/append-impl.rs @@ -11,8 +11,6 @@ // force-host // no-prefer-dynamic -#![feature(proc_macro)] -#![feature(proc_macro_lib)] #![crate_type = "proc-macro"] extern crate proc_macro; diff --git a/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-a.rs b/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-a.rs index eaada5542274c..a253c6224aa68 100644 --- a/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-a.rs +++ b/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-a.rs @@ -11,8 +11,6 @@ // no-prefer-dynamic #![crate_type = "proc-macro"] -#![feature(proc_macro)] -#![feature(proc_macro_lib)] extern crate proc_macro; diff --git a/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-atob.rs b/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-atob.rs index a942adc4c8020..713fb7d10f2fd 100644 --- a/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-atob.rs +++ b/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-atob.rs @@ -11,8 +11,6 @@ // no-prefer-dynamic #![crate_type = "proc-macro"] -#![feature(proc_macro)] -#![feature(proc_macro_lib)] extern crate proc_macro; diff --git a/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-b.rs b/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-b.rs index a02b798c8023e..c18cda895325b 100644 --- a/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-b.rs +++ b/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-b.rs @@ -11,8 +11,6 @@ // no-prefer-dynamic #![crate_type = "proc-macro"] -#![feature(proc_macro)] -#![feature(proc_macro_lib)] extern crate proc_macro; diff --git a/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-ctod.rs b/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-ctod.rs index 50f1a390b2939..19caafd17b5f3 100644 --- a/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-ctod.rs +++ b/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-ctod.rs @@ -11,8 +11,6 @@ // no-prefer-dynamic #![crate_type = "proc-macro"] -#![feature(proc_macro)] -#![feature(proc_macro_lib)] extern crate proc_macro; diff --git a/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-nothing.rs b/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-nothing.rs index a9257cb4c8b78..cfe428bf5f323 100644 --- a/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-nothing.rs +++ b/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-nothing.rs @@ -11,8 +11,6 @@ // no-prefer-dynamic #![crate_type = "proc-macro"] -#![feature(proc_macro)] -#![feature(proc_macro_lib)] extern crate proc_macro; diff --git a/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-reexport.rs b/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-reexport.rs index 05a6cbec69c5a..fae2d27ab6b75 100644 --- a/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-reexport.rs +++ b/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-reexport.rs @@ -10,7 +10,7 @@ // ignore-test -#![feature(macro_reexport, proc_macro)] +#![feature(macro_reexport)] #[macro_reexport(A)] extern crate derive_a; diff --git a/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-same-struct.rs b/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-same-struct.rs index bc8a0d575913b..a2c25ae50e8ec 100644 --- a/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-same-struct.rs +++ b/src/test/run-pass-fulldeps/proc-macro/auxiliary/derive-same-struct.rs @@ -11,9 +11,6 @@ // no-prefer-dynamic // compile-flags:--crate-type proc-macro -#![feature(proc_macro)] -#![feature(proc_macro_lib)] - extern crate proc_macro; use proc_macro::TokenStream; diff --git a/src/test/run-pass-fulldeps/proc-macro/auxiliary/double.rs b/src/test/run-pass-fulldeps/proc-macro/auxiliary/double.rs index 969ed91f595e6..f4404b737f952 100644 --- a/src/test/run-pass-fulldeps/proc-macro/auxiliary/double.rs +++ b/src/test/run-pass-fulldeps/proc-macro/auxiliary/double.rs @@ -11,8 +11,6 @@ // no-prefer-dynamic #![crate_type = "proc-macro"] -#![feature(proc_macro)] -#![feature(proc_macro_lib)] extern crate proc_macro; diff --git a/src/test/run-pass-fulldeps/proc-macro/auxiliary/expand-with-a-macro.rs b/src/test/run-pass-fulldeps/proc-macro/auxiliary/expand-with-a-macro.rs index 50eaf035962f1..e6831b6bfdf65 100644 --- a/src/test/run-pass-fulldeps/proc-macro/auxiliary/expand-with-a-macro.rs +++ b/src/test/run-pass-fulldeps/proc-macro/auxiliary/expand-with-a-macro.rs @@ -11,8 +11,6 @@ // no-prefer-dynamic #![crate_type = "proc-macro"] -#![feature(proc_macro)] -#![feature(proc_macro_lib)] #![deny(warnings)] extern crate proc_macro; diff --git a/src/test/run-pass-fulldeps/proc-macro/crate-var.rs b/src/test/run-pass-fulldeps/proc-macro/crate-var.rs index d19b49ab18c07..ba1417ecb56e4 100644 --- a/src/test/run-pass-fulldeps/proc-macro/crate-var.rs +++ b/src/test/run-pass-fulldeps/proc-macro/crate-var.rs @@ -10,7 +10,6 @@ // aux-build:double.rs -#![feature(proc_macro)] #![allow(unused)] #[macro_use] diff --git a/src/test/run-pass-fulldeps/proc-macro/derive-b.rs b/src/test/run-pass-fulldeps/proc-macro/derive-b.rs index f5bb93f012490..f1e1626ddf8ca 100644 --- a/src/test/run-pass-fulldeps/proc-macro/derive-b.rs +++ b/src/test/run-pass-fulldeps/proc-macro/derive-b.rs @@ -11,8 +11,6 @@ // aux-build:derive-b.rs // ignore-stage1 -#![feature(proc_macro)] - #[macro_use] extern crate derive_b; diff --git a/src/test/run-pass-fulldeps/proc-macro/derive-same-struct.rs b/src/test/run-pass-fulldeps/proc-macro/derive-same-struct.rs index 608f86bca5768..ce3ba60b0ecf4 100644 --- a/src/test/run-pass-fulldeps/proc-macro/derive-same-struct.rs +++ b/src/test/run-pass-fulldeps/proc-macro/derive-same-struct.rs @@ -10,8 +10,6 @@ // aux-build:derive-same-struct.rs -#![feature(proc_macro)] - #[macro_use] extern crate derive_same_struct; diff --git a/src/test/run-pass-fulldeps/proc-macro/derive-test.rs b/src/test/run-pass-fulldeps/proc-macro/derive-test.rs index 2f44515a873de..a07e8b6cd7e64 100644 --- a/src/test/run-pass-fulldeps/proc-macro/derive-test.rs +++ b/src/test/run-pass-fulldeps/proc-macro/derive-test.rs @@ -12,8 +12,6 @@ // compile-flags: --test #![crate_type = "proc-macro"] -#![feature(proc_macro)] -#![feature(proc_macro, proc_macro_lib)] extern crate proc_macro; diff --git a/src/test/run-pass-fulldeps/proc-macro/expand-with-a-macro.rs b/src/test/run-pass-fulldeps/proc-macro/expand-with-a-macro.rs index 16f3535adae3b..4ccd4615fb609 100644 --- a/src/test/run-pass-fulldeps/proc-macro/expand-with-a-macro.rs +++ b/src/test/run-pass-fulldeps/proc-macro/expand-with-a-macro.rs @@ -11,7 +11,6 @@ // aux-build:expand-with-a-macro.rs // ignore-stage1 -#![feature(proc_macro)] #![deny(warnings)] #[macro_use] diff --git a/src/test/run-pass-fulldeps/proc-macro/load-two.rs b/src/test/run-pass-fulldeps/proc-macro/load-two.rs index 431c8c5902749..d15a83a2cbe43 100644 --- a/src/test/run-pass-fulldeps/proc-macro/load-two.rs +++ b/src/test/run-pass-fulldeps/proc-macro/load-two.rs @@ -11,8 +11,6 @@ // aux-build:derive-atob.rs // aux-build:derive-ctod.rs -#![feature(proc_macro)] - #[macro_use] extern crate derive_atob; #[macro_use] diff --git a/src/test/run-pass-fulldeps/proc-macro/smoke.rs b/src/test/run-pass-fulldeps/proc-macro/smoke.rs index cd7edb726447b..54d651df1f9af 100644 --- a/src/test/run-pass-fulldeps/proc-macro/smoke.rs +++ b/src/test/run-pass-fulldeps/proc-macro/smoke.rs @@ -11,8 +11,6 @@ // aux-build:derive-a.rs // ignore-stage1 -#![feature(proc_macro)] - #[macro_use] extern crate derive_a; diff --git a/src/test/run-pass-fulldeps/proc-macro/struct-field-macro.rs b/src/test/run-pass-fulldeps/proc-macro/struct-field-macro.rs index 818308b05a44e..c9056e08d4426 100644 --- a/src/test/run-pass-fulldeps/proc-macro/struct-field-macro.rs +++ b/src/test/run-pass-fulldeps/proc-macro/struct-field-macro.rs @@ -11,8 +11,6 @@ // aux-build:derive-nothing.rs // ignore-stage1 -#![feature(proc_macro)] - #[macro_use] extern crate derive_nothing; diff --git a/src/test/run-pass-fulldeps/proc-macro/use-reexport.rs b/src/test/run-pass-fulldeps/proc-macro/use-reexport.rs index 7f09d8faebbb5..f0a1bfe652857 100644 --- a/src/test/run-pass-fulldeps/proc-macro/use-reexport.rs +++ b/src/test/run-pass-fulldeps/proc-macro/use-reexport.rs @@ -11,8 +11,6 @@ // aux-build:derive-a.rs // aux-build:derive-reexport.rs -#![feature(proc_macro)] - #[macro_use] extern crate derive_reexport; diff --git a/src/test/rustdoc/rustc-macro-crate.rs b/src/test/rustdoc/rustc-macro-crate.rs index fe80a90955045..dc28732b55ee2 100644 --- a/src/test/rustdoc/rustc-macro-crate.rs +++ b/src/test/rustdoc/rustc-macro-crate.rs @@ -10,8 +10,6 @@ // no-prefer-dynamic -#![feature(proc_macro)] -#![feature(proc_macro_lib)] #![crate_type = "proc-macro"] extern crate proc_macro;