From 46e78e4589fe6d68703194e71cd34b5accb0942b Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Thu, 25 Feb 2010 02:54:04 +0000 Subject: Tweaking the sealed logic in light of #3097. Reorganizes children a little so they always come back sorted the same way the pickler does. Taking advantage of -Yfatal-warnings in the test case. Review by community. --- test/files/jvm/interpreter.check | 2 +- test/files/neg/patmatexhaust.check | 2 +- test/files/pos/bug3097.flags | 1 + test/files/pos/bug3097.scala | 31 +++++++++++++++++++++++++++++++ 4 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 test/files/pos/bug3097.flags create mode 100644 test/files/pos/bug3097.scala (limited to 'test') diff --git a/test/files/jvm/interpreter.check b/test/files/jvm/interpreter.check index 1a6fcba5fe..03c773e2cb 100644 --- a/test/files/jvm/interpreter.check +++ b/test/files/jvm/interpreter.check @@ -218,8 +218,8 @@ defined class Fact defined class Term scala> | | :16: warning: match is not exhaustive! -missing combination Term missing combination Exp +missing combination Term def f(e: Exp) = e match { // non-exhaustive warning here ^ diff --git a/test/files/neg/patmatexhaust.check b/test/files/neg/patmatexhaust.check index 1c46b6c9e5..ca769300c0 100644 --- a/test/files/neg/patmatexhaust.check +++ b/test/files/neg/patmatexhaust.check @@ -15,8 +15,8 @@ missing combination Qult Qult def ma3(x:Mult) = (x,x) match { // not exhaustive ^ patmatexhaust.scala:49: warning: match is not exhaustive! -missing combination Gu missing combination Gp +missing combination Gu def ma4(x:Deep) = x match { // missing cases: Gu, Gp ^ diff --git a/test/files/pos/bug3097.flags b/test/files/pos/bug3097.flags new file mode 100644 index 0000000000..570b15929d --- /dev/null +++ b/test/files/pos/bug3097.flags @@ -0,0 +1 @@ +-unchecked -Yfatal-warnings diff --git a/test/files/pos/bug3097.scala b/test/files/pos/bug3097.scala new file mode 100644 index 0000000000..a034b960f7 --- /dev/null +++ b/test/files/pos/bug3097.scala @@ -0,0 +1,31 @@ +package seal + +sealed trait ISimpleValue + +sealed trait IListValue extends ISimpleValue { + def items: List[IAtomicValue[_]] +} +sealed trait IAtomicValue[O] extends ISimpleValue { + def data: O +} + +sealed trait IAbstractDoubleValue[O] extends IAtomicValue[O] { } +sealed trait IDoubleValue extends IAbstractDoubleValue[Double] + +case class ListValue(val items: List[IAtomicValue[_]]) extends IListValue +class DoubleValue(val data: Double) extends IDoubleValue { + def asDouble = data +} + +object Test { + /** + * @param args the command line arguments + */ + def main(args: Array[String]): Unit = { + val v: ISimpleValue = new DoubleValue(1) + v match { + case m: IListValue => println("list") + case a: IAtomicValue[_] => println("atomic") + } + } +} -- cgit v1.2.3