summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@epfl.ch>2012-06-25 17:19:58 +0200
committerAdriaan Moors <adriaan.moors@epfl.ch>2012-06-26 20:17:57 +0200
commit4da95609a92f0c685bb7a48688fe9c485f2bc328 (patch)
tree90cff36c5831a3a377e49112e3b24ca7cd52fb53
parentfc0b8644beb564d10ee7f4ea28209aa2053fa1cb (diff)
downloadscala-4da95609a92f0c685bb7a48688fe9c485f2bc328.tar.gz
scala-4da95609a92f0c685bb7a48688fe9c485f2bc328.tar.bz2
scala-4da95609a92f0c685bb7a48688fe9c485f2bc328.zip
SI-5914 handle null in classtag extractor
-rw-r--r--src/library/scala/reflect/ClassTag.scala2
-rw-r--r--test/files/run/t5914.check1
-rw-r--r--test/files/run/t5914.scala9
3 files changed, 11 insertions, 1 deletions
diff --git a/src/library/scala/reflect/ClassTag.scala b/src/library/scala/reflect/ClassTag.scala
index f753dfbcbb..860e7bac28 100644
--- a/src/library/scala/reflect/ClassTag.scala
+++ b/src/library/scala/reflect/ClassTag.scala
@@ -52,7 +52,7 @@ trait ClassTag[T] extends Equals with Serializable {
* `SomeExtractor(...)` is turned into `ct(SomeExtractor(...))` if `T` in `SomeExtractor.unapply(x: T)`
* is uncheckable, but we have an instance of `ClassTag[T]`.
*/
- def unapply(x: Any): Option[T] = if (runtimeClass.isAssignableFrom(x.getClass)) Some(x.asInstanceOf[T]) else None
+ def unapply(x: Any): Option[T] = if (x != null && runtimeClass.isAssignableFrom(x.getClass)) Some(x.asInstanceOf[T]) else None
/** case class accessories */
override def canEqual(x: Any) = x.isInstanceOf[ClassTag[_]]
diff --git a/test/files/run/t5914.check b/test/files/run/t5914.check
new file mode 100644
index 0000000000..818e321255
--- /dev/null
+++ b/test/files/run/t5914.check
@@ -0,0 +1 @@
+correct
diff --git a/test/files/run/t5914.scala b/test/files/run/t5914.scala
new file mode 100644
index 0000000000..53cae9be74
--- /dev/null
+++ b/test/files/run/t5914.scala
@@ -0,0 +1,9 @@
+import scala.reflect.runtime.universe._
+
+object Test extends App {
+ val tree: Tree = null
+ tree match {
+ case TypeTree() => println("lolwut")
+ case null => println("correct")
+ }
+} \ No newline at end of file