Skip to content

Commit cb64672

Browse files
committed
Enable macro modularization implicitly if one of "advanced" macro features is enabled
Do not mark all builtin attributes as used when macro modularization is enabled
1 parent f60d96a commit cb64672

38 files changed

+44
-50
lines changed

src/libsyntax/feature_gate.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,14 @@ macro_rules! declare_features {
8383
}
8484

8585
pub fn use_extern_macros(&self) -> bool {
86-
// The `decl_macro`, `tool_attributes` and `custom_attributes`
87-
// features imply `use_extern_macros`.
86+
// A number of "advanced" macro features enable
87+
// macro modularization (`use_extern_macros`) implicitly.
8888
self.use_extern_macros || self.decl_macro ||
89-
self.tool_attributes || self.custom_attribute
89+
self.tool_attributes || self.custom_attribute ||
90+
self.macros_in_extern || self.proc_macro_path_invoc ||
91+
self.proc_macro_mod || self.proc_macro_expr ||
92+
self.proc_macro_non_items || self.proc_macro_gen ||
93+
self.stmt_expr_attributes
9094
}
9195
}
9296
};
@@ -700,7 +704,7 @@ pub fn is_builtin_attr_name(name: ast::Name) -> bool {
700704
}
701705

702706
pub fn is_builtin_attr(attr: &ast::Attribute) -> bool {
703-
BUILTIN_ATTRIBUTES.iter().any(|&(builtin_name, _, _)| attr.check_name(builtin_name)) ||
707+
BUILTIN_ATTRIBUTES.iter().any(|&(builtin_name, _, _)| attr.path == builtin_name) ||
704708
attr.name().as_str().starts_with("rustc_")
705709
}
706710

src/test/compile-fail-fulldeps/proc-macro/attr-invalid-exprs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
//! Attributes producing expressions in invalid locations
1515
16-
#![feature(use_extern_macros, stmt_expr_attributes, proc_macro_expr)]
16+
#![feature(stmt_expr_attributes, proc_macro_expr)]
1717

1818
extern crate attr_stmt_expr;
1919
use attr_stmt_expr::{duplicate, no_output};

src/test/compile-fail-fulldeps/proc-macro/attr-stmt-expr.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// aux-build:attr-stmt-expr.rs
1212
// ignore-stage1
1313

14-
#![feature(use_extern_macros, proc_macro_expr)]
14+
#![feature(proc_macro_expr)]
1515

1616
extern crate attr_stmt_expr;
1717
use attr_stmt_expr::{expect_let, expect_print_stmt, expect_expr, expect_print_expr};

src/test/compile-fail-fulldeps/proc-macro/issue-50493.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
// aux-build:issue_50493.rs
1212
// ignore-stage1
1313

14-
#![feature(proc_macro)]
15-
1614
#[macro_use]
1715
extern crate issue_50493;
1816

src/test/compile-fail-fulldeps/proc-macro/lints_in_proc_macros.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// aux-build:bang_proc_macro2.rs
1212
// ignore-stage1
1313

14-
#![feature(use_extern_macros, proc_macro_non_items)]
14+
#![feature(proc_macro_non_items)]
1515
#![allow(unused_macros)]
1616

1717
extern crate bang_proc_macro2;

src/test/compile-fail-fulldeps/proc-macro/proc-macro-custom-attr-mutex.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// aux-build:attr_proc_macro.rs
1212
// ignore-tidy-linelength
1313

14-
#![feature(use_extern_macros, custom_attribute)]
14+
#![feature(custom_attribute)]
1515
//~^ ERROR Cannot use `#![feature(use_extern_macros)]` and `#![feature(custom_attribute)] at the same time
1616

1717
extern crate attr_proc_macro;

src/test/compile-fail-fulldeps/proc-macro/proc-macro-gates.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
// gate-test-proc_macro_mod
1717
// gate-test-proc_macro_gen
1818

19-
#![feature(use_extern_macros, stmt_expr_attributes)]
19+
#![feature(stmt_expr_attributes)]
2020

