aboutsummaryrefslogtreecommitdiff
path: root/tests/pos/extractor-types.scala
blob: 200279be6ffe190f519023dcc879d249fbb68305 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package p1 {
  object Ex  { def unapply(p: Any): Option[_ <: Int] = null }
  object Foo { val Ex(_) = null }
}
// a.scala:2: error: error during expansion of this match (this is a scalac bug).
// The underlying error was: type mismatch;
//  found   : Some[_$1(in value x$1)] where type _$1(in value x$1)
//  required: Some[_$1(in method unapply)]
// object Foo { val Ex(_) = null }
//                    ^
// one error found

package p2 {
  trait Other {
    class Quux
    object Baz { def unapply(x: Any): Option[Quux] = None }
  }
  trait Reifiers {
    def f(): Unit = {
      val u2: Other = null
      (null: Any) match { case u2.Baz(x) => println(x) } //: u2.Quux) }
      // The underlying error was: type mismatch;
      //  found   : Other#Quux
      //  required: u2.Quux
      //     x match { case u2.Baz(x) => println(x: u2.Quux) }
      //       ^
      // one error found
    }
  }
}