]> git.lizzy.rs Git - rust.git/commitdiff
Enable macro modularization implicitly if one of "advanced" macro features is enabled
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>
Sat, 4 Aug 2018 00:37:14 +0000 (03:37 +0300)
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>
Mon, 6 Aug 2018 20:22:31 +0000 (23:22 +0300)
Do not mark all builtin attributes as used when macro modularization is enabled

38 files changed:
src/libsyntax/feature_gate.rs
src/test/compile-fail-fulldeps/proc-macro/attr-invalid-exprs.rs
src/test/compile-fail-fulldeps/proc-macro/attr-stmt-expr.rs
src/test/compile-fail-fulldeps/proc-macro/issue-50493.rs
src/test/compile-fail-fulldeps/proc-macro/lints_in_proc_macros.rs
src/test/compile-fail-fulldeps/proc-macro/proc-macro-custom-attr-mutex.rs
src/test/compile-fail-fulldeps/proc-macro/proc-macro-gates.rs
src/test/compile-fail-fulldeps/proc-macro/proc-macro-gates2.rs
src/test/compile-fail/macro-with-seps-err-msg.rs
src/test/compile-fail/unknown-tool-name.rs
src/test/run-pass-fulldeps/auxiliary/cond_plugin.rs
src/test/run-pass-fulldeps/auxiliary/hello_macro.rs
src/test/run-pass-fulldeps/auxiliary/proc_macro_def.rs
src/test/run-pass-fulldeps/macro-quote-cond.rs
src/test/run-pass-fulldeps/macro-quote-test.rs
src/test/run-pass-fulldeps/proc-macro/attr-stmt-expr.rs
src/test/run-pass-fulldeps/proc-macro/auxiliary/count_compound_ops.rs
src/test/run-pass-fulldeps/proc-macro/auxiliary/hygiene_example_codegen.rs
src/test/run-pass-fulldeps/proc-macro/bang-macro.rs
src/test/run-pass-fulldeps/proc-macro/call-site.rs
src/test/run-pass-fulldeps/proc-macro/count_compound_ops.rs
src/test/run-pass-fulldeps/proc-macro/derive-b.rs
src/test/run-pass-fulldeps/proc-macro/hygiene_example.rs
src/test/run-pass-fulldeps/proc-macro/macros-in-extern.rs
src/test/run-pass-fulldeps/proc_macro.rs
src/test/ui-fulldeps/auxiliary/attr_proc_macro.rs
src/test/ui-fulldeps/auxiliary/bang_proc_macro.rs
src/test/ui-fulldeps/auxiliary/lifetimes.rs
src/test/ui-fulldeps/lifetimes.rs
src/test/ui-fulldeps/proc-macro/auxiliary/generate-mod.rs
src/test/ui-fulldeps/proc-macro/generate-mod.rs
src/test/ui-fulldeps/proc-macro/invalid-attributes.rs
src/test/ui-fulldeps/proc-macro/invalid-attributes.stderr
src/test/ui-fulldeps/proc-macro/macro-namespace-reserved.rs
src/test/ui-fulldeps/proc-macro/non-root.rs
src/test/ui-fulldeps/proc-macro/non-root.stderr
src/test/ui-fulldeps/proc-macro/three-equals.rs
src/test/ui/imports/macros.rs

index 3f4ee8342565cf1e9ebb1d20b9d36bd91fd64ddb..a7a29edf0a04fbfaa166119d1307ab3ad7ee9415 100644 (file)
@@ -83,10 +83,14 @@ pub fn walk_feature_fields<F>(&self, mut f: F)
             }
 
             pub fn use_extern_macros(&self) -> bool {
-                // The `decl_macro`, `tool_attributes` and `custom_attributes`
-                // features imply `use_extern_macros`.
+                // A number of "advanced" macro features enable
+                // macro modularization (`use_extern_macros`) implicitly.
                 self.use_extern_macros || self.decl_macro ||
-                self.tool_attributes || self.custom_attribute
+                self.tool_attributes || self.custom_attribute ||
+                self.macros_in_extern || self.proc_macro_path_invoc ||
+                self.proc_macro_mod || self.proc_macro_expr ||
+                self.proc_macro_non_items || self.proc_macro_gen ||
+                self.stmt_expr_attributes
             }
         }
     };
