scala/scala — pull request #2838 by retronym (2013-08-16 10:13:35+00:00)
Title: SI-7716 Exclude patmat synthetics from bounds checking

Consider this pattern match translation, that occurs *before* refchecks:

scala> val e: java.lang.Enum[_] = java.util.concurrent.TimeUnit.SECONDS

scala> e match { case x => x }
:9: error: type arguments [_$1] do not conform to class Enum's type parameter bounds [E <: Enum[E]]
e match { case x => x }
^
[[syntax trees at end of refchecks]] //
package $line5 {
case val x1: Enum[_$1] = $line3.$read.$iw.$iw.e;
case4(){
matchEnd3(x1)
};
matchEnd3(x: Enum[_$1]){
x
}

RefChecks turns a blind eye to the non-conformant type `Enum[_$1]` in
the label defs because of `65340ed4ad2e`. (Incidentally, that is far
too broad, as I've noted in SI-7756.)

This commit extends this exception to cover the synthetic ValDef `x1`.

Commit log watchers might notice the similarities to SI-7694.

Review by @adriaanm / @JamesIry. I think this one makes sense for 2.10.3.