summary refs log tree commit diff
path: root/src/libsyntax/ext
diff options
context:
space:
mode:
authorMatt Peterson <ricochet1k@gmail.com>2017-12-21 10:44:44 -0500
committerMatt Peterson <ricochet1k@gmail.com>2017-12-28 11:33:44 -0500
commitb2844190640fc9a69d087e30e3c3cf37cbd40142 (patch)
treebfc74d6618ec4d607cd8aff57679fa0dc99f61b6 /src/libsyntax/ext
parente838cfce03caf9394fb71c909ab9e1afa8bae282 (diff)
downloadrust-b2844190640fc9a69d087e30e3c3cf37cbd40142.tar.gz
rust-b2844190640fc9a69d087e30e3c3cf37cbd40142.zip
Add feature gate macro_lifetime_matcher
Diffstat (limited to 'src/libsyntax/ext')
-rw-r--r--src/libsyntax/ext/tt/macro_rules.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/libsyntax/ext/tt/macro_rules.rs b/src/libsyntax/ext/tt/macro_rules.rs
index 8f2e571c213..5412decd3b7 100644
--- a/src/libsyntax/ext/tt/macro_rules.rs
+++ b/src/libsyntax/ext/tt/macro_rules.rs
@@ -886,8 +886,20 @@ fn is_legal_fragment_specifier(sess: &ParseSess,
                                frag_name: &str,
                                frag_span: Span) -> bool {
     match frag_name {
-        "item" | "block" | "stmt" | "expr" | "pat" | "lifetime" |
+        "item" | "block" | "stmt" | "expr" | "pat" |
         "path" | "ty" | "ident" | "meta" | "tt" | "" => true,
+        "lifetime" => {
+            if     !features.borrow().macro_lifetime_matcher
+                && !attr::contains_name(attrs, "allow_internal_unstable") {
+                let explain = feature_gate::EXPLAIN_LIFETIME_MATCHER;
+                emit_feature_err(sess,
+                                 "macro_lifetime_matcher",
+                                 frag_span,
+                                 GateIssue::Language,
+                                 explain);
+            }
+            true
+        },
         "vis" => {
             if     !features.borrow().macro_vis_matcher
                 && !attr::contains_name(attrs, "allow_internal_unstable") {