@@ -700,7 +704,7 @@ pub fn is_builtin_attr_name(name: ast::Name) -> bool {
 }
 
 pub fn is_builtin_attr(attr: &ast::Attribute) -> bool {
-    BUILTIN_ATTRIBUTES.iter().any(|&(builtin_name, _, _)| attr.check_name(builtin_name)) ||
+    BUILTIN_ATTRIBUTES.iter().any(|&(builtin_name, _, _)| attr.path == builtin_name) ||
     attr.name().as_str().starts_with("rustc_")
 }
 
index 64af21dbe10dcc8f286716578b9010022ad49b3b..91b72510e3e540fb63738ee2b8e9c3325d0ecf98 100644 (file)
@@ -13,7 +13,7 @@
 
 //! Attributes producing expressions in invalid locations
 
-#![feature(use_extern_macros, stmt_expr_attributes, proc_macro_expr)]
+#![feature(stmt_expr_attributes, proc_macro_expr)]
 
 extern crate attr_stmt_expr;
 use attr_stmt_expr::{duplicate, no_output};
index 05b5c918ef0156ae86195c3b1c9caabeeb312aa3..52b2a473ecd75c277d18b5ce64c790e55056894f 100644 (file)
@@ -11,7 +11,7 @@
 // aux-build:attr-stmt-expr.rs
 // ignore-stage1
 
-#![feature(use_extern_macros, proc_macro_expr)]
+#![feature(proc_macro_expr)]
 
 extern crate attr_stmt_expr;
 use attr_stmt_expr::{expect_let, expect_print_stmt, expect_expr, expect_print_expr};
index 51112f202c8970fee02c728b89247125456983a4..eaa64c6ba3692a2cc4d71351a764c096e75fd5e4 100644 (file)
@@ -11,8 +11,6 @@
 // aux-build:issue_50493.rs
 // ignore-stage1
 
-#![feature(proc_macro)]
-
 #[macro_use]
 extern crate issue_50493;
 
index 6473b69b4591d3169163caed83305dbe33d85dfd..6e9d231ea99a4513468f702429d22510eac99489 100644 (file)
@@ -11,7 +11,7 @@
 // aux-build:bang_proc_macro2.rs
 // ignore-stage1
 
-#![feature(use_extern_macros, proc_macro_non_items)]
+#![feature(proc_macro_non_items)]
 #![allow(unused_macros)]
 
 extern crate bang_proc_macro2;
index 9ed665b6e68f69dcdffb3cc05931384ff5205bf8..8640aa2387fd12c1336a6314e31d0fd9fc999388 100644 (file)
@@ -11,7 +11,7 @@
 // aux-build:attr_proc_macro.rs
 // ignore-tidy-linelength
 
-#![feature(use_extern_macros, custom_attribute)]
+#![feature(custom_attribute)]
 //~^ ERROR Cannot use `#![feature(use_extern_macros)]` and `#![feature(custom_attribute)] at the same time
 
 extern crate attr_proc_macro;
index 51b1bfca294e48c05678628c10354ea30e96335c..9a0171c2ae5ea205296d129bfae6d8c965c104fc 100644 (file)
@@ -16,7 +16,7 @@
 // gate-test-proc_macro_mod
 // gate-test-proc_macro_gen
 
-#![feature(use_extern_macros, stmt_expr_attributes)]
+#![feature(stmt_expr_attributes)]
 
 extern crate proc_macro_gates as foo;
 
index ef6d4557f4cd746f7b59c6e107739929469fd91f..dc182414a1ddcc196a6500d5d299f193c5d8c760 100644 (file)
@@ -10,7 +10,7 @@
 
 // aux-build:proc-macro-gates.rs
 
-#![feature(use_extern_macros, stmt_expr_attributes)]
+#![feature(stmt_expr_attributes)]
 
 extern crate proc_macro_gates as foo;
 
index 6567a100d8c0664caedda024cc8b097dd9489514..1281adce5c58e694e8f55ef274433317c41961bd 100644 (file)
 
 // gate-test-use_extern_macros
 
-#![feature(proc_macro_path_invoc)]
-
 fn main() {
     globnar::brotz!(); //~ ERROR non-ident macro paths are experimental
-    #[derive(foo::Bar)] struct T; //~ ERROR non-ident macro paths are experimental
-    ::foo!(); //~ ERROR non-ident macro paths are experimental
 }
index c4d22e6d392102ab9489797e4e844d04ecc31663..99c336c28cd29c6db14a37e3c37594cf9ad39635 100644 (file)
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(use_extern_macros, proc_macro_path_invoc)]
+#![feature(proc_macro_path_invoc)]
 
 #[foo::bar] //~ ERROR failed to resolve. Use of undeclared type or module `foo`
 fn main() {}
