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 /test/files | |
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 'test/files')
-rw-r--r-- | test/files/neg/t8182.check | 22 | ||||
-rw-r--r-- | test/files/neg/t8182.scala | 18 |
2 files changed, 40 insertions, 0 deletions
diff --git a/test/files/neg/t8182.check b/test/files/neg/t8182.check new file mode 100644 index 0000000000..a156d70883 --- /dev/null +++ b/test/files/neg/t8182.check @@ -0,0 +1,22 @@ +t8182.scala:4: error: illegal start of simple pattern +} +^ +t8182.scala:7: error: illegal start of simple pattern +} +^ +t8182.scala:6: error: type application is not allowed in pattern + val a b[B] // error then continue as for X + ^ +t8182.scala:10: error: illegal start of simple pattern + case a b[B] => // bumpy recovery + ^ +t8182.scala:10: error: type application is not allowed in pattern + case a b[B] => // bumpy recovery + ^ +t8182.scala:11: error: '=>' expected but '}' found. + } + ^ +t8182.scala:16: error: type application is not allowed in pattern + case a B[T] b => + ^ +7 errors found diff --git a/test/files/neg/t8182.scala b/test/files/neg/t8182.scala new file mode 100644 index 0000000000..1b3bc9821f --- /dev/null +++ b/test/files/neg/t8182.scala @@ -0,0 +1,18 @@ + +trait X { + val a b // something missing +} +trait Y { + val a b[B] // error then continue as for X +} +trait Z { + (null: Any) match { + case a b[B] => // bumpy recovery + } +} +object B { def unapply[W](a: Any) = Some((1,2)) } +trait Z { + (null: Any) match { + case a B[T] b => + } +} |