Weirdly, this needs the "final" to compile post-patch.
```
class Super5 {
  final val q = ""
  def q1: q.type = q
}

class Test5 extends Super5 {
  val a = ""
  object Id {
    def unapply(xxxx: Any): Some[Test5.super.q.type] = Some[Test5.super.q.type](q1)
  }
  val b: Test5.super.q.type = a match {
    case Id(x) => x
  }
}
```
Without it:
```
test/files/pos/infersingle.scala:49: error: type mismatch;
 found   : Test5.this.q.type (with underlying type String)
 required: Test5.super.q.type
    def unapply(xxxx: Any): Some[Test5.super.q.type] = Some[Test5.super.q.type](q1)
                                                                                ^
one error found
```
Does that make any sense? Isn't it an upcast?