index ec6f54fb1378f4d703bf1cb33edec5b78da1f725..94c5b208a370799733b8416904bec1b8dcff0053 100644 (file)
@@ -11,7 +11,7 @@
 // no-prefer-dynamic
 
 #![crate_type = "proc-macro"]
-#![feature(proc_macro, proc_macro_non_items)]
+#![feature(proc_macro_non_items)]
 
 extern crate proc_macro;
 
index 545eabe00ff2e339945d9f46efaf01e093745b76..b54543c73fbd21147e053ff0ffeb31a22fdc21aa 100644 (file)
@@ -11,7 +11,7 @@
 // no-prefer-dynamic
 
 #![crate_type = "proc-macro"]
-#![feature(use_extern_macros, proc_macro_non_items, proc_macro_quote)]
+#![feature(proc_macro_non_items, proc_macro_quote)]
 
 extern crate proc_macro;
 
index 9a5bffb92a4937112106c1fc937781d858df5d29..9faa7366ec5f19fba069c5db92945726f8487a1d 100644 (file)
@@ -11,7 +11,7 @@
 // no-prefer-dynamic
 
 #![crate_type = "proc-macro"]
-#![feature(proc_macro, proc_macro_non_items)]
+#![feature(proc_macro_non_items)]
 
 extern crate proc_macro;
 
index f1dcec8af6906a5478fabcce97cc7a8c58a690fe..3eb7e8cc9a46dfbb2ff6d4dc6ea38dfc91158ca4 100644 (file)
@@ -11,7 +11,7 @@
 // aux-build:cond_plugin.rs
 // ignore-stage1
 
-#![feature(use_extern_macros, proc_macro_non_items)]
+#![feature(proc_macro_non_items)]
 
 extern crate cond_plugin;
 
index 2349fa68c65f0b5ce28e5c12c0d260acf08ea800..1005a6bfc50c7fa00f29428bb52162bd25506df2 100644 (file)
@@ -13,7 +13,7 @@
 // aux-build:hello_macro.rs
 // ignore-stage1
 
-#![feature(use_extern_macros, proc_macro_non_items, proc_macro_gen)]
+#![feature(proc_macro_non_items, proc_macro_gen)]
 
 extern crate hello_macro;
 
index 3356828c04b990cdc98fa68d919ac1d44f73b856..b5272e6608bbfd31d47d7ca7407d3ea94092f66c 100644 (file)
@@ -11,7 +11,7 @@
 // aux-build:attr-stmt-expr.rs
 // ignore-stage1
 
