about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2013-03-28 18:55:35 -0700
committerPatrick Walton <pcwalton@mimiga.net>2013-03-28 18:56:36 -0700
commit36909c7575e2ddfe2925423aceb62d82ae8208b2 (patch)
treea270e335ced070311ab8028e9185af90a9caf855 /src/libsyntax/parse
parent943d7adedc2401b54e103ea3635d0e50b1822d5a (diff)
downloadrust-36909c7575e2ddfe2925423aceb62d82ae8208b2.tar.gz
rust-36909c7575e2ddfe2925423aceb62d82ae8208b2.zip
libsyntax: Don't allow `impl (Trait) for Type` (with the parentheses).
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/parser.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 51a7f7fbd1c..c52162b7f14 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -3107,11 +3107,15 @@ pub impl Parser {
         // XXX: clownshoes
         let ident = special_idents::clownshoes_extensions;
 
+        // Special case: if the next identifier that follows is '(', don't
+        // allow this to be parsed as a trait.
+        let could_be_trait = *self.token != token::LPAREN;
+
         // Parse the trait.
         let mut ty = self.parse_ty(false);
 
         // Parse traits, if necessary.
-        let opt_trait = if self.eat_keyword(&~"for") {
+        let opt_trait = if could_be_trait && self.eat_keyword(&~"for") {
             // New-style trait. Reinterpret the type as a trait.
             let opt_trait_ref = match ty.node {
                 ty_path(path, node_id) => {