From 92ef17aaebb28a8fe6579f669a3ee162c931d9dd Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Tue, 7 Aug 2012 13:01:15 -0700 Subject: [PATCH] syntax: Fix parsing of inherent traits --- src/libsyntax/parse/parser.rs | 3 ++- src/test/run-pass/impl-implicit-trait.rs | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 src/test/run-pass/impl-implicit-trait.rs diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index c675af6803c..7eb96cbeb59 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -2436,7 +2436,8 @@ class parser { !self.token_is_keyword(~"of", self.look_ahead(1)) && !self.token_is_keyword(~"for", self.look_ahead(1)) && self.look_ahead(1) != token::BINOP(token::SLASH) && - self.look_ahead(1) != token::LT { + (self.look_ahead(1) != token::LT + || (self.look_ahead(1) == token::LT && tps.is_not_empty())) { // This is a new-style impl declaration. ident = @~"__extensions__"; // XXX: clownshoes diff --git a/src/test/run-pass/impl-implicit-trait.rs b/src/test/run-pass/impl-implicit-trait.rs new file mode 100644 index 00000000000..e9ca583005c --- /dev/null +++ b/src/test/run-pass/impl-implicit-trait.rs @@ -0,0 +1,20 @@ +enum option_ { + none_, + some_(T), +} + +impl option_ { + fn foo() -> bool { true } +} + +enum option__ { + none__, + some__(int) +} + +impl option__ { + fn foo() -> bool { true } +} + +fn main() { +} \ No newline at end of file