summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2015-02-05 10:27:54 +0100
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2015-02-05 10:27:54 +0100
commite3a171d76c9d596a8804897c1c6f27a069a0a18d (patch)
treef2aea118b4f2eaade7a79c0cd34613c942800822
parente8228865bf269179de3132a9b570d308e1875dcd (diff)
parent6b26f3b6a187c4c8f606b8f7e4b0ae84dc9cdebe (diff)
downloadscala-e3a171d76c9d596a8804897c1c6f27a069a0a18d.tar.gz
scala-e3a171d76c9d596a8804897c1c6f27a069a0a18d.tar.bz2
scala-e3a171d76c9d596a8804897c1c6f27a069a0a18d.zip
Merge pull request #4295 from retronym/ticket/9135
SI-9135 Fix NPE, a regression in the pattern matcher
-rw-r--r--src/reflect/scala/reflect/internal/Trees.scala2
-rw-r--r--test/files/pos/t9135.scala16
2 files changed, 17 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/Trees.scala b/src/reflect/scala/reflect/internal/Trees.scala
index ccf907e05d..fd918b8595 100644
--- a/src/reflect/scala/reflect/internal/Trees.scala
+++ b/src/reflect/scala/reflect/internal/Trees.scala
@@ -1622,7 +1622,7 @@ trait Trees extends api.Trees {
}
private def invalidateSingleTypeCaches(tree: Tree): Unit = {
if (mutatedSymbols.nonEmpty)
- for (t <- tree)
+ for (t <- tree if t.tpe != null)
for (tp <- t.tpe) {
tp match {
case s: SingleType if mutatedSymbols contains s.sym =>
diff --git a/test/files/pos/t9135.scala b/test/files/pos/t9135.scala
new file mode 100644
index 0000000000..1e2c97baf9
--- /dev/null
+++ b/test/files/pos/t9135.scala
@@ -0,0 +1,16 @@
+
+class Free[A] {
+
+
+ this match {
+ case a @ Gosub() => gosub(a.a)(x => gosub(???)(???))
+ }
+ def gosub[A, B](a0: Free[A])(f0: A => Any): Free[B] = ???
+}
+
+
+
+ case class Gosub[B]() extends Free[B] {
+ type C
+ def a: Free[C] = ???
+ }