diff options
author | Paul Phillips <paulp@improving.org> | 2013-10-01 20:28:48 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2013-10-01 20:41:41 -0700 |
commit | 5708e9d73ba01c286d7155606b72caeab914face (patch) | |
tree | 422ca2158adb3392aa3826ea9ab9cae4a379f5ce /test/files/neg/gadts2.scala | |
parent | 95d5554b9a263e3eb060c181463234f3e79864ab (diff) | |
download | scala-5708e9d73ba01c286d7155606b72caeab914face.tar.gz scala-5708e9d73ba01c286d7155606b72caeab914face.tar.bz2 scala-5708e9d73ba01c286d7155606b72caeab914face.zip |
SI-6680 unsoundness in gadt typing.
Introduces -Xstrict-inference to deal with the significant
gap between soundness and what presently compiles. I'm hopeful
that it's TOO strict, because it finds e.g. 75 errors compiling
immutable/IntMap.scala, but it might be that bad.
Diffstat (limited to 'test/files/neg/gadts2.scala')
-rw-r--r-- | test/files/neg/gadts2.scala | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/test/files/neg/gadts2.scala b/test/files/neg/gadts2.scala new file mode 100644 index 0000000000..156944b8d9 --- /dev/null +++ b/test/files/neg/gadts2.scala @@ -0,0 +1,12 @@ +trait Super[+A] +case class Sub[B](f: B => B) extends Super[B] + +object Test extends App { + val s1 = Sub((x: Int) => x) + + (s1: Super[Any]) match { case Sub(f) => f("abc") } +} +// java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer +// at scala.runtime.BoxesRunTime.unboxToInt(BoxesRunTime.java:105) +// at Test$$anonfun$1.apply(a.scala:5) +// at Test$.delayedEndpoint$Test$1(a.scala:7) |