]> git.lizzy.rs Git - rust.git/commitdiff
Reserve `do` as a keyword
authorEduard Bopp <eduard.bopp@aepsil0n.de>
Mon, 10 Feb 2014 23:19:27 +0000 (00:19 +0100)
committerEduard Bopp <eduard.bopp@aepsil0n.de>
Mon, 10 Feb 2014 23:19:27 +0000 (00:19 +0100)
Resolves issue #12157. `do` is hereby reinstated as a keyword; no syntax is
associated with it though. Along the way, a unit test had to be adapted, since
it was using `do` as a method identifier.

Breaking changes:

- Any code using `do` as an identifier will no longer work.

src/libsyntax/parse/token.rs
src/test/compile-fail/keyword-do-as-identifier.rs [new file with mode: 0644]
src/test/run-pass/temporary-lifetime-for-conditions.rs

index d32411b4f050ae1f10aa28000c99706db59c4f32..1e9eab1573bdd3729a5f187782b811d0433430d3 100644 (file)
@@ -492,6 +492,7 @@ pub mod keywords {
         (53,                         Typeof,     "typeof");
         (54,                         Unsized,    "unsized");
         (55,                         Yield,      "yield");
+        (56,                         Do,         "do");
     }
 }
 
diff --git a/src/test/compile-fail/keyword-do-as-identifier.rs b/src/test/compile-fail/keyword-do-as-identifier.rs
new file mode 100644 (file)
index 0000000..90f73f8
--- /dev/null
@@ -0,0 +1,13 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+fn main() {
+    let do = "bar"; //~ error: ident
+}
index 1985970b1071cf7522b4336cf42d29c26dee21a4..0716ea5cdeb4a40466ce9957bd2da0abd683c51c 100644 (file)
@@ -23,7 +23,7 @@ fn drop(&mut self) {
 }
 
 impl Temporary {
-    fn do(&self) -> bool {true}
+    fn do_stuff(&self) -> bool {true}
 }
 
 fn borrow() -> ~Temporary { ~Temporary }
@@ -35,7 +35,7 @@ pub fn main() {
     // This loop's condition
     // should call `Temporary`'s
     // `drop` 6 times.
-    while borrow().do() {
+    while borrow().do_stuff() {
         i += 1;
         if i > 5 {
             break;
@@ -44,7 +44,7 @@ pub fn main() {
 
     // This if condition should
     // call it 1 time
-    if borrow().do() {
+    if borrow().do_stuff() {
         unsafe { assert_eq!(DROPPED, 7) }
     }
 }