summaryrefslogtreecommitdiff
path: root/sources/scalac/ast/parser/Parser.java
diff options
context:
space:
mode:
Diffstat (limited to 'sources/scalac/ast/parser/Parser.java')
-rw-r--r--sources/scalac/ast/parser/Parser.java17
1 files changed, 6 insertions, 11 deletions
diff --git a/sources/scalac/ast/parser/Parser.java b/sources/scalac/ast/parser/Parser.java
index 73ca7fc747..eea0637f47 100644
--- a/sources/scalac/ast/parser/Parser.java
+++ b/sources/scalac/ast/parser/Parser.java
@@ -1209,24 +1209,19 @@ public class Parser implements Tokens {
* | Pattern2
*/
Tree pattern1() {
- int base = sp;
- Tree top = simplePattern();
- if (s.token == COLON) {
- if (TreeInfo.isVarPattern(top)) {
- return make.Typed(s.skipToken(), top, type1());
- }
+ Tree p = pattern2();
+ if (s.token == COLON && TreeInfo.isVarPattern(p)) {
+ return make.Typed(s.skipToken(), p, type1());
}
- return pattern1rest(base, top);
+ return p;
}
/* Pattern2 ::= SimplePattern [ '*' | '?' | '+' ]
* | SimplePattern {Id SimplePattern} // op2 must not be empty
*/
Tree pattern2() {
- return pattern1rest(sp, simplePattern());
- }
-
- Tree pattern1rest(int base, Tree top) {
+ int base = sp;
+ Tree top = simplePattern();
if (s.token == IDENTIFIER) {
if (s.name == STAR) { /* p* becomes z@( |(p,z)) */
s.nextToken();