File tree 5 files changed +60
-9
lines changed
5 files changed +60
-9
lines changed Original file line number Diff line number Diff line change
1
+ track (i = 0): Test$.main(i4947a.scala:4)
2
+ track (i = 0): Test$.main(i4947a.scala:5)
1
3
track (i = 2): Test$.main(i4947a.scala:4)
2
4
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
+ main1 (i = -1): Test$.main(i4947a.scala:21 )
6
+ main2 (i = -1): Test$.main(i4947a.scala:22 )
5
7
track (i = 1): Test$.main(i4947a.scala:4)
6
8
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
+ main1 (i = -1): Test$.main(i4947a.scala:21 )
10
+ main2 (i = -1): Test$.main(i4947a.scala:22 )
9
11
track (i = 0): Test$.main(i4947a.scala:4)
10
12
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 )
13
+ main1 (i = -1): Test$.main(i4947a.scala:21 )
14
+ main2 (i = -1): Test$.main(i4947a.scala:22 )
Original file line number Diff line number Diff line change @@ -16,9 +16,11 @@ object Test {
16
16
}
17
17
18
18
def main (args : Array [String ]): Unit = {
19
- fact(2 ) {
20
- printStack(" main1" , - 1 )
21
- printStack(" main2" , - 1 )
19
+ fact(0 ) {
20
+ fact(2 ) {
21
+ printStack(" main1" , - 1 )
22
+ printStack(" main2" , - 1 )
23
+ }
22
24
}
23
25
}
24
26
Original file line number Diff line number Diff line change @@ -2,3 +2,23 @@ track: Test$.main(Test_2.scala:3)
2
2
track: Test$.main(Test_2.scala:3)
3
3
main1: Test$.main(Test_2.scala:4)
4
4
main2: Test$.main(Test_2.scala:5)
5
+ track: Test$.main(Test_2.scala:7)
6
+ track: Test$.main(Test_2.scala:7)
7
+ track: Test$.main(Test_2.scala:8)
8
+ track: Test$.main(Test_2.scala:8)
9
+ main3: Test$.main(Test_2.scala:9)
10
+ main4: Test$.main(Test_2.scala:10)
11
+ track (i = 0): Test$.main(Test_2.scala:13)
12
+ track (i = 0): Test$.main(Test_2.scala:13)
13
+ track (i = 2): Test$.main(Test_2.scala:14)
14
+ track (i = 2): Test$.main(Test_2.scala:14)
15
+ main1 (i = -1): Test$.main(Test_2.scala:15)
16
+ main2 (i = -1): Test$.main(Test_2.scala:16)
17
+ track (i = 1): Test$.main(Test_2.scala:14)
18
+ track (i = 1): Test$.main(Test_2.scala:14)
19
+ main1 (i = -1): Test$.main(Test_2.scala:15)
20
+ main2 (i = -1): Test$.main(Test_2.scala:16)
21
+ track (i = 0): Test$.main(Test_2.scala:14)
22
+ track (i = 0): Test$.main(Test_2.scala:14)
23
+ main1 (i = -1): Test$.main(Test_2.scala:15)
24
+ main2 (i = -1): Test$.main(Test_2.scala:16)
Original file line number Diff line number Diff line change @@ -7,4 +7,19 @@ object Lib {
7
7
def printStack (tag : String ): Unit = {
8
8
println(tag + " : " + new Exception ().getStackTrace().apply(1 ))
9
9
}
10
+
11
+ def printStack (tag : String , i : Int ): Unit = {
12
+ println(s " $tag (i = $i): ${new Exception ().getStackTrace().apply(1 )}" )
13
+ }
14
+
15
+ transparent def fact [T ](transparent i : Int )(f : => T ): Int = {
16
+ printStack(" track" , i)
17
+ printStack(" track" , i)
18
+ f
19
+ if (i == 0 )
20
+ 1
21
+ else {
22
+ i * fact(i- 1 )(f)
23
+ }
24
+ }
10
25
}
Original file line number Diff line number Diff line change @@ -4,6 +4,18 @@ object Test {
4
4
Lib .printStack(" main1" )
5
5
Lib .printStack(" main2" )
6
6
}
7
+ Lib .track {
8
+ Lib .track {
9
+ Lib .printStack(" main3" )
10
+ Lib .printStack(" main4" )
11
+ }
12
+ }
13
+ Lib .fact(0 ) {
14
+ Lib .fact(2 ) {
15
+ Lib .printStack(" main1" , - 1 )
16
+ Lib .printStack(" main2" , - 1 )
17
+ }
18
+ }
7
19
}
8
20
9
21
}
You can’t perform that action at this time.
0 commit comments