diff options
-rw-r--r-- | tests/run/inlineArrowAssoc.scala | 24 | ||||
-rw-r--r-- | tests/run/inlineLazy.scala | 6 | ||||
-rw-r--r-- | tests/run/inlinePrivates.scala | 54 |
3 files changed, 84 insertions, 0 deletions
diff --git a/tests/run/inlineArrowAssoc.scala b/tests/run/inlineArrowAssoc.scala new file mode 100644 index 000000000..c3625609a --- /dev/null +++ b/tests/run/inlineArrowAssoc.scala @@ -0,0 +1,24 @@ +import scala.collection.immutable._ + +import scala.collection.mutable.{ Builder, ListBuffer } + +object Test { + + private val defaultOrdering = Map[Numeric[_], Ordering[_]]( + Numeric.BigIntIsIntegral -> Ordering.BigInt, + Numeric.IntIsIntegral -> Ordering.Int + ) + + final implicit class ArrowAssoc[A](private val self: A) extends AnyVal { + @inline def -> [B](y: B): Tuple2[A, B] = Tuple2(self, y) + def →[B](y: B): Tuple2[A, B] = ->(y) + } + + def main(args: Array[String]): Unit = { + assert((1 -> 2) == (1, 2)) + assert((1 → 2) == (1, 2)) + } + + +} + diff --git a/tests/run/inlineLazy.scala b/tests/run/inlineLazy.scala new file mode 100644 index 000000000..a8aa92498 --- /dev/null +++ b/tests/run/inlineLazy.scala @@ -0,0 +1,6 @@ +class Test { + + lazy val x: Int = 33 + + println(x) +} diff --git a/tests/run/inlinePrivates.scala b/tests/run/inlinePrivates.scala new file mode 100644 index 000000000..ade4592df --- /dev/null +++ b/tests/run/inlinePrivates.scala @@ -0,0 +1,54 @@ +object Test { + + class C[T](private val x: T) { + + private def foo[Z](z: Z): T = x + + private var y: T = _ + + @inline def get1 = x + @inline def get2[U](c: C[U]) = c.x + + @inline def foo1(x: Int) = foo(x) + @inline def foo2[U](c: C[U]) = c.foo(x) + + @inline def set1(z: T) = { y = z; y } + @inline def set2[U](c: C[U]) = { c.y = c.x; c.y } + } + + object CC { + private val x = 3 + @inline def get1 = x + } + + def main(args: Array[String]) = { + val cc = new C(2) + assert(cc.get1 == 2) + assert(cc.get2(cc) == 2) + assert(cc.foo1(1) == 2) + assert(cc.foo2(cc) == 2) + assert(cc.set1(3) == 3) + assert(cc.set2(cc) == 2) +object Test { + + @inline + def swap[T](x: T, x_= : T => Unit, y: T, y_= : T => Unit) = { + val t = x + x_=(y) + y_=(t) + } + + def main(args: Array[String]) = { + var x = 1 + var y = 2 + @inline def setX(z: Int) = x = z + @inline def setY(z: Int) = y = z + swap[Int](x, setX, y, setY) + assert(x == 2 && y == 1) + } +} + + assert(CC.get1 == 3) + } + +} |