diff options
author | Som Snytt <som.snytt@gmail.com> | 2014-01-27 09:58:00 -0800 |
---|---|---|
committer | Som Snytt <som.snytt@gmail.com> | 2014-01-27 10:46:16 -0800 |
commit | d603cae2cd6b796534e55b25ee65385825904a10 (patch) | |
tree | 0270c82f52fe747b5181630bf852cfbc937afb31 /src/compiler/scala/tools/nsc/ast/parser/Parsers.scala | |
parent | 18c9196686410536f69f8e05b62f0cd7e0b91a8c (diff) | |
download | scala-d603cae2cd6b796534e55b25ee65385825904a10.tar.gz scala-d603cae2cd6b796534e55b25ee65385825904a10.tar.bz2 scala-d603cae2cd6b796534e55b25ee65385825904a10.zip |
SI-8182 Avert crash due to type args in pattern
Error out type args on binary op after emitting error.
Let the parse limp into the whirring blades.
Diffstat (limited to 'src/compiler/scala/tools/nsc/ast/parser/Parsers.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/ast/parser/Parsers.scala | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala index 0728fff74f..9e580d8bc8 100644 --- a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala +++ b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala @@ -837,8 +837,14 @@ self => if (samePrecedence) checkHeadAssoc(leftAssoc) - def loop(top: Tree): Tree = - if (canReduce) loop(finishBinaryOp(isExpr, popOpInfo(), top)) else top + def loop(top: Tree): Tree = if (canReduce) { + val info = popOpInfo() + if (!isExpr && info.targs.nonEmpty) { + syntaxError(info.offset, "type application is not allowed in pattern") + info.targs.foreach(_.setType(ErrorType)) + } + loop(finishBinaryOp(isExpr, info, top)) + } else top loop(top) } |