about summary refs log tree commit diff
diff options
context:
space:
mode:
authorScott McMurray <scottmcm@users.noreply.github.com>2018-07-22 20:52:43 -0700
committerScott McMurray <scottmcm@users.noreply.github.com>2018-08-19 16:53:41 -0700
commit91967a8f163b44eb46bdac130ffded7752ae298c (patch)
tree0f44ac2f24fe20fae6eb5d75f1aad03b736f4bcb
parentef198867a73f24d4c3c50d246c1024a3bff3cee2 (diff)
downloadrust-91967a8f163b44eb46bdac130ffded7752ae298c.tar.gz
rust-91967a8f163b44eb46bdac130ffded7752ae298c.zip
Put `try` in the reserved list, not the in-use list
-rw-r--r--src/libsyntax_pos/symbol.rs17
-rw-r--r--src/test/compile-fail/try-block-in-match.rs2
-rw-r--r--src/test/compile-fail/try-block-in-while.rs2
-rw-r--r--src/test/parse-fail/keyword-try-as-identifier-edition2018.rs2
4 files changed, 8 insertions, 15 deletions
diff --git a/src/libsyntax_pos/symbol.rs b/src/libsyntax_pos/symbol.rs
index dc92ce56c79..1eb76e7fe52 100644
--- a/src/libsyntax_pos/symbol.rs
+++ b/src/libsyntax_pos/symbol.rs
@@ -413,11 +413,9 @@ declare_keywords! {
     (49, Virtual,            "virtual")
     (50, Yield,              "yield")
 
-    // Edition-specific keywords currently in use.
-    (51, Try,                "try") // >= 2018 Edition Only
-
     // Edition-specific keywords reserved for future use.
-    (52, Async,              "async") // >= 2018 Edition Only
+    (51, Async,              "async") // >= 2018 Edition Only
+    (52, Try,                "try") // >= 2018 Edition Only
 
     // Special lifetime names
     (53, UnderscoreLifetime, "'_")
@@ -433,12 +431,9 @@ declare_keywords! {
 }
 
 impl Symbol {
-    fn is_used_keyword_2018(self) -> bool {
-        self == keywords::Try.name()
-    }
-
     fn is_unused_keyword_2018(self) -> bool {
-        self == keywords::Async.name()
+        self >= keywords::Async.name() &&
+        self <= keywords::Try.name()
     }
 }
 
@@ -451,9 +446,7 @@ impl Ident {
 
     /// Returns `true` if the token is a keyword used in the language.
     pub fn is_used_keyword(self) -> bool {
-        // Note: `span.edition()` is relatively expensive, don't call it unless necessary.
-        self.name >= keywords::As.name() && self.name <= keywords::While.name() ||
-        self.name.is_used_keyword_2018() && self.span.edition() == Edition::Edition2018
+        self.name >= keywords::As.name() && self.name <= keywords::While.name()
     }
 
     /// Returns `true` if the token is a keyword reserved for possible future use.
diff --git a/src/test/compile-fail/try-block-in-match.rs b/src/test/compile-fail/try-block-in-match.rs
index 490b00a6f43..1920caa548f 100644
--- a/src/test/compile-fail/try-block-in-match.rs
+++ b/src/test/compile-fail/try-block-in-match.rs
@@ -13,5 +13,5 @@
 #![feature(catch_expr)]
 
 fn main() {
-    match try { false } { _ => {} } //~ ERROR expected expression, found keyword `try`
+    match try { false } { _ => {} } //~ ERROR expected expression, found reserved keyword `try`
 }
diff --git a/src/test/compile-fail/try-block-in-while.rs b/src/test/compile-fail/try-block-in-while.rs
index a949e778f38..fc1c0897614 100644
--- a/src/test/compile-fail/try-block-in-while.rs
+++ b/src/test/compile-fail/try-block-in-while.rs
@@ -13,5 +13,5 @@
 #![feature(catch_expr)]
 
 fn main() {
-    while try { false } {} //~ ERROR expected expression, found keyword `try`
+    while try { false } {} //~ ERROR expected expression, found reserved keyword `try`
 }
diff --git a/src/test/parse-fail/keyword-try-as-identifier-edition2018.rs b/src/test/parse-fail/keyword-try-as-identifier-edition2018.rs
index 1fe67313a35..1e4f85c122d 100644
--- a/src/test/parse-fail/keyword-try-as-identifier-edition2018.rs
+++ b/src/test/parse-fail/keyword-try-as-identifier-edition2018.rs
@@ -11,5 +11,5 @@
 // compile-flags: -Z parse-only --edition 2018
 
 fn main() {
-    let try = "foo"; //~ error: expected pattern, found keyword `try`
+    let try = "foo"; //~ error: expected pattern, found reserved keyword `try`
 }