From d603cae2cd6b796534e55b25ee65385825904a10 Mon Sep 17 00:00:00 2001 From: Som Snytt Date: Mon, 27 Jan 2014 09:58:00 -0800 Subject: 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. --- test/files/neg/t8182.check | 22 ++++++++++++++++++++++ test/files/neg/t8182.scala | 18 ++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 test/files/neg/t8182.check create mode 100644 test/files/neg/t8182.scala (limited to 'test') 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 => + } +} -- cgit v1.2.3