about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorLuqman Aden <laden@csclub.uwaterloo.ca>2013-10-20 02:34:01 -0400
committerLuqman Aden <laden@csclub.uwaterloo.ca>2013-10-22 21:22:19 -0400
commitaf163579ed674c4b1a37f5c8d50bf348722db439 (patch)
tree415f973c647f0ffea0c361e451dd704b734abdeb /src/libsyntax/parse
parent5754848f8cd06bd3fc2bb084b5ca7bd41974e1b5 (diff)
downloadrust-af163579ed674c4b1a37f5c8d50bf348722db439.tar.gz
rust-af163579ed674c4b1a37f5c8d50bf348722db439.zip
libsyntax/librustc: Allow specifying mut on ~self.
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/parser.rs10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 133934a746a..605e259cf0c 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -3520,7 +3520,7 @@ impl Parser {
                     self.span_err(*self.last_span,
                                   "mutability declaration not allowed here");
                 }
-                sty_uniq
+                sty_uniq(MutImmutable)
             }, self)
           }
           token::IDENT(*) if self.is_self_ident() => {
@@ -3546,6 +3546,14 @@ impl Parser {
             self.expect_self_ident();
             sty_value(mutability)
           }
+          _ if self.token_is_mutability(self.token) &&
+               self.look_ahead(1, |t| *t == token::TILDE) &&
+               self.look_ahead(2, |t| token::is_keyword(keywords::Self, t)) => {
+            let mutability = self.parse_mutability();
+            self.bump();
+            self.expect_self_ident();
+            sty_uniq(mutability)
+          }
           _ => {
             sty_static
           }