Skip to content

Commit 27ab7ee

Browse files
committed
Test recursive transparent method
1 parent d52c3b2 commit 27ab7ee

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

tests/run/i4947a.check

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
track (i = 2): Test$.main(i4947a.scala:4)
2+
track (i = 2): Test$.main(i4947a.scala:5)
3+
main1 (i = -1): Test$.main(i4947a.scala:20)
4+
main2 (i = -1): Test$.main(i4947a.scala:21)
5+
track (i = 1): Test$.main(i4947a.scala:4)
6+
track (i = 1): Test$.main(i4947a.scala:5)
7+
main1 (i = -1): Test$.main(i4947a.scala:20)
8+
main2 (i = -1): Test$.main(i4947a.scala:21)
9+
track (i = 0): Test$.main(i4947a.scala:4)
10+
track (i = 0): Test$.main(i4947a.scala:5)
11+
main1 (i = -1): Test$.main(i4947a.scala:20)
12+
main2 (i = -1): Test$.main(i4947a.scala:21)

tests/run/i4947a.scala

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
object Test {
2+
3+
transparent def fact[T](transparent i: Int)(f: => T): Int = {
4+
printStack("track", i)
5+
printStack("track", i)
6+
f
7+
if (i == 0)
8+
1
9+
else {
10+
i * fact(i-1)(f)
11+
}
12+
}
13+
14+
def printStack(tag: String, i: Int): Unit = {
15+
println(s"$tag (i = $i): ${new Exception().getStackTrace().apply(1)}")
16+
}
17+
18+
def main(args: Array[String]): Unit = {
19+
fact(2) {
20+
printStack("main1", -1)
21+
printStack("main2", -1)
22+
}
23+
}
24+
25+
}

0 commit comments

Comments
 (0)