Skip to content

Commit d3c902f

Browse files
committed
Merge the proc_macro_ expansion feature gates into a single proc_macro_hygiene gate.
1 parent 4cf1176 commit d3c902f

25 files changed

+42
-44
lines changed

src/libsyntax/ext/expand.rs

+10-13
Original file line numberDiff line numberDiff line change
@@ -645,18 +645,18 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
645645
let (kind, gate) = match *item {
646646
Annotatable::Item(ref item) => {
647647
match item.node {
648-
ItemKind::Mod(_) if self.cx.ecfg.proc_macro_mod() => return,
649-
ItemKind::Mod(_) => ("modules", "proc_macro_mod"),
648+
ItemKind::Mod(_) if self.cx.ecfg.proc_macro_hygiene() => return,
649+
ItemKind::Mod(_) => ("modules", "proc_macro_hygiene"),
650650
_ => return,
651651
}
652652
}
653653
Annotatable::TraitItem(_) => return,
654654
Annotatable::ImplItem(_) => return,
655655
Annotatable::ForeignItem(_) => return,
656656
Annotatable::Stmt(_) |
657-
Annotatable::Expr(_) if self.cx.ecfg.proc_macro_expr() => return,
658-
Annotatable::Stmt(_) => ("statements", "proc_macro_expr"),
659-
Annotatable::Expr(_) => ("expressions", "proc_macro_expr"),
657+
Annotatable::Expr(_) if self.cx.ecfg.proc_macro_hygiene() => return,
658+
Annotatable::Stmt(_) => ("statements", "proc_macro_hygiene"),
659+
Annotatable::Expr(_) => ("expressions", "proc_macro_hygiene"),
660660
};
661661
emit_feature_err(
662662
self.cx.parse_sess,
@@ -668,7 +668,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
668668
}
669669

670670
fn gate_proc_macro_expansion(&self, span: Span, fragment: &Option<AstFragment>) {
671-
if self.cx.ecfg.proc_macro_gen() {
671+
if self.cx.ecfg.proc_macro_hygiene() {
672672
return
673673
}
674674
let fragment = match fragment {
@@ -691,7 +691,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
691691
if let ast::ItemKind::MacroDef(_) = i.node {
692692
emit_feature_err(
693693
self.parse_sess,
694-
"proc_macro_gen",
694+
"proc_macro_hygiene",
695695
self.span,
696696
GateIssue::Language,
697697
&format!("procedural macros cannot expand to macro definitions"),
@@ -885,12 +885,12 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
885885
AstFragmentKind::ImplItems => return,
886886
AstFragmentKind::ForeignItems => return,
887887
};
888-
if self.cx.ecfg.proc_macro_non_items() {
888+
if self.cx.ecfg.proc_macro_hygiene() {
889889
return
890890
}
891891
emit_feature_err(
892892
self.cx.parse_sess,
893-
"proc_macro_non_items",
893+
"proc_macro_hygiene",
894894
span,
895895
GateIssue::Language,
896896
&format!("procedural macros cannot be expanded to {}", kind),
@@ -1612,10 +1612,7 @@ impl<'feat> ExpansionConfig<'feat> {
16121612
fn enable_custom_derive = custom_derive,
16131613
fn enable_format_args_nl = format_args_nl,
16141614
fn macros_in_extern_enabled = macros_in_extern,
1615-
fn proc_macro_mod = proc_macro_mod,
1616-
fn proc_macro_gen = proc_macro_gen,
1617-
fn proc_macro_expr = proc_macro_expr,
1618-
fn proc_macro_non_items = proc_macro_non_items,
1615+
fn proc_macro_hygiene = proc_macro_hygiene,
16191616
}
16201617

16211618
fn enable_custom_inner_attributes(&self) -> bool {

src/libsyntax/feature_gate.rs

+9-4
Original file line numberDiff line numberDiff line change
@@ -441,10 +441,7 @@ declare_features! (
441441

442442
// Allows macro invocations on modules expressions and statements and
443443
// procedural macros to expand to non-items.
444-
(active, proc_macro_mod, "1.27.0", Some(54727), None),
445-
(active, proc_macro_expr, "1.27.0", Some(54727), None),
446-
(active, proc_macro_non_items, "1.27.0", Some(54727), None),
447-
(active, proc_macro_gen, "1.27.0", Some(54727), None),
444+
(active, proc_macro_hygiene, "1.30.0", Some(54727), None),
448445

449446
// #[doc(alias = "...")]
450447
(active, doc_alias, "1.27.0", Some(50146), None),
@@ -541,6 +538,14 @@ declare_features! (
541538
Some("merged into `#![feature(slice_patterns)]`")),
542539
(removed, macro_reexport, "1.0.0", Some(29638), None,
543540
Some("subsumed by `pub use`")),
541+
(removed, proc_macro_mod, "1.27.0", Some(54727), None,
542+
Some("subsumed by `#![feature(proc_macro_hygiene)]`")),
543+
(removed, proc_macro_expr, "1.27.0", Some(54727), None,
544+
Some("subsumed by `#![feature(proc_macro_hygiene)]`")),
545+
(removed, proc_macro_non_items, "1.27.0", Some(54727), None,
546+
Some("subsumed by `#![feature(proc_macro_hygiene)]`")),
547+
(removed, proc_macro_gen, "1.27.0", Some(54727), None,
548+
Some("subsumed by `#![feature(proc_macro_hygiene)]`")),
544549
);
545550

546551
declare_features! (

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
//! Attributes producing expressions in invalid locations
1515
16-
#![feature(stmt_expr_attributes, proc_macro_expr)]
16+
#![feature(stmt_expr_attributes, proc_macro_hygiene)]
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

+1-1
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(proc_macro_expr)]
14+
#![feature(proc_macro_hygiene)]
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/lints_in_proc_macros.rs

+1-1
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(proc_macro_non_items)]
14+
#![feature(proc_macro_hygiene)]
1515
#![allow(unused_macros)]
1616

1717
extern crate bang_proc_macro2;

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

+1-5
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,7 @@
99
// except according to those terms.
1010

1111
// aux-build:proc-macro-gates.rs
12-
// gate-test-proc_macro_non_items
13-
// gate-test-proc_macro_mod line
14-
// gate-test-proc_macro_expr
15-
// gate-test-proc_macro_mod
16-
// gate-test-proc_macro_gen
12+
// gate-test-proc_macro_hygiene
1713

1814
#![feature(stmt_expr_attributes)]
1915

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

+1-1
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_non_items)]
14+
#![feature(proc_macro_hygiene)]
1515

1616
extern crate proc_macro;
1717

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

+1-1
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_non_items, proc_macro_quote)]
14+
#![feature(proc_macro_hygiene, proc_macro_quote)]
1515

1616
extern crate proc_macro;
1717

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

+1-1
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_non_items)]
14+
#![feature(proc_macro_hygiene)]
1515

