summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-11-19 23:05:27 +0100
committerJason Zaugg <jzaugg@gmail.com>2013-11-19 23:05:27 +0100
commit1050745dca08e1d98506b99ea03d47a602d11bc8 (patch)
tree50b60017fc8de93f353e3b6a29409d5d0a00c711
parentb1d305388d21e3fd86660579f507889fd7b73e6f (diff)
downloadscala-1050745dca08e1d98506b99ea03d47a602d11bc8.tar.gz
scala-1050745dca08e1d98506b99ea03d47a602d11bc8.tar.bz2
scala-1050745dca08e1d98506b99ea03d47a602d11bc8.zip
SI-7985 Refactor parsing of pattern type args
Just parse as though it is a type, and post process to add the Bind if it turns out to be a type variable.
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/Parsers.scala8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
index 7fb21c86d9..0429e295b4 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
@@ -1774,10 +1774,12 @@ self =>
in.nextToken()
if (in.token == SUBTYPE || in.token == SUPERTYPE) wildcardType(start)
else atPos(start) { Bind(tpnme.WILDCARD, EmptyTree) }
- case IDENTIFIER if nme.isVariableName(in.name) && lookingAhead(in.token != DOT && in.token != HASH) =>
- atPos(start) { Bind(identForType(), EmptyTree) }
case _ =>
- typ()
+ typ() match {
+ case Ident(name: TypeName) if nme.isVariableName(name) =>
+ atPos(start) { Bind(name, EmptyTree) }
+ case t => t
+ }
}
}