summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2016-02-17 10:37:44 +1000
committerJason Zaugg <jzaugg@gmail.com>2016-03-04 14:10:14 +1000
commitd1def30417d44ef2a6830b3337bf4063c7144b4b (patch)
tree9543d18f92884bd5e72e59859f6d0a50fc3c9847 /test
parent92ce5a50fea326d0bb1c2360c95baf1578520429 (diff)
downloadscala-d1def30417d44ef2a6830b3337bf4063c7144b4b.tar.gz
scala-d1def30417d44ef2a6830b3337bf4063c7144b4b.tar.bz2
scala-d1def30417d44ef2a6830b3337bf4063c7144b4b.zip
SI-9658 Fix crosstalk between partial fun. and GADT match
When typechecking the synthetic default case of a pattern matching anonymous partial function, we failed to create a new `Context`. This led to crosstalk with the management of the saved type bounds of an enclosing GADT pattern match. This commit avoids the direct call to `typeCase` and instead indirects through `typedCases`, which spawns a new nested typer context, and hence avoids the crosstalk when `restoreSavedTypeBounds` runs.
Diffstat (limited to 'test')
-rw-r--r--test/files/pos/t9658.scala10
1 files changed, 10 insertions, 0 deletions
diff --git a/test/files/pos/t9658.scala b/test/files/pos/t9658.scala
new file mode 100644
index 0000000000..a2c695a8ae
--- /dev/null
+++ b/test/files/pos/t9658.scala
@@ -0,0 +1,10 @@
+sealed trait G[T]
+case object GI extends G[Int]
+
+class C {
+ def typerFail[T](rt: G[T]): T = rt match {
+ case GI =>
+ { case x => x } : PartialFunction[Any, Any] // comment this line, compiles.
+ 0 // found Int, required T
+ }
+}