2121
extern crate proc_macro_gates as foo;
2222

src/test/compile-fail-fulldeps/proc-macro/proc-macro-gates2.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// aux-build:proc-macro-gates.rs
1212

13-
#![feature(use_extern_macros, stmt_expr_attributes)]
13+
#![feature(stmt_expr_attributes)]
1414

1515
extern crate proc_macro_gates as foo;
1616

src/test/compile-fail/macro-with-seps-err-msg.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,6 @@
1010

1111
// gate-test-use_extern_macros
1212

13-
#![feature(proc_macro_path_invoc)]
14-
1513
fn main() {
1614
globnar::brotz!(); //~ ERROR non-ident macro paths are experimental
17-
#[derive(foo::Bar)] struct T; //~ ERROR non-ident macro paths are experimental
18-
::foo!(); //~ ERROR non-ident macro paths are experimental
1915
}

src/test/compile-fail/unknown-tool-name.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
#![feature(use_extern_macros, proc_macro_path_invoc)]
11+
#![feature(proc_macro_path_invoc)]
1212

1313
#[foo::bar] //~ ERROR failed to resolve. Use of undeclared type or module `foo`
1414
fn main() {}

src/test/run-pass-fulldeps/auxiliary/cond_plugin.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// no-prefer-dynamic
1212

1313
#![crate_type = "proc-macro"]
14-
#![feature(proc_macro, proc_macro_non_items)]
14+
#![feature(proc_macro_non_items)]
1515

1616
extern crate proc_macro;
1717

src/test/run-pass-fulldeps/auxiliary/hello_macro.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// no-prefer-dynamic
1212

1313
#![crate_type = "proc-macro"]
14-
#![feature(use_extern_macros, proc_macro_non_items, proc_macro_quote)]
14+
#![feature(proc_macro_non_items, proc_macro_quote)]
1515

1616
extern crate proc_macro;
1717

src/test/run-pass-fulldeps/auxiliary/proc_macro_def.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// no-prefer-dynamic
1212

1313
#![crate_type = "proc-macro"]
14-
#![feature(proc_macro, proc_macro_non_items)]
14+
#![feature(proc_macro_non_items)]
1515

1616
extern crate proc_macro;
1717

src/test/run-pass-fulldeps/macro-quote-cond.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// aux-build:cond_plugin.rs
1212
// ignore-stage1
1313

14-
#![feature(use_extern_macros, proc_macro_non_items)]
14+
#![feature(proc_macro_non_items)]
1515

1616
extern crate cond_plugin;
1717

src/test/run-pass-fulldeps/macro-quote-test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
// aux-build:hello_macro.rs
1414
// ignore-stage1
1515

16-
#![feature(use_extern_macros, proc_macro_non_items, proc_macro_gen)]
16+
#![feature(proc_macro_non_items, proc_macro_gen)]
1717

1818
extern crate hello_macro;
1919

src/test/run-pass-fulldeps/proc-macro/attr-stmt-expr.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// aux-build:attr-stmt-expr.rs
1212
// ignore-stage1
1313

14-
#![feature(use_extern_macros, stmt_expr_attributes, proc_macro_expr)]
14+
#![feature(stmt_expr_attributes, proc_macro_expr)]
1515

