aboutsummaryrefslogtreecommitdiff
path: root/tests/run/inlineForeach.scala
diff options
context:
space:
mode:
authorGuillaume Martres <smarter@ubuntu.com>2016-10-06 15:02:17 +0200
committerGitHub <noreply@github.com>2016-10-06 15:02:17 +0200
commit87a775724173bd803a0c4956408e61fd0d5812af (patch)
treec564a236f9247b085ed26c1fb007dad74ed049dd /tests/run/inlineForeach.scala
parenta3064622e7ce4d73ddd91de0fc6bebfe0ec23ae9 (diff)
parente0a14e7939eda6a7f4914831975b2ac8877696f2 (diff)
downloaddotty-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.scala48
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")
+ }
+}