-#![feature(use_extern_macros, stmt_expr_attributes, proc_macro_expr)]
+#![feature(stmt_expr_attributes, proc_macro_expr)]
 
 extern crate attr_stmt_expr;
 use attr_stmt_expr::{expect_let, expect_print_stmt, expect_expr, expect_print_expr,
index c6bcc37ac4a5480a0a0bd003c33bf538cf191b79..a84e029f9d87d22dc56dd9ce2f46f6625c67633c 100644 (file)
@@ -10,7 +10,7 @@
 
 // no-prefer-dynamic
 
-#![feature(proc_macro_non_items, proc_macro_quote, use_extern_macros)]
+#![feature(proc_macro_non_items, proc_macro_quote)]
 #![crate_type = "proc-macro"]
 
 extern crate proc_macro;
index 8f95bdd9c3919e57da49dac4d37e218430357784..43c1d5fcc8d4996a653e383322d17cde24771941 100644 (file)
@@ -10,7 +10,7 @@
 
 // no-prefer-dynamic
 
-#![feature(use_extern_macros, proc_macro_quote, proc_macro_non_items)]
+#![feature(proc_macro_quote, proc_macro_non_items)]
 #![crate_type = "proc-macro"]
 
 extern crate proc_macro as proc_macro_renamed; // This does not break `quote!`
index f9d17a9decbb6b5134775e8f0ca018dfdfb9f02f..955b6ab986d07b3575e819f1c6b7804f97a5af92 100644 (file)
@@ -11,7 +11,7 @@
 // aux-build:bang-macro.rs
 // ignore-stage1
 
-#![feature(use_extern_macros, proc_macro_non_items)]
+#![feature(proc_macro_non_items)]
 
 extern crate bang_macro;
 use bang_macro::rewrite;
index 505994f66e7e553c339ccfc49e7a59b7b3064b01..dfe97eb587cfb9f1cb6c60406419b880014cd51d 100644 (file)
@@ -11,7 +11,7 @@
 // aux-build:call-site.rs
 // ignore-stage1
 
-#![feature(proc_macro_non_items, use_extern_macros)]
+#![feature(proc_macro_non_items)]
 
 extern crate call_site;
 use call_site::*;
index f4a51d0624ae6152af9ed255e8abda7eb365d3ba..6601d66e586a3aa7e961ccdd47e0772dab59393e 100644 (file)
@@ -11,7 +11,7 @@
 // aux-build:count_compound_ops.rs
 // ignore-stage1
 
-#![feature(use_extern_macros, proc_macro_non_items)]
+#![feature(proc_macro_non_items)]
 
 extern crate count_compound_ops;
 use count_compound_ops::count_compound_ops;
index 35d5084d9f650a3aa3a9bc8d09596be450f2a62d..4a7c8f3e8343baa79f95ecadde8255fe28df7233 100644 (file)
@@ -11,7 +11,7 @@
 // aux-build:derive-b.rs
 // ignore-stage1
 
-#![feature(use_extern_macros, proc_macro_path_invoc)]
+#![feature(proc_macro_path_invoc)]
 
 extern crate derive_b;
 
index 5ee164415a1a583770f2f6aa1a21e674483e27e3..579e8c337733af325147ecb3fbb7ff98e17de121 100644 (file)
@@ -12,7 +12,7 @@
 // aux-build:hygiene_example.rs
 // ignore-stage1
 
-#![feature(use_extern_macros, proc_macro_non_items)]
+#![feature(proc_macro_non_items)]
 
 extern crate hygiene_example;
 use hygiene_example::hello;
index e5f8c844b6b70cd4bac6b79b589cf1263533569d..bd76cc380544fc06121fd0275097d53c7781d1ab 100644 (file)
@@ -12,7 +12,7 @@
 // ignore-stage1
 // ignore-wasm32
 
-#![feature(use_extern_macros, macros_in_extern)]
+#![feature(macros_in_extern)]
 
 extern crate test_macros;
 
index 46b62d7e34a5284e5b7b1914278ac1024914736c..c9d7b0423ec5929c643639a146809c2056066508 100644 (file)
@@ -12,7 +12,7 @@
 // ignore-stage1
 // ignore-cross-compile
 
-#![feature(use_extern_macros, proc_macro_non_items)]
+#![feature(proc_macro_non_items)]
 
 extern crate proc_macro_def;
 
index db0c19e96f8211a2996bb6df3e21b8e21b52e0db..679cb7728680ddbf26eefe2887c77cd9f7191a09 100644 (file)
@@ -10,7 +10,7 @@
 
 // force-host
 // no-prefer-dynamic
-#![feature(proc_macro)]
+
 #![crate_type = "proc-macro"]
 
 extern crate proc_macro;
index 89ac11b309d751bc13d46f10996895ff8abe75da..6484725814a10b75581b8fa23a92e263dc695954 100644 (file)
@@ -10,7 +10,7 @@
 
 // force-host
 // no-prefer-dynamic
-#![feature(proc_macro)]
+
 #![crate_type = "proc-macro"]
 
 extern crate proc_macro;
index ecf0a56edf7661d30162915e469b4fdf9d732948..fc59a622bfab039898c83e4e901195cfc38e102e 100644 (file)
@@ -10,7 +10,6 @@
 
 // no-prefer-dynamic
 
-#![feature(proc_macro)]
 #![crate_type = "proc-macro"]
 
 extern crate proc_macro;
index 3200e8fb2b1625b8245353317c09b29a877852e3..6879848d269b0cb7d3e68e84102cb6e5b53fe716 100644 (file)
@@ -10,7 +10,7 @@
 
 // aux-build:lifetimes.rs
 
-#![feature(use_extern_macros, proc_macro_non_items)]
+#![feature(proc_macro_non_items)]
 
 extern crate lifetimes;
 
index 632dba42ad00f21f037a19bb259322f3795ac7de..1ed8ef520273593334d11e649e1ed765876f1440 100644 (file)
@@ -11,7 +11,6 @@
 // run-pass
 // no-prefer-dynamic
 
-#![feature(proc_macro)]
 #![crate_type = "proc-macro"]
 
 extern crate proc_macro;
index ee0077c3ed3ff189f7f6ffd0bddcb89aef4a9bd5..b0cccd8728bd1f3427d3acb7105237a025ed9ac6 100644 (file)
@@ -12,7 +12,7 @@
 
 // aux-build:generate-mod.rs
 
-#![feature(use_extern_macros, proc_macro_gen, proc_macro_path_invoc)]
+#![feature(proc_macro_gen, proc_macro_path_invoc)]
 
 extern crate generate_mod;
 
index c06f98ed5ff4653c5dee14d9b708eddb0e2a4c62..8b940a0f40585a835334f28916eebd6d3526247d 100644 (file)
@@ -11,7 +11,6 @@
 // no-prefer-dynamic
 
 #![crate_type = "proc-macro"]
-#![feature(proc_macro)]
 
 extern crate proc_macro;
 
index c480bcb5df982d7a12fdb88131bb4b2773595cd1..5fd87362db23b2cf8ac39e99dbc996b387abcf6d 100644 (file)
@@ -1,35 +1,35 @@
 error: `#[proc_macro]` attribute does not take any arguments
-  --> $DIR/invalid-attributes.rs:20:1
+  --> $DIR/invalid-attributes.rs:19:1
    |
 LL | #[proc_macro = "test"] //~ ERROR: does not take any arguments
    | ^^^^^^^^^^^^^^^^^^^^^^
 
 error: `#[proc_macro]` attribute does not take any arguments
-  --> $DIR/invalid-attributes.rs:23:1
+  --> $DIR/invalid-attributes.rs:22:1
    |
 LL | #[proc_macro()] //~ ERROR: does not take any arguments
    | ^^^^^^^^^^^^^^^
 
 error: `#[proc_macro]` attribute does not take any arguments
-  --> $DIR/invalid-attributes.rs:26:1
+  --> $DIR/invalid-attributes.rs:25:1
    |
 LL | #[proc_macro(x)] //~ ERROR: does not take any arguments
    | ^^^^^^^^^^^^^^^^
 
 error: `#[proc_macro_attribute]` attribute does not take any arguments
-  --> $DIR/invalid-attributes.rs:29:1
+  --> $DIR/invalid-attributes.rs:28:1
    |
 LL | #[proc_macro_attribute = "test"] //~ ERROR: does not take any arguments
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: `#[proc_macro_attribute]` attribute does not take any arguments
-  --> $DIR/invalid-attributes.rs:32:1
+  --> $DIR/invalid-attributes.rs:31:1
    |
 LL | #[proc_macro_attribute()] //~ ERROR: does not take any arguments
    | ^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: `#[proc_macro_attribute]` attribute does not take any arguments
-  --> $DIR/invalid-attributes.rs:35:1
+  --> $DIR/invalid-attributes.rs:34:1
    |
 LL | #[proc_macro_attribute(x)] //~ ERROR: does not take any arguments
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
index 21d625ae09d8b7f1af5a0b9ef1ab2a181611f458..e7bb05de88c8a3f2f6f2f2538407851cec955400 100644 (file)
@@ -10,7 +10,7 @@
 
 // no-prefer-dynamic
 
-#![feature(proc_macro, decl_macro)]
+#![feature(decl_macro)]
 #![crate_type = "proc-macro"]
 
 extern crate proc_macro;
index 288c63b4c77811694125779873eee3d4e68c0b7f..2440488578814e89ce24021bf135fb85bd96afe7 100644 (file)
@@ -10,7 +10,6 @@
 
 // no-prefer-dynamic
 
-#![feature(proc_macro)]
 #![crate_type = "proc-macro"]
 
 extern crate proc_macro;
index 8c14f644d7a642b810c75f46de38d01e20f667b7..23222a2b85145dfa3d482e6c6142a1667bfdaece 100644 (file)
@@ -1,5 +1,5 @@
 error: functions tagged with `#[proc_macro]` must currently reside in the root of the crate
-  --> $DIR/non-root.rs:21:5
+  --> $DIR/non-root.rs:20:5
    |
 LL |     pub fn foo(arg: TokenStream) -> TokenStream { arg }
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
index ee5f3b33a0648c739473f33c12a4aac83985a6cd..f6b0e90da001440838c59f06db17b8f5fa8bbc15 100644 (file)
@@ -11,7 +11,7 @@
 // aux-build:three-equals.rs
 // ignore-stage1
 
-#![feature(use_extern_macros, proc_macro_non_items)]
+#![feature(proc_macro_non_items)]
 
 extern crate three_equals;
 
index 5d6a11913849a70175aa3a6da954d956ecd73ed4..ed5907800e9de7367618d1f9d158e7c459aca6d4 100644 (file)
@@ -10,7 +10,7 @@
 
 // aux-build:two_macros.rs
 
-#![feature(item_like_imports, use_extern_macros)]
+#![feature(use_extern_macros)]
 
 extern crate two_macros; // two identity macros `m` and `n`