File: extractor-types.scala

package info (click to toggle)
scala 2.11.12-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 62,924 kB
  • sloc: javascript: 28,808; java: 13,415; xml: 3,135; sh: 1,620; python: 756; makefile: 38; awk: 36; ansic: 6
file content (30 lines) | stat: -rw-r--r-- 892 bytes parent folder | download | duplicates (4)
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() {
      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
    }
  }
}