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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
case class Foo(x: Int)(y: Int)
case class Bar
abstract class Base
abstract case class Abs(x: Int) extends Base
object M {
abstract case class C(x: String) {}
object C extends (String => C) {
def apply(x: String): C = {
println("creating C("+x+")")
new C(x) {}
}
}
}
object Test extends App {
def Abs(x: Int) = new Abs(x * 2){}
Abs(2) match {
case Abs(4) => ;
}
def fn[a,b](x: a => b) = x;
val f = fn(Foo(1))
(f(2): AnyRef) match {
case Foo(1) => Console.println("OK")
case Bar() => Console.println("NO")
}
try {
Bar() productElement 3
throw new NullPointerException("duh")
} catch {
case x:IndexOutOfBoundsException =>
}
M.C("hi") match {
case M.C("hi") => println("OK")
case _ => println("NO")
}
try {
f(2) productElement 3
throw new NullPointerException("duh")
} catch {
case x:IndexOutOfBoundsException =>
}
}
|