diff options
author | Guillaume Martres <smarter@ubuntu.com> | 2016-10-06 15:02:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-06 15:02:17 +0200 |
commit | 87a775724173bd803a0c4956408e61fd0d5812af (patch) | |
tree | c564a236f9247b085ed26c1fb007dad74ed049dd /tests/run/inlineForeach.scala | |
parent | a3064622e7ce4d73ddd91de0fc6bebfe0ec23ae9 (diff) | |
parent | e0a14e7939eda6a7f4914831975b2ac8877696f2 (diff) | |
download | dotty-87a775724173bd803a0c4956408e61fd0d5812af.tar.gz dotty-87a775724173bd803a0c4956408e61fd0d5812af.tar.bz2 dotty-87a775724173bd803a0c4956408e61fd0d5812af.zip |
Merge pull request #1492 from dotty-staging/add-inline
Implement inline
Diffstat (limited to 'tests/run/inlineForeach.scala')
-rw-r--r-- | tests/run/inlineForeach.scala | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/run/inlineForeach.scala b/tests/run/inlineForeach.scala new file mode 100644 index 000000000..1389ad6c4 --- /dev/null +++ b/tests/run/inlineForeach.scala @@ -0,0 +1,48 @@ +object Test { + + class Range(from: Int, end: Int) { + + inline + def foreach(inline op: Int => Unit): Unit = { + var i = from + while (i < end) { + op(i) + i += 1 + } + } + + def filter(p: Int => Boolean): List[Int] = ??? + } + + implicit class intWrapper(private val start: Int) extends AnyVal { + def until(end: Int) = new Range(start, end) + def to(limit: Int) = new Range(start, limit + 1) + } + + def matmul(xs: Array[Array[Double]], ys: Array[Array[Double]]): Array[Array[Double]] = { + def nrows = xs.length + def ncols = ys(0).length + def n = ys.length + assert(xs(0).length == n) + val zs = Array.ofDim[Double](nrows, ncols) + for (i <- intWrapper(0) until nrows) + for (j <- 0 until ncols) { + var x = 0.0 + for (k <- 0 until n) + x += xs(i)(k) * ys(k)(j) + zs(i)(j) = x + } + zs + } + + def main(args: Array[String]) = { + 1.until(10).foreach(i => println(i)) + 1.until(10).foreach(println(_)) + 1.until(10).foreach(println) + for (i <- 1 to 10) println(i) + + for (k1 <- 1 to 10) + for (k2 <- 1 to 10) + println(s"$k1") + } +} |