diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2016-02-17 10:37:44 +1000 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2016-03-04 14:10:14 +1000 |
commit | d1def30417d44ef2a6830b3337bf4063c7144b4b (patch) | |
tree | 9543d18f92884bd5e72e59859f6d0a50fc3c9847 /test/files/pos | |
parent | 92ce5a50fea326d0bb1c2360c95baf1578520429 (diff) | |
download | scala-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/files/pos')
-rw-r--r-- | test/files/pos/t9658.scala | 10 |
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 + } +} |