summaryrefslogtreecommitdiff
path: root/test/files/neg/t8597.scala
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2014-11-21 15:11:48 +0100
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2014-11-21 15:11:48 +0100
commit304edd816329703919808e5ec851ed946e6f549f (patch)
tree7e39c66afda33546ad91fa5500817a731129da5b /test/files/neg/t8597.scala
parent495fdb3d72194c8b5010e98a1186ccafc95fbd8a (diff)
parent9266dee17c563c3394077e747c5037050cafcde2 (diff)
downloadscala-304edd816329703919808e5ec851ed946e6f549f.tar.gz
scala-304edd816329703919808e5ec851ed946e6f549f.tar.bz2
scala-304edd816329703919808e5ec851ed946e6f549f.zip
Merge pull request #4115 from retronym/ticket/8597
SI-8597 Improved pattern unchecked warnings
Diffstat (limited to 'test/files/neg/t8597.scala')
-rw-r--r--test/files/neg/t8597.scala27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/files/neg/t8597.scala b/test/files/neg/t8597.scala
new file mode 100644
index 0000000000..068e87d91a
--- /dev/null
+++ b/test/files/neg/t8597.scala
@@ -0,0 +1,27 @@
+class Unchecked[C] {
+ def nowarn[T] = (null: Any) match { case _: Some[T] => } // warn (did not warn due to SI-8597)
+
+ // These warned before.
+ def warn1[T] = (null: Any) match { case _: T => } // warn
+ def warn2 = (null: Any) match { case _: Some[String] => } // warn
+ (null: Any) match { case _: Some[C] => } // warn
+
+ // These must remain without warnings. These are excerpts from
+ // related tests that are more exhauative.
+ class C; class D extends C
+ def okay = (List(new D) : Seq[D]) match { case _: List[C] => case _ => } // nowarn
+ class B2[A, B]
+ class A2[X] extends B2[X, String]
+ def okay2(x: A2[Int]) = x match { case _: B2[Int, _] => true } // nowarn
+ def okay3(x: A2[Int]) = x match { case _: B2[Int, typeVar] => true } // nowarn
+
+ def warnArray[T] = (null: Any) match { case _: Array[T] => } // warn (did not warn due to SI-8597)
+ def nowarnArrayC = (null: Any) match { case _: Array[C] => } // nowarn
+
+ def nowarnArrayTypeVar[T] = (null: Any) match { case _: Array[t] => } // nowarn
+
+ def noWarnArrayErasure1 = (null: Any) match {case Some(_: Array[String]) => } // nowarn
+ def noWarnArrayErasure2 = (null: Any) match {case Some(_: Array[List[_]]) => } // nowarn
+ def noWarnArrayErasure3 = (null: Any) match {case Some(_: Array[Array[List[_]]]) => } // nowarn
+ def warnArrayErasure2 = (null: Any) match {case Some(_: Array[Array[List[String]]]) => } // warn
+}