1616
extern crate proc_macro;
1717

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
// aux-build:cond_plugin.rs
1313
// ignore-stage1
1414

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

1717
extern crate cond_plugin;
1818

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

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

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

1818
extern crate hello_macro;
1919

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

+1-1
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(stmt_expr_attributes, proc_macro_expr)]
14+
#![feature(stmt_expr_attributes, proc_macro_hygiene)]
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

+1-1
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)]
13+
#![feature(proc_macro_hygiene, 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

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// no-prefer-dynamic
1212

13-
#![feature(proc_macro_quote, proc_macro_non_items)]
13+
#![feature(proc_macro_quote, proc_macro_hygiene)]
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

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

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

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

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
// aux-build:call-site.rs
1414
// ignore-stage1
1515

16-
#![feature(proc_macro_non_items)]
16+
#![feature(proc_macro_hygiene)]
1717

1818
extern crate call_site;
1919
use call_site::*;

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

+1-1
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(proc_macro_non_items)]
14+
#![feature(proc_macro_hygiene)]
1515

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

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
// aux-build:hygiene_example.rs
1414
// ignore-stage1
1515

16-
#![feature(proc_macro_non_items)]
16+
#![feature(proc_macro_hygiene)]
1717

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

src/test/run-pass-fulldeps/proc-macro/negative-token.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// aux-build:negative-token.rs
1212
// ignore-stage1
1313

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

1616
extern crate negative_token;
1717

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
// ignore-stage1
1313
// ignore-cross-compile
1414

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

1717
extern crate proc_macro_def;
1818

src/test/ui-fulldeps/lifetimes.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// aux-build:lifetimes.rs
1212

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

1515
extern crate lifetimes;
1616

src/test/ui-fulldeps/proc-macro/macro-use-bang.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// compile-pass
1212
// aux-build:bang_proc_macro.rs
1313

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

1616
#[macro_use]
1717
extern crate bang_proc_macro;

src/test/ui-fulldeps/proc-macro/multispan.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// aux-build:multispan.rs
1212
// ignore-stage1
1313

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

1616
extern crate multispan;
1717

src/test/ui-fulldeps/proc-macro/parent-source-spans.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// aux-build:parent-source-spans.rs
1212
// ignore-stage1
1313

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

1616
extern crate parent_source_spans;
1717

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

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

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

1616
extern crate three_equals;
1717

0 commit comments

Comments
 (0)