1616
extern crate attr_stmt_expr;
1717
use attr_stmt_expr::{expect_let, expect_print_stmt, expect_expr, expect_print_expr,

src/test/run-pass-fulldeps/proc-macro/auxiliary/count_compound_ops.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// no-prefer-dynamic
1212

13-
#![feature(proc_macro_non_items, proc_macro_quote, use_extern_macros)]
13+
#![feature(proc_macro_non_items, proc_macro_quote)]
1414
#![crate_type = "proc-macro"]
1515

1616
extern crate proc_macro;

src/test/run-pass-fulldeps/proc-macro/auxiliary/hygiene_example_codegen.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// no-prefer-dynamic
1212

13-
#![feature(use_extern_macros, proc_macro_quote, proc_macro_non_items)]
13+
#![feature(proc_macro_quote, proc_macro_non_items)]
1414
#![crate_type = "proc-macro"]
1515

1616
extern crate proc_macro as proc_macro_renamed; // This does not break `quote!`

src/test/run-pass-fulldeps/proc-macro/bang-macro.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// aux-build:bang-macro.rs
1212
// ignore-stage1
1313

14-
#![feature(use_extern_macros, proc_macro_non_items)]
14+
#![feature(proc_macro_non_items)]
1515

1616
extern crate bang_macro;
1717
use bang_macro::rewrite;

src/test/run-pass-fulldeps/proc-macro/call-site.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// aux-build:call-site.rs
1212
// ignore-stage1
1313

14-
#![feature(proc_macro_non_items, use_extern_macros)]
14+
#![feature(proc_macro_non_items)]
1515

1616
extern crate call_site;
1717
use call_site::*;

src/test/run-pass-fulldeps/proc-macro/count_compound_ops.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// aux-build:count_compound_ops.rs
1212
// ignore-stage1
1313

14-
#![feature(use_extern_macros, proc_macro_non_items)]
14+
#![feature(proc_macro_non_items)]
1515

1616
extern crate count_compound_ops;
1717
use count_compound_ops::count_compound_ops;

src/test/run-pass-fulldeps/proc-macro/derive-b.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// aux-build:derive-b.rs
1212
// ignore-stage1
1313

14-
#![feature(use_extern_macros, proc_macro_path_invoc)]
14+
#![feature(proc_macro_path_invoc)]
1515

1616
extern crate derive_b;
1717

src/test/run-pass-fulldeps/proc-macro/hygiene_example.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
// aux-build:hygiene_example.rs
1313
// ignore-stage1
1414

15-
#![feature(use_extern_macros, proc_macro_non_items)]
15+
#![feature(proc_macro_non_items)]
1616

1717
extern crate hygiene_example;
1818
use hygiene_example::hello;

src/test/run-pass-fulldeps/proc-macro/macros-in-extern.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
// ignore-stage1
1313
// ignore-wasm32
1414

15-
#![feature(use_extern_macros, macros_in_extern)]
15+
#![feature(macros_in_extern)]
1616

1717
extern crate test_macros;
1818

src/test/run-pass-fulldeps/proc_macro.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
// ignore-stage1
1313
// ignore-cross-compile
1414

15-
#![feature(use_extern_macros, proc_macro_non_items)]
15+
#![feature(proc_macro_non_items)]
1616

1717
extern crate proc_macro_def;
1818

src/test/ui-fulldeps/auxiliary/attr_proc_macro.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// force-host
1212
// no-prefer-dynamic
13-
#![feature(proc_macro)]
13+
1414
#![crate_type = "proc-macro"]
1515

1616
extern crate proc_macro;

src/test/ui-fulldeps/auxiliary/bang_proc_macro.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// force-host
1212
// no-prefer-dynamic
13-
#![feature(proc_macro)]
13+
1414
#![crate_type = "proc-macro"]
1515

1616
extern crate proc_macro;

src/test/ui-fulldeps/auxiliary/lifetimes.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
// no-prefer-dynamic
1212

13-
#![feature(proc_macro)]
1413
#![crate_type = "proc-macro"]
1514

1615
extern crate proc_macro;

src/test/ui-fulldeps/lifetimes.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// aux-build:lifetimes.rs
1212

13-
#![feature(use_extern_macros, proc_macro_non_items)]
13+
#![feature(proc_macro_non_items)]
1414

1515
extern crate lifetimes;
1616

src/test/ui-fulldeps/proc-macro/auxiliary/generate-mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
// run-pass
1212
// no-prefer-dynamic
1313

14-
#![feature(proc_macro)]
1514
#![crate_type = "proc-macro"]
1615

1716
extern crate proc_macro;

src/test/ui-fulldeps/proc-macro/generate-mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
// aux-build:generate-mod.rs
1414

15-
#![feature(use_extern_macros, proc_macro_gen, proc_macro_path_invoc)]
15+
#![feature(proc_macro_gen, proc_macro_path_invoc)]
1616

1717
extern crate generate_mod;
1818

src/test/ui-fulldeps/proc-macro/invalid-attributes.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
// no-prefer-dynamic
1212

1313
#![crate_type = "proc-macro"]
14-
#![feature(proc_macro)]
1514

1615
extern crate proc_macro;
1716

src/test/ui-fulldeps/proc-macro/invalid-attributes.stderr

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
11
error: `#[proc_macro]` attribute does not take any arguments
2-
--> $DIR/invalid-attributes.rs:20:1
2+
--> $DIR/invalid-attributes.rs:19:1
33
|
44
LL | #[proc_macro = "test"] //~ ERROR: does not take any arguments
55
| ^^^^^^^^^^^^^^^^^^^^^^
66

77
error: `#[proc_macro]` attribute does not take any arguments
8-
--> $DIR/invalid-attributes.rs:23:1
8+
--> $DIR/invalid-attributes.rs:22:1
99
|
1010
LL | #[proc_macro()] //~ ERROR: does not take any arguments
1111
| ^^^^^^^^^^^^^^^
1212

1313
error: `#[proc_macro]` attribute does not take any arguments
14-
--> $DIR/invalid-attributes.rs:26:1
14+
--> $DIR/invalid-attributes.rs:25:1
1515
|
1616
LL | #[proc_macro(x)] //~ ERROR: does not take any arguments
1717
| ^^^^^^^^^^^^^^^^
1818

1919
error: `#[proc_macro_attribute]` attribute does not take any arguments
20-
--> $DIR/invalid-attributes.rs:29:1
20+
--> $DIR/invalid-attributes.rs:28:1
2121
|
2222
LL | #[proc_macro_attribute = "test"] //~ ERROR: does not take any arguments
2323
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2424

2525
error: `#[proc_macro_attribute]` attribute does not take any arguments
26-
--> $DIR/invalid-attributes.rs:32:1
26+
--> $DIR/invalid-attributes.rs:31:1
2727
|
2828
LL | #[proc_macro_attribute()] //~ ERROR: does not take any arguments
2929
| ^^^^^^^^^^^^^^^^^^^^^^^^^
3030

3131
error: `#[proc_macro_attribute]` attribute does not take any arguments
32-
--> $DIR/invalid-attributes.rs:35:1
32+
--> $DIR/invalid-attributes.rs:34:1
3333
|
3434
LL | #[proc_macro_attribute(x)] //~ ERROR: does not take any arguments
3535
| ^^^^^^^^^^^^^^^^^^^^^^^^^^

src/test/ui-fulldeps/proc-macro/macro-namespace-reserved.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// no-prefer-dynamic
1212

13-
#![feature(proc_macro, decl_macro)]
13+
#![feature(decl_macro)]
1414
#![crate_type = "proc-macro"]
1515

1616
extern crate proc_macro;

src/test/ui-fulldeps/proc-macro/non-root.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
// no-prefer-dynamic
1212

13-
#![feature(proc_macro)]
1413
#![crate_type = "proc-macro"]
1514

1615
extern crate proc_macro;

src/test/ui-fulldeps/proc-macro/non-root.stderr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error: functions tagged with `#[proc_macro]` must currently reside in the root of the crate
2-
--> $DIR/non-root.rs:21:5
2+
--> $DIR/non-root.rs:20:5
33
|
44
LL | pub fn foo(arg: TokenStream) -> TokenStream { arg }
55
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/test/ui-fulldeps/proc-macro/three-equals.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// aux-build:three-equals.rs
1212
// ignore-stage1
1313

14-
#![feature(use_extern_macros, proc_macro_non_items)]
14+
#![feature(proc_macro_non_items)]
1515

1616
extern crate three_equals;
1717

src/test/ui/imports/macros.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// aux-build:two_macros.rs
1212

13-
#![feature(item_like_imports, use_extern_macros)]
13+
#![feature(use_extern_macros)]
1414

1515
extern crate two_macros; // two identity macros `m` and `n`
1616

0 commit comments

Comments
 (0)