diff options
Diffstat (limited to 'tests/untried/pos/optmatch.scala')
-rw-r--r-- | tests/untried/pos/optmatch.scala | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/untried/pos/optmatch.scala b/tests/untried/pos/optmatch.scala new file mode 100644 index 000000000..354be65da --- /dev/null +++ b/tests/untried/pos/optmatch.scala @@ -0,0 +1,33 @@ +// final case class NonZeroLong(value: Long) extends AnyVal { +// def get: Long = value +// def isEmpty: Boolean = get == 0l +// } + +class NonZeroLong(val value: Long) extends AnyVal { + def get: Long = value + def isEmpty: Boolean = get == 0l +} +object NonZeroLong { + def unapply(value: Long): NonZeroLong = new NonZeroLong(value) +} + + +object Foo { + def unapply(x: Int): NonZeroLong = new NonZeroLong(1L << x) + // public long unapply(int); + // 0: lconst_1 + // 1: iload_1 + // 2: lshl + // 3: lreturn +} + +object Test { + def f(x: Int): Int = x match { + case Foo(1024l) => 1 + case _ => 2 + } + def main(args: Array[String]): Unit = { + println(f(10)) + println(f(11)) + } +} |