Permalink
Browse files

Merge pull request #2838 from retronym/ticket/7716

SI-7716 Exclude patmat synthetics from bounds checking
  • Loading branch information...
2 parents 41ccb26 + 42e0f73 commit 7b351dca8458f599f5fafef4daa307351031ef06 @JamesIry JamesIry committed Aug 16, 2013
Showing with 19 additions and 1 deletion.
  1. +3 −1 src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
  2. +16 −0 test/files/pos/t7716.scala
@@ -1826,9 +1826,11 @@ abstract class RefChecks extends InfoTransform with scala.reflect.internal.trans
case LabelDef(_, _, _) if treeInfo.hasSynthCaseSymbol(result) =>
val old = inPattern
inPattern = true
- val res = deriveLabelDef(result)(transform)
+ val res = deriveLabelDef(result)(transform) // TODO SI-7756 Too broad! The code from the original case body should be fully refchecked!
inPattern = old
res
+ case ValDef(_, _, _, _) if treeInfo.hasSynthCaseSymbol(result) =>
+ deriveValDef(result)(transform) // SI-7716 Don't refcheck the tpt of the synthetic val that holds the selector.
case _ =>
super.transform(result)
}
View
@@ -0,0 +1,16 @@
+object Test {
+ def test: Unit = {
+ val e: java.lang.Enum[_] = java.util.concurrent.TimeUnit.SECONDS
+ e match { case x => println(x) }
+
+
+ trait TA[X <: CharSequence]
+ val ta: TA[_] = new TA[String] {}
+
+ ta match {
+ case _ => println("hi")
+ }
+
+ def f(ta: TA[_]) = ta match { case _ => "hi" }
+ }
+}

0 comments on commit 7b351dc

Please sign in to comment.