[FIR] Tests. Change extension for testdata with cgf from .cfg.dot to .dot
Also remove cfg dumps in made with old renderer
This commit is contained in:
@@ -1,97 +0,0 @@
|
||||
0: Enter function "test_1" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Enter when -> 3 | <- 1
|
||||
3: Enter when branch condition -> 4 | <- 2
|
||||
4: Enter || -> 5, 8 | <- 3
|
||||
5: Access variable R|<local>/b1| -> 6, 8 | <- 4
|
||||
6: Exit left part of || -> 7 | <- 5
|
||||
7: Access variable R|<local>/b2| -> 8 | <- 6
|
||||
8: Exit || -> 9 | <- 4, 5, 7
|
||||
9: Exit when branch condition -> 10, 14 | <- 8
|
||||
10: Enter block -> 11 | <- 9
|
||||
11: Const: Int(1) -> 12 | <- 10
|
||||
12: Exit block -> 13 | <- 11
|
||||
13: Exit when branch result -> 19 | <- 12
|
||||
14: Enter when branch condition "else" -> 15 | <- 9
|
||||
15: Exit when branch condition -> 16 | <- 14
|
||||
16: Enter block -> 17 | <- 15
|
||||
17: Exit block -> 18 | <- 16
|
||||
18: Exit when branch result -> 19 | <- 17
|
||||
19: Exit when -> 20 | <- 13, 18
|
||||
20: Exit block -> 21 | <- 19
|
||||
21: Exit function "test_1" -> | <- 20
|
||||
|
||||
0: Enter function "test_2" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Enter when -> 3 | <- 1
|
||||
3: Enter when branch condition -> 4 | <- 2
|
||||
4: Enter && -> 5 | <- 3
|
||||
5: Access variable R|<local>/b1| -> 6, 7 | <- 4
|
||||
6: Access variable R|<local>/b2| -> 7 | <- 5
|
||||
7: Exit && -> 8 | <- 5, 6
|
||||
8: Exit when branch condition -> 9, 13 | <- 7
|
||||
9: Enter block -> 10 | <- 8
|
||||
10: Const: Int(1) -> 11 | <- 9
|
||||
11: Exit block -> 12 | <- 10
|
||||
12: Exit when branch result -> 18 | <- 11
|
||||
13: Enter when branch condition "else" -> 14 | <- 8
|
||||
14: Exit when branch condition -> 15 | <- 13
|
||||
15: Enter block -> 16 | <- 14
|
||||
16: Exit block -> 17 | <- 15
|
||||
17: Exit when branch result -> 18 | <- 16
|
||||
18: Exit when -> 19 | <- 12, 17
|
||||
19: Exit block -> 20 | <- 18
|
||||
20: Exit function "test_2" -> | <- 19
|
||||
|
||||
0: Enter function "test_3" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Enter when -> 3 | <- 1
|
||||
3: Enter when branch condition -> 4 | <- 2
|
||||
4: Enter || -> 5, 11 | <- 3
|
||||
5: Enter && -> 6 | <- 4
|
||||
6: Access variable R|<local>/b1| -> 7, 8 | <- 5
|
||||
7: Access variable R|<local>/b2| -> 8 | <- 6
|
||||
8: Exit && -> 9, 11 | <- 6, 7
|
||||
9: Exit left part of || -> 10 | <- 8
|
||||
10: Access variable R|<local>/b3| -> 11 | <- 9
|
||||
11: Exit || -> 12 | <- 4, 8, 10
|
||||
12: Exit when branch condition -> 13, 17 | <- 11
|
||||
13: Enter block -> 14 | <- 12
|
||||
14: Const: Int(1) -> 15 | <- 13
|
||||
15: Exit block -> 16 | <- 14
|
||||
16: Exit when branch result -> 22 | <- 15
|
||||
17: Enter when branch condition "else" -> 18 | <- 12
|
||||
18: Exit when branch condition -> 19 | <- 17
|
||||
19: Enter block -> 20 | <- 18
|
||||
20: Exit block -> 21 | <- 19
|
||||
21: Exit when branch result -> 22 | <- 20
|
||||
22: Exit when -> 23 | <- 16, 21
|
||||
23: Exit block -> 24 | <- 22
|
||||
24: Exit function "test_3" -> | <- 23
|
||||
|
||||
0: Enter function "test_4" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Enter when -> 3 | <- 1
|
||||
3: Enter when branch condition -> 4 | <- 2
|
||||
4: Enter || -> 5, 11 | <- 3
|
||||
5: Access variable R|<local>/b1| -> 6, 11 | <- 4
|
||||
6: Exit left part of || -> 7 | <- 5
|
||||
7: Enter && -> 8 | <- 6
|
||||
8: Access variable R|<local>/b2| -> 9, 10 | <- 7
|
||||
9: Access variable R|<local>/b3| -> 10 | <- 8
|
||||
10: Exit && -> 11 | <- 8, 9
|
||||
11: Exit || -> 12 | <- 4, 5, 10
|
||||
12: Exit when branch condition -> 13, 17 | <- 11
|
||||
13: Enter block -> 14 | <- 12
|
||||
14: Const: Int(1) -> 15 | <- 13
|
||||
15: Exit block -> 16 | <- 14
|
||||
16: Exit when branch result -> 22 | <- 15
|
||||
17: Enter when branch condition "else" -> 18 | <- 12
|
||||
18: Exit when branch condition -> 19 | <- 17
|
||||
19: Enter block -> 20 | <- 18
|
||||
20: Exit block -> 21 | <- 19
|
||||
21: Exit when branch result -> 22 | <- 20
|
||||
22: Exit when -> 23 | <- 16, 21
|
||||
23: Exit block -> 24 | <- 22
|
||||
24: Exit function "test_4" -> | <- 23
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
0: Enter function "fetchPluginReleaseDate" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Const: String(https://plugins.jetbrains.com/api/plugins/) -> 3 | <- 1
|
||||
3: Access variable R|<local>/pluginId| -> 4 | <- 2
|
||||
4: Access variable <Unresolved name: idString># -> 5 | <- 3
|
||||
5: Const: String(/updates?version=) -> 6 | <- 4
|
||||
6: Access variable R|<local>/version| -> 7 | <- 5
|
||||
7: Variable declaration: lval url: R|kotlin/String| -> 8 | <- 6
|
||||
8: Try expression enter -> 9 | <- 7
|
||||
9: Try main block enter -> 10, 17, 26, 41 | <- 8
|
||||
10: Enter block -> 11 | <- 9
|
||||
11: Access variable <Unresolved name: HttpRequests># -> 12 | <- 10
|
||||
12: Access variable R|<local>/url| -> 13 | <- 11
|
||||
13: Function call: <Unresolved name: HttpRequests>#.<Unresolved name: request>#(R|<local>/url|) -> 14 | <- 12
|
||||
14: Function call: <Unresolved name: HttpRequests>#.<Unresolved name: request>#(R|<local>/url|).<Unresolved name: connect>#(<L> = connect@fun <implicit>.<anonymous>(): <implicit> {
|
||||
GsonBuilder#().create#().fromJson#(it#.inputStream#.reader#(), <getClass>(Array#<R|class error: Symbol not found, for `PluginDTO`|>()).java#)
|
||||
}
|
||||
) -> 15 | <- 13
|
||||
15: Exit block -> 16 | <- 14
|
||||
16: Try main block exit -> 34 | <- 15
|
||||
17: Catch enter -> 18, 41 | <- 9
|
||||
18: Enter block -> 19 | <- 17
|
||||
19: Const: String(Can't parse json response) -> 20 | <- 18
|
||||
20: Access variable R|<local>/syntaxException| -> 21 | <- 19
|
||||
21: Function call: <Unresolved name: ResponseParseException>#(String(Can't parse json response), R|<local>/syntaxException|) -> 22 | <- 20
|
||||
22: Throw: throw <Unresolved name: ResponseParseException>#(String(Can't parse json response), R|<local>/syntaxException|) -> 23[DEAD], 41 | <- 21
|
||||
23: Stub[DEAD] -> 24 | <- 22
|
||||
24: Exit block[DEAD] -> 25 | <- 23
|
||||
25: Catch exit[DEAD] -> 34 | <- 24
|
||||
26: Catch enter -> 27, 41 | <- 9
|
||||
27: Enter block -> 28 | <- 26
|
||||
28: Access variable R|<local>/ioException| -> 29 | <- 27
|
||||
29: Function call: <Unresolved name: IOException>#(R|<local>/ioException|) -> 30 | <- 28
|
||||
30: Throw: throw <Unresolved name: IOException>#(R|<local>/ioException|) -> 31[DEAD], 41 | <- 29
|
||||
31: Stub[DEAD] -> 32 | <- 30
|
||||
32: Exit block[DEAD] -> 33 | <- 31
|
||||
33: Catch exit[DEAD] -> 34 | <- 32
|
||||
34: Try expression exit -> 35 | <- 16, 25[DEAD], 33[DEAD]
|
||||
35: Variable declaration: lval pluginDTOs: R|kotlin/Array<class error: Symbol not found, for `PluginDTO`>| -> 36 | <- 34
|
||||
36: Exit block -> 37 | <- 35
|
||||
37: Enter annotation -> 38 | <- 36
|
||||
38: Access variable <Unresolved name: IOException># -> 39 | <- 37
|
||||
39: Access variable <Unresolved name: ResponseParseException># -> 40 | <- 38
|
||||
40: Exit annotation -> 41 | <- 39
|
||||
41: Exit function "fetchPluginReleaseDate" -> | <- 9, 17, 22, 26, 30, 40
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ subgraph fetchPluginReleaseDate {
|
||||
11 [shape=box label="Access variable <Unresolved name: HttpRequests>#"];
|
||||
12 [shape=box label="Access variable R|<local>/url|"];
|
||||
13 [shape=box label="Function call: <Unresolved name: HttpRequests>#.<Unresolved name: request>#(R|<local>/url|)"];
|
||||
14 [shape=box label="Function call: <Unresolved name: HttpRequests>#.<Unresolved name: request>#(R|<local>/url|).<Unresolved name: connect>#(<L> = connect@fun <implicit>.<anonymous>(): <implicit> {
|
||||
14 [shape=box label="Function call: <Unresolved name: HttpRequests>#.<Unresolved name: request>#(R|<local>/url|).<Unresolved name: connect>#(<L> = connect@fun <implicit>.<anonymous>(): <implicit> <kind=EXACTLY_ONCE> {
|
||||
GsonBuilder#().create#().fromJson#(it#.inputStream#.reader#(), <getClass>(Array#<R|class error: Symbol not found, for `PluginDTO`|>()).java#)
|
||||
}
|
||||
)"];
|
||||
@@ -1,2 +0,0 @@
|
||||
digraph initBlock_kt {
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
digraph initBlock_kt {
|
||||
subgraph <init> {
|
||||
0 [shape=box label="Enter function <init>"];
|
||||
1 [shape=box label="Exit function <init>"];
|
||||
|
||||
0 -> {1};
|
||||
}
|
||||
|
||||
subgraph <init> {
|
||||
2 [shape=box label="Enter function <init>"];
|
||||
3 [shape=box label="Exit function <init>"];
|
||||
|
||||
2 -> {3};
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,92 +0,0 @@
|
||||
0: Enter function "test_1" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Enter when -> 3 | <- 1
|
||||
3: Enter when branch condition -> 4 | <- 2
|
||||
4: Access variable R|<local>/x| -> 5 | <- 3
|
||||
5: Const: Null(null) -> 6 | <- 4
|
||||
6: Operator == -> 7 | <- 5
|
||||
7: Exit when branch condition -> 8, 14 | <- 6
|
||||
8: Enter block -> 9 | <- 7
|
||||
9: Function call: R|kotlin/KotlinNullPointerException.KotlinNullPointerException|() -> 10 | <- 8
|
||||
10: Throw: throw R|kotlin/KotlinNullPointerException.KotlinNullPointerException|() -> 11[DEAD], 25 | <- 9
|
||||
11: Stub[DEAD] -> 12 | <- 10
|
||||
12: Exit block[DEAD] -> 13 | <- 11
|
||||
13: Exit when branch result[DEAD] -> 20 | <- 12
|
||||
14: Enter when branch condition "else" -> 15 | <- 7
|
||||
15: Exit when branch condition -> 16 | <- 14
|
||||
16: Enter block -> 17 | <- 15
|
||||
17: Access variable R|<local>/x| -> 18 | <- 16
|
||||
18: Exit block -> 19 | <- 17
|
||||
19: Exit when branch result -> 20 | <- 18
|
||||
20: Exit when -> 21 | <- 13[DEAD], 19
|
||||
21: Variable declaration: lval y: R|kotlin/Int| -> 22 | <- 20
|
||||
22: Access variable R|<local>/y| -> 23 | <- 21
|
||||
23: Function call: R|<local>/y|.R|kotlin/Int.inc|() -> 24 | <- 22
|
||||
24: Exit block -> 25 | <- 23
|
||||
25: Exit function "test_1" -> | <- 10, 24
|
||||
|
||||
0: Enter function "test_2" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Enter when -> 3 | <- 1
|
||||
3: Enter when branch condition -> 4 | <- 2
|
||||
4: Access variable R|<local>/x| -> 5 | <- 3
|
||||
5: Const: Null(null) -> 6 | <- 4
|
||||
6: Operator == -> 7 | <- 5
|
||||
7: Exit when branch condition -> 8, 12 | <- 6
|
||||
8: Enter block -> 9 | <- 7
|
||||
9: Access variable R|<local>/x| -> 10 | <- 8
|
||||
10: Exit block -> 11 | <- 9
|
||||
11: Exit when branch result -> 18 | <- 10
|
||||
12: Enter when branch condition "else" -> 13 | <- 7
|
||||
13: Exit when branch condition -> 14 | <- 12
|
||||
14: Enter block -> 15 | <- 13
|
||||
15: Access variable R|<local>/x| -> 16 | <- 14
|
||||
16: Exit block -> 17 | <- 15
|
||||
17: Exit when branch result -> 18 | <- 16
|
||||
18: Exit when -> 19 | <- 11, 17
|
||||
19: Variable declaration: lval y: R|kotlin/Int?| -> 20 | <- 18
|
||||
20: Access variable R|<local>/y| -> 21 | <- 19
|
||||
21: Function call: R|<local>/y|.<Ambiguity: inc, [kotlin/inc, kotlin/inc]>#() -> 22 | <- 20
|
||||
22: Exit block -> 23 | <- 21
|
||||
23: Exit function "test_2" -> | <- 22
|
||||
|
||||
0: Enter function "test_3" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Enter while loop -> 3 | <- 1
|
||||
3: Enter loop condition -> 4 | <- 2, 13[DEAD]
|
||||
4: Const: Boolean(true) -> 5 | <- 3
|
||||
5: Exit loop condition -> 6, 14 | <- 4
|
||||
6: Enter loop block -> 7 | <- 5
|
||||
7: Enter block -> 8 | <- 6
|
||||
8: Access variable R|<local>/x| -> 9 | <- 7
|
||||
9: Type operator: "x as Int" -> 10 | <- 8
|
||||
10: Jump: break@@@[Boolean(true)] -> 11[DEAD], 14 | <- 9
|
||||
11: Stub[DEAD] -> 12 | <- 10
|
||||
12: Exit block[DEAD] -> 13 | <- 11
|
||||
13: Exit loop block[DEAD] -> 3 | <- 12
|
||||
14: Exit whileloop -> 15 | <- 5, 10
|
||||
15: Access variable R|<local>/x| -> 16 | <- 14
|
||||
16: Function call: R|<local>/x|.<Ambiguity: inc, [kotlin/inc, kotlin/inc]>#() -> 17 | <- 15
|
||||
17: Exit block -> 18 | <- 16
|
||||
18: Exit function "test_3" -> | <- 17
|
||||
|
||||
0: Enter function "test_4" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Enter do-while loop -> 3 | <- 1
|
||||
3: Enter loop block -> 4 | <- 2, 13[DEAD]
|
||||
4: Enter block -> 5 | <- 3
|
||||
5: Access variable R|<local>/x| -> 6 | <- 4
|
||||
6: Type operator: "x as int" -> 7 | <- 5
|
||||
7: Jump: break@@@[Boolean(true)] -> 8[DEAD], 14[DEAD] | <- 6
|
||||
8: Stub[DEAD] -> 9 | <- 7
|
||||
9: Exit block[DEAD] -> 10 | <- 8
|
||||
10: Exit loop block[DEAD] -> 11 | <- 9
|
||||
11: Enter loop condition[DEAD] -> 12 | <- 10
|
||||
12: Const: Boolean(true)[DEAD] -> 13 | <- 11
|
||||
13: Exit loop condition[DEAD] -> 3, 14 | <- 12
|
||||
14: Exit do-whileloop[DEAD] -> 15 | <- 7, 13
|
||||
15: Access variable R|<local>/x|[DEAD] -> 16 | <- 14
|
||||
16: Function call: R|<local>/x|.<Ambiguity: inc, [kotlin/inc, kotlin/inc]>#()[DEAD] -> 17 | <- 15
|
||||
17: Exit block[DEAD] -> 18 | <- 16
|
||||
18: Exit function "test_4"[DEAD] -> | <- 17
|
||||
|
||||
@@ -1,216 +0,0 @@
|
||||
digraph propertiesAndInitBlocks_kt {
|
||||
subgraph run {
|
||||
0 [shape=box label="Enter function run"];
|
||||
1 [shape=box label="Enter block"];
|
||||
2 [shape=box label="Function call: R|<local>/block|.R|FakeOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()"];
|
||||
3 [shape=box label="Exit block"];
|
||||
4 [shape=box label="Exit function run"];
|
||||
|
||||
0 -> {1};
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4};
|
||||
}
|
||||
|
||||
subgraph val_x1 {
|
||||
5 [shape=box label="Enter property"];
|
||||
6 [shape=box label="Const: Int(1)"];
|
||||
7 [shape=box label="Exit property"];
|
||||
|
||||
5 -> {6};
|
||||
6 -> {7};
|
||||
}
|
||||
|
||||
subgraph <getter> {
|
||||
8 [shape=box label="Enter function getter"];
|
||||
9 [shape=box label="Enter block"];
|
||||
10 [shape=box label="Const: Int(1)"];
|
||||
11 [shape=box label="Jump: ^ Int(1)"];
|
||||
12 [shape=box label="Stub[DEAD]"];
|
||||
13 [shape=box label="Exit block[DEAD]"];
|
||||
14 [shape=box label="Exit function getter[DEAD]"];
|
||||
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {14 12} [style=dotted];
|
||||
12 -> {13} [style=dotted];
|
||||
13 -> {14} [style=dotted];
|
||||
}
|
||||
|
||||
subgraph <setter> {
|
||||
15 [shape=box label="Enter function setter"];
|
||||
16 [shape=box label="Enter block"];
|
||||
17 [shape=box label="Const: Int(1)"];
|
||||
18 [shape=box label="Assignmenet: F|/x2|"];
|
||||
19 [shape=box label="Exit block"];
|
||||
20 [shape=box label="Exit function setter"];
|
||||
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
}
|
||||
|
||||
subgraph val_x2 {
|
||||
21 [shape=box label="Enter property"];
|
||||
22 [shape=box label="Const: Int(1)"];
|
||||
23 [shape=box label="Exit property"];
|
||||
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
}
|
||||
|
||||
subgraph <anonymous> {
|
||||
24 [shape=box label="Enter init block"];
|
||||
25 [shape=box label="Enter block"];
|
||||
26 [shape=box label="Function call: <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()"];
|
||||
27 [shape=box label="Throw: throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()"];
|
||||
28 [shape=box label="Stub[DEAD]"];
|
||||
29 [shape=box label="Const: Int(1)[DEAD]"];
|
||||
30 [shape=box label="Exit block[DEAD]"];
|
||||
31 [shape=box label="Exit init block[DEAD]"];
|
||||
32 [shape=box label="Enter function anonymousFunction"];
|
||||
33 [shape=box label="Enter block"];
|
||||
34 [shape=box label="Function call: <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()"];
|
||||
35 [shape=box label="Throw: throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()"];
|
||||
36 [shape=box label="Stub[DEAD]"];
|
||||
37 [shape=box label="Exit block[DEAD]"];
|
||||
38 [shape=box label="Exit function anonymousFunction[DEAD]"];
|
||||
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
27 -> {31 28} [style=dotted];
|
||||
28 -> {29} [style=dotted];
|
||||
29 -> {30} [style=dotted];
|
||||
30 -> {31} [style=dotted];
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
35 -> {38 36} [style=dotted];
|
||||
36 -> {37} [style=dotted];
|
||||
37 -> {38} [style=dotted];
|
||||
}
|
||||
|
||||
subgraph foo {
|
||||
39 [shape=box label="Enter function foo"];
|
||||
40 [shape=box label="Enter block"];
|
||||
41 [shape=box label="Const: Int(1)"];
|
||||
42 [shape=box label="Const: Int(1)"];
|
||||
43 [shape=box label="Function call: Int(1).R|kotlin/Int.plus|(Int(1))"];
|
||||
44 [shape=box label="Variable declaration: lval c: R|kotlin/Int|"];
|
||||
45 [shape=box label="Function call: <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()"];
|
||||
46 [shape=box label="Throw: throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()"];
|
||||
47 [shape=box label="Stub[DEAD]"];
|
||||
48 [shape=box label="Exit block[DEAD]"];
|
||||
49 [shape=box label="Exit function foo[DEAD]"];
|
||||
|
||||
39 -> {40};
|
||||
40 -> {41};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
43 -> {44};
|
||||
44 -> {45};
|
||||
45 -> {46};
|
||||
46 -> {49 47} [style=dotted];
|
||||
47 -> {48} [style=dotted];
|
||||
48 -> {49} [style=dotted];
|
||||
}
|
||||
|
||||
subgraph <getter> {
|
||||
50 [shape=box label="Enter init block"];
|
||||
51 [shape=box label="Enter block"];
|
||||
52 [shape=box label="Function call: <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()"];
|
||||
53 [shape=box label="Throw: throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()"];
|
||||
54 [shape=box label="Stub[DEAD]"];
|
||||
55 [shape=box label="Exit block[DEAD]"];
|
||||
56 [shape=box label="Exit init block[DEAD]"];
|
||||
57 [shape=box label="Enter function getter"];
|
||||
58 [shape=box label="Enter block"];
|
||||
59 [shape=box label="Exit block"];
|
||||
60 [shape=box label="Exit function getter"];
|
||||
|
||||
50 -> {51};
|
||||
51 -> {52};
|
||||
52 -> {53};
|
||||
53 -> {56 54} [style=dotted];
|
||||
54 -> {55} [style=dotted];
|
||||
55 -> {56} [style=dotted];
|
||||
57 -> {58};
|
||||
58 -> {59};
|
||||
59 -> {60};
|
||||
}
|
||||
|
||||
subgraph val_x3 {
|
||||
61 [shape=box label="Enter property"];
|
||||
62 [shape=box label="Function call: R|/run|(<L> = run@fun <anonymous>(): R|kotlin/Unit| {
|
||||
local final fun foo(): R|kotlin/Unit| {
|
||||
lval c: R|kotlin/Int| = Int(1).R|kotlin/Int.plus|(Int(1))
|
||||
throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()
|
||||
}
|
||||
|
||||
local final class LocalClass : R|kotlin/Any| {
|
||||
public constructor(): R|LocalClass| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
init {
|
||||
throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()
|
||||
Int(1)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()
|
||||
}
|
||||
)"];
|
||||
63 [shape=box label="Exit property"];
|
||||
|
||||
61 -> {62};
|
||||
62 -> {63};
|
||||
}
|
||||
|
||||
subgraph val_x4 {
|
||||
64 [shape=box label="Enter property"];
|
||||
65 [shape=box label="Try expression enter"];
|
||||
66 [shape=box label="Try main block enter"];
|
||||
67 [shape=box label="Enter block"];
|
||||
68 [shape=box label="Const: Int(1)"];
|
||||
69 [shape=box label="Exit block"];
|
||||
70 [shape=box label="Try main block exit"];
|
||||
71 [shape=box label="Enter finally"];
|
||||
72 [shape=box label="Enter block"];
|
||||
73 [shape=box label="Const: Int(0)"];
|
||||
74 [shape=box label="Exit block"];
|
||||
75 [shape=box label="Exit finally"];
|
||||
76 [shape=box label="Catch enter"];
|
||||
77 [shape=box label="Enter block"];
|
||||
78 [shape=box label="Const: Int(2)"];
|
||||
79 [shape=box label="Exit block"];
|
||||
80 [shape=box label="Catch exit"];
|
||||
81 [shape=box label="Try expression exit"];
|
||||
82 [shape=box label="Exit property"];
|
||||
|
||||
64 -> {65};
|
||||
65 -> {66};
|
||||
66 -> {82 76 71 67};
|
||||
67 -> {68};
|
||||
68 -> {69};
|
||||
69 -> {70};
|
||||
70 -> {81};
|
||||
71 -> {72};
|
||||
72 -> {73};
|
||||
73 -> {74};
|
||||
74 -> {75};
|
||||
75 -> {81};
|
||||
76 -> {82 77};
|
||||
77 -> {78};
|
||||
78 -> {79};
|
||||
79 -> {80};
|
||||
80 -> {81};
|
||||
81 -> {82};
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,113 +0,0 @@
|
||||
0: Enter function "run" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Function call: R|<local>/block|.R|FakeOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|() -> 3 | <- 1
|
||||
3: Exit block -> 4 | <- 2
|
||||
4: Exit function "run" -> | <- 3
|
||||
|
||||
0: Enter property -> 1
|
||||
1: Const: Int(1) -> 2 | <- 0
|
||||
2: Exit property -> | <- 1
|
||||
|
||||
0: Enter function "getter" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Const: Int(1) -> 3 | <- 1
|
||||
3: Jump: ^ Int(1) -> 4[DEAD], 6[DEAD] | <- 2
|
||||
4: Stub[DEAD] -> 5 | <- 3
|
||||
5: Exit block[DEAD] -> 6 | <- 4
|
||||
6: Exit function "getter"[DEAD] -> | <- 3, 5
|
||||
|
||||
0: Enter function "setter" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Const: Int(1) -> 3 | <- 1
|
||||
3: Assignmenet: F|/x2| -> 4 | <- 2
|
||||
4: Exit block -> 5 | <- 3
|
||||
5: Exit function "setter" -> | <- 4
|
||||
|
||||
0: Enter property -> 1
|
||||
1: Const: Int(1) -> 2 | <- 0
|
||||
2: Exit property -> | <- 1
|
||||
|
||||
0: Enter init block -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Function call: <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#() -> 3 | <- 1
|
||||
3: Throw: throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#() -> 4[DEAD], 7[DEAD] | <- 2
|
||||
4: Stub[DEAD] -> 5 | <- 3
|
||||
5: Const: Int(1)[DEAD] -> 6 | <- 4
|
||||
6: Exit block[DEAD] -> 7 | <- 5
|
||||
7: Exit init block[DEAD] -> | <- 3, 6
|
||||
8: Enter function "anonymousFunction" -> 9
|
||||
9: Enter block -> 10 | <- 8
|
||||
10: Function call: <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#() -> 11 | <- 9
|
||||
11: Throw: throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#() -> 12[DEAD], 14[DEAD] | <- 10
|
||||
12: Stub[DEAD] -> 13 | <- 11
|
||||
13: Exit block[DEAD] -> 14 | <- 12
|
||||
14: Exit function "anonymousFunction"[DEAD] -> | <- 11, 13
|
||||
|
||||
0: Enter function "foo" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Const: Int(1) -> 3 | <- 1
|
||||
3: Const: Int(1) -> 4 | <- 2
|
||||
4: Function call: Int(1).R|kotlin/Int.plus|(Int(1)) -> 5 | <- 3
|
||||
5: Variable declaration: lval c: R|kotlin/Int| -> 6 | <- 4
|
||||
6: Function call: <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#() -> 7 | <- 5
|
||||
7: Throw: throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#() -> 8[DEAD], 10[DEAD] | <- 6
|
||||
8: Stub[DEAD] -> 9 | <- 7
|
||||
9: Exit block[DEAD] -> 10 | <- 8
|
||||
10: Exit function "foo"[DEAD] -> | <- 7, 9
|
||||
|
||||
0: Enter init block -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Function call: <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#() -> 3 | <- 1
|
||||
3: Throw: throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#() -> 4[DEAD], 6[DEAD] | <- 2
|
||||
4: Stub[DEAD] -> 5 | <- 3
|
||||
5: Exit block[DEAD] -> 6 | <- 4
|
||||
6: Exit init block[DEAD] -> | <- 3, 5
|
||||
7: Enter function "getter" -> 8
|
||||
8: Enter block -> 9 | <- 7
|
||||
9: Exit block -> 10 | <- 8
|
||||
10: Exit function "getter" -> | <- 9
|
||||
|
||||
0: Enter property -> 1
|
||||
1: Function call: R|/run|(<L> = run@fun <anonymous>(): R|kotlin/Unit| {
|
||||
local final fun foo(): R|kotlin/Unit| {
|
||||
lval c: R|kotlin/Int| = Int(1).R|kotlin/Int.plus|(Int(1))
|
||||
throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()
|
||||
}
|
||||
|
||||
local final class LocalClass : R|kotlin/Any| {
|
||||
public constructor(): R|LocalClass| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
init {
|
||||
throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()
|
||||
Int(1)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()
|
||||
}
|
||||
) -> 2 | <- 0
|
||||
2: Exit property -> | <- 1
|
||||
|
||||
0: Enter property -> 1
|
||||
1: Try expression enter -> 2 | <- 0
|
||||
2: Try main block enter -> 3, 7, 12, 18 | <- 1
|
||||
3: Enter block -> 4 | <- 2
|
||||
4: Const: Int(1) -> 5 | <- 3
|
||||
5: Exit block -> 6 | <- 4
|
||||
6: Try main block exit -> 17 | <- 5
|
||||
7: Enter finally -> 8 | <- 2
|
||||
8: Enter block -> 9 | <- 7
|
||||
9: Const: Int(0) -> 10 | <- 8
|
||||
10: Exit block -> 11 | <- 9
|
||||
11: Exit finally -> 17 | <- 10
|
||||
12: Catch enter -> 13, 18 | <- 2
|
||||
13: Enter block -> 14 | <- 12
|
||||
14: Const: Int(2) -> 15 | <- 13
|
||||
15: Exit block -> 16 | <- 14
|
||||
16: Catch exit -> 17 | <- 15
|
||||
17: Try expression exit -> 18 | <- 6, 11, 16
|
||||
18: Exit property -> | <- 2, 12, 17
|
||||
|
||||
@@ -0,0 +1,227 @@
|
||||
digraph propertiesAndInitBlocks_kt {
|
||||
subgraph run {
|
||||
0 [shape=box label="Enter function run"];
|
||||
1 [shape=box label="Enter block"];
|
||||
2 [shape=box label="Function call: R|<local>/block|.R|FakeOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()"];
|
||||
3 [shape=box label="Exit block"];
|
||||
4 [shape=box label="Exit function run"];
|
||||
|
||||
0 -> {1};
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4};
|
||||
}
|
||||
|
||||
subgraph val_x1 {
|
||||
5 [shape=box label="Enter property"];
|
||||
6 [shape=box label="Const: Int(1)"];
|
||||
7 [shape=box label="Exit property"];
|
||||
|
||||
5 -> {6};
|
||||
6 -> {7};
|
||||
}
|
||||
|
||||
subgraph <getter> {
|
||||
8 [shape=box label="Enter function getter"];
|
||||
9 [shape=box label="Enter block"];
|
||||
10 [shape=box label="Const: Int(1)"];
|
||||
11 [shape=box label="Jump: ^ Int(1)"];
|
||||
12 [shape=box label="Stub[DEAD]"];
|
||||
13 [shape=box label="Exit block[DEAD]"];
|
||||
14 [shape=box label="Exit function getter[DEAD]"];
|
||||
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {14 12} [style=dotted];
|
||||
12 -> {13} [style=dotted];
|
||||
13 -> {14} [style=dotted];
|
||||
}
|
||||
|
||||
subgraph <setter> {
|
||||
15 [shape=box label="Enter function setter"];
|
||||
16 [shape=box label="Enter block"];
|
||||
17 [shape=box label="Const: Int(1)"];
|
||||
18 [shape=box label="Assignmenet: F|/x2|"];
|
||||
19 [shape=box label="Exit block"];
|
||||
20 [shape=box label="Exit function setter"];
|
||||
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
}
|
||||
|
||||
subgraph val_x2 {
|
||||
21 [shape=box label="Enter property"];
|
||||
22 [shape=box label="Const: Int(1)"];
|
||||
23 [shape=box label="Exit property"];
|
||||
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
}
|
||||
|
||||
subgraph foo {
|
||||
24 [shape=box label="Enter function foo"];
|
||||
25 [shape=box label="Enter block"];
|
||||
26 [shape=box label="Const: Int(1)"];
|
||||
27 [shape=box label="Const: Int(1)"];
|
||||
28 [shape=box label="Function call: Int(1).R|kotlin/Int.plus|(Int(1))"];
|
||||
29 [shape=box label="Variable declaration: lval c: R|kotlin/Int|"];
|
||||
30 [shape=box label="Function call: <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()"];
|
||||
31 [shape=box label="Throw: throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()"];
|
||||
32 [shape=box label="Stub[DEAD]"];
|
||||
33 [shape=box label="Exit block[DEAD]"];
|
||||
34 [shape=box label="Exit function foo[DEAD]"];
|
||||
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
31 -> {34 32} [style=dotted];
|
||||
32 -> {33} [style=dotted];
|
||||
33 -> {34} [style=dotted];
|
||||
}
|
||||
|
||||
subgraph <init> {
|
||||
35 [shape=box label="Enter function <init>"];
|
||||
36 [shape=box label="Exit function <init>"];
|
||||
|
||||
35 -> {36};
|
||||
}
|
||||
|
||||
subgraph <getter> {
|
||||
37 [shape=box label="Enter init block"];
|
||||
38 [shape=box label="Enter block"];
|
||||
39 [shape=box label="Function call: <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()"];
|
||||
40 [shape=box label="Throw: throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()"];
|
||||
41 [shape=box label="Stub[DEAD]"];
|
||||
42 [shape=box label="Exit block[DEAD]"];
|
||||
43 [shape=box label="Exit init block[DEAD]"];
|
||||
44 [shape=box label="Enter function getter"];
|
||||
45 [shape=box label="Enter block"];
|
||||
46 [shape=box label="Exit block"];
|
||||
47 [shape=box label="Exit function getter"];
|
||||
|
||||
37 -> {38};
|
||||
38 -> {39};
|
||||
39 -> {40};
|
||||
40 -> {43 41} [style=dotted];
|
||||
41 -> {42} [style=dotted];
|
||||
42 -> {43} [style=dotted];
|
||||
44 -> {45};
|
||||
45 -> {46};
|
||||
46 -> {47};
|
||||
}
|
||||
|
||||
subgraph <init> {
|
||||
48 [shape=box label="Enter function <init>"];
|
||||
49 [shape=box label="Exit function <init>"];
|
||||
|
||||
48 -> {49};
|
||||
}
|
||||
|
||||
subgraph val_x3 {
|
||||
50 [shape=box label="Enter init block"];
|
||||
51 [shape=box label="Enter block"];
|
||||
52 [shape=box label="Function call: <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()"];
|
||||
53 [shape=box label="Throw: throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()"];
|
||||
54 [shape=box label="Stub[DEAD]"];
|
||||
55 [shape=box label="Const: Int(1)[DEAD]"];
|
||||
56 [shape=box label="Exit block[DEAD]"];
|
||||
57 [shape=box label="Exit init block[DEAD]"];
|
||||
58 [shape=box label="Enter property"];
|
||||
59 [shape=box label="Enter function anonymousFunction"];
|
||||
60 [shape=box label="Enter block"];
|
||||
61 [shape=box label="Function call: <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()"];
|
||||
62 [shape=box label="Throw: throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()"];
|
||||
63 [shape=box label="Stub[DEAD]"];
|
||||
64 [shape=box label="Exit block[DEAD]"];
|
||||
65 [shape=box label="Exit function anonymousFunction[DEAD]"];
|
||||
66 [shape=box label="Function call: R|/run|(<L> = run@fun <anonymous>(): R|kotlin/Unit| <kind=EXACTLY_ONCE> {
|
||||
local final fun foo(): R|kotlin/Unit| {
|
||||
lval c: R|kotlin/Int| = Int(1).R|kotlin/Int.plus|(Int(1))
|
||||
throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()
|
||||
}
|
||||
|
||||
local final class LocalClass : R|kotlin/Any| {
|
||||
public constructor(): R|LocalClass| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
init {
|
||||
throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()
|
||||
Int(1)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
throw <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#()
|
||||
}
|
||||
)[DEAD]"];
|
||||
67 [shape=box label="Exit property[DEAD]"];
|
||||
|
||||
50 -> {51};
|
||||
51 -> {52};
|
||||
52 -> {53};
|
||||
53 -> {57 54} [style=dotted];
|
||||
54 -> {55} [style=dotted];
|
||||
55 -> {56} [style=dotted];
|
||||
56 -> {57} [style=dotted];
|
||||
58 -> {59};
|
||||
59 -> {60};
|
||||
60 -> {61};
|
||||
61 -> {62};
|
||||
62 -> {65 63} [style=dotted];
|
||||
63 -> {64} [style=dotted];
|
||||
64 -> {65} [style=dotted];
|
||||
65 -> {66} [style=dotted];
|
||||
66 -> {67} [style=dotted];
|
||||
}
|
||||
|
||||
subgraph val_x4 {
|
||||
68 [shape=box label="Enter property"];
|
||||
69 [shape=box label="Try expression enter"];
|
||||
70 [shape=box label="Try main block enter"];
|
||||
71 [shape=box label="Enter block"];
|
||||
72 [shape=box label="Const: Int(1)"];
|
||||
73 [shape=box label="Exit block"];
|
||||
74 [shape=box label="Try main block exit"];
|
||||
75 [shape=box label="Enter finally"];
|
||||
76 [shape=box label="Enter block"];
|
||||
77 [shape=box label="Const: Int(0)"];
|
||||
78 [shape=box label="Exit block"];
|
||||
79 [shape=box label="Exit finally"];
|
||||
80 [shape=box label="Catch enter"];
|
||||
81 [shape=box label="Enter block"];
|
||||
82 [shape=box label="Const: Int(2)"];
|
||||
83 [shape=box label="Exit block"];
|
||||
84 [shape=box label="Catch exit"];
|
||||
85 [shape=box label="Try expression exit"];
|
||||
86 [shape=box label="Exit property"];
|
||||
|
||||
68 -> {69};
|
||||
69 -> {70};
|
||||
70 -> {86 80 75 71};
|
||||
71 -> {72};
|
||||
72 -> {73};
|
||||
73 -> {74};
|
||||
74 -> {85};
|
||||
75 -> {76};
|
||||
76 -> {77};
|
||||
77 -> {78};
|
||||
78 -> {79};
|
||||
79 -> {85};
|
||||
80 -> {86 81};
|
||||
81 -> {82};
|
||||
82 -> {83};
|
||||
83 -> {84};
|
||||
84 -> {85};
|
||||
85 -> {86};
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
0: Enter function "foo" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Exit block -> 3 | <- 1
|
||||
3: Exit function "foo" -> | <- 2
|
||||
|
||||
0: Enter function "test" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Const: Int(1) -> 3 | <- 1
|
||||
3: Variable declaration: lval x: R|kotlin/Int| -> 4 | <- 2
|
||||
4: Access variable R|<local>/x| -> 5 | <- 3
|
||||
5: Const: Int(1) -> 6 | <- 4
|
||||
6: Function call: R|<local>/x|.R|kotlin/Int.plus|(Int(1)) -> 7 | <- 5
|
||||
7: Variable declaration: lval y: R|kotlin/Int| -> 8 | <- 6
|
||||
8: Function call: R|/foo|() -> 9 | <- 7
|
||||
9: Exit block -> 10 | <- 8
|
||||
10: Exit function "test" -> | <- 9
|
||||
|
||||
@@ -1,112 +0,0 @@
|
||||
0: Enter function "test_1" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Try expression enter -> 3 | <- 1
|
||||
3: Try main block enter -> 4, 9, 15, 23 | <- 2
|
||||
4: Enter block -> 5 | <- 3
|
||||
5: Const: Int(1) -> 6 | <- 4
|
||||
6: Variable declaration: lval x: R|kotlin/Int| -> 7 | <- 5
|
||||
7: Exit block -> 8 | <- 6
|
||||
8: Try main block exit -> 21 | <- 7
|
||||
9: Catch enter -> 10, 23 | <- 3
|
||||
10: Enter block -> 11 | <- 9
|
||||
11: Const: Int(3) -> 12 | <- 10
|
||||
12: Variable declaration: lval z: R|kotlin/Int| -> 13 | <- 11
|
||||
13: Exit block -> 14 | <- 12
|
||||
14: Catch exit -> 21 | <- 13
|
||||
15: Catch enter -> 16, 23 | <- 3
|
||||
16: Enter block -> 17 | <- 15
|
||||
17: Const: Int(2) -> 18 | <- 16
|
||||
18: Variable declaration: lval y: R|kotlin/Int| -> 19 | <- 17
|
||||
19: Exit block -> 20 | <- 18
|
||||
20: Catch exit -> 21 | <- 19
|
||||
21: Try expression exit -> 22 | <- 8, 14, 20
|
||||
22: Exit block -> 23 | <- 21
|
||||
23: Exit function "test_1" -> | <- 3, 9, 15, 22
|
||||
|
||||
0: Enter function "test_2" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Try expression enter -> 3 | <- 1
|
||||
3: Try main block enter -> 4, 8, 16 | <- 2
|
||||
4: Enter block -> 5 | <- 3
|
||||
5: Const: Int(1) -> 6 | <- 4
|
||||
6: Exit block -> 7 | <- 5
|
||||
7: Try main block exit -> 13 | <- 6
|
||||
8: Catch enter -> 9, 16 | <- 3
|
||||
9: Enter block -> 10 | <- 8
|
||||
10: Const: Int(2) -> 11 | <- 9
|
||||
11: Exit block -> 12 | <- 10
|
||||
12: Catch exit -> 13 | <- 11
|
||||
13: Try expression exit -> 14 | <- 7, 12
|
||||
14: Variable declaration: lval x: R|kotlin/Int| -> 15 | <- 13
|
||||
15: Exit block -> 16 | <- 14
|
||||
16: Exit function "test_2" -> | <- 3, 8, 15
|
||||
|
||||
0: Enter function "test_3" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Enter while loop -> 3 | <- 1
|
||||
3: Enter loop condition -> 4 | <- 2, 54, 62
|
||||
4: Const: Boolean(true) -> 5 | <- 3
|
||||
5: Exit loop condition -> 6, 63 | <- 4
|
||||
6: Enter loop block -> 7 | <- 5
|
||||
7: Enter block -> 8 | <- 6
|
||||
8: Try expression enter -> 9 | <- 7
|
||||
9: Try main block enter -> 10, 46, 52, 67 | <- 8
|
||||
10: Enter block -> 11 | <- 9
|
||||
11: Enter when -> 12 | <- 10
|
||||
12: Enter when branch condition -> 13 | <- 11
|
||||
13: Access variable R|<local>/b| -> 14 | <- 12
|
||||
14: Exit when branch condition -> 15, 20 | <- 13
|
||||
15: Enter block -> 16 | <- 14
|
||||
16: Jump: ^test_3 Unit -> 17[DEAD], 67 | <- 15
|
||||
17: Stub[DEAD] -> 18 | <- 16
|
||||
18: Exit block[DEAD] -> 19 | <- 17
|
||||
19: Exit when branch result[DEAD] -> 25 | <- 18
|
||||
20: Enter when branch condition "else" -> 21 | <- 14
|
||||
21: Exit when branch condition -> 22 | <- 20
|
||||
22: Enter block -> 23 | <- 21
|
||||
23: Exit block -> 24 | <- 22
|
||||
24: Exit when branch result -> 25 | <- 23
|
||||
25: Exit when -> 26 | <- 19[DEAD], 24
|
||||
26: Const: Int(1) -> 27 | <- 25
|
||||
27: Variable declaration: lval x: R|kotlin/Int| -> 28 | <- 26
|
||||
28: Enter when -> 29 | <- 27
|
||||
29: Enter when branch condition -> 30 | <- 28
|
||||
30: Access variable R|<local>/b| -> 31 | <- 29
|
||||
31: Function call: R|<local>/b|.R|kotlin/Boolean.not|() -> 32 | <- 30
|
||||
32: Exit when branch condition -> 33, 38 | <- 31
|
||||
33: Enter block -> 34 | <- 32
|
||||
34: Jump: break@@@[Boolean(true)] -> 35[DEAD], 63 | <- 33
|
||||
35: Stub[DEAD] -> 36 | <- 34
|
||||
36: Exit block[DEAD] -> 37 | <- 35
|
||||
37: Exit when branch result[DEAD] -> 43 | <- 36
|
||||
38: Enter when branch condition "else" -> 39 | <- 32
|
||||
39: Exit when branch condition -> 40 | <- 38
|
||||
40: Enter block -> 41 | <- 39
|
||||
41: Exit block -> 42 | <- 40
|
||||
42: Exit when branch result -> 43 | <- 41
|
||||
43: Exit when -> 44 | <- 37[DEAD], 42
|
||||
44: Exit block -> 45 | <- 43
|
||||
45: Try main block exit -> 58 | <- 44
|
||||
46: Catch enter -> 47, 67 | <- 9
|
||||
47: Enter block -> 48 | <- 46
|
||||
48: Jump: break@@@[Boolean(true)] -> 49[DEAD], 63 | <- 47
|
||||
49: Stub[DEAD] -> 50 | <- 48
|
||||
50: Exit block[DEAD] -> 51 | <- 49
|
||||
51: Catch exit[DEAD] -> 58 | <- 50
|
||||
52: Catch enter -> 53, 67 | <- 9
|
||||
53: Enter block -> 54 | <- 52
|
||||
54: Jump: continue@@@[Boolean(true)] -> 3, 55[DEAD] | <- 53
|
||||
55: Stub[DEAD] -> 56 | <- 54
|
||||
56: Exit block[DEAD] -> 57 | <- 55
|
||||
57: Catch exit[DEAD] -> 58 | <- 56
|
||||
58: Try expression exit -> 59 | <- 45, 51[DEAD], 57[DEAD]
|
||||
59: Const: Int(2) -> 60 | <- 58
|
||||
60: Variable declaration: lval y: R|kotlin/Int| -> 61 | <- 59
|
||||
61: Exit block -> 62 | <- 60
|
||||
62: Exit loop block -> 3 | <- 61
|
||||
63: Exit whileloop -> 64 | <- 5, 34, 48
|
||||
64: Const: Int(3) -> 65 | <- 63
|
||||
65: Variable declaration: lval z: R|kotlin/Int| -> 66 | <- 64
|
||||
66: Exit block -> 67 | <- 65
|
||||
67: Exit function "test_3" -> | <- 9, 16, 46, 52, 66
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
0: Enter function "test_1" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Enter when -> 3 | <- 1
|
||||
3: Enter when branch condition -> 4 | <- 2
|
||||
4: Access variable R|<local>/x| -> 5 | <- 3
|
||||
5: Const: Int(1) -> 6 | <- 4
|
||||
6: Operator == -> 7 | <- 5
|
||||
7: Exit when branch condition -> 8, 12 | <- 6
|
||||
8: Enter block -> 9 | <- 7
|
||||
9: Const: Int(10) -> 10 | <- 8
|
||||
10: Exit block -> 11 | <- 9
|
||||
11: Exit when branch result -> 41 | <- 10
|
||||
12: Enter when branch condition -> 13 | <- 7
|
||||
13: Access variable R|<local>/x| -> 14 | <- 12
|
||||
14: Const: Int(2) -> 15 | <- 13
|
||||
15: Function call: R|<local>/x|.R|kotlin/Int.rem|(Int(2)) -> 16 | <- 14
|
||||
16: Const: Int(0) -> 17 | <- 15
|
||||
17: Operator == -> 18 | <- 16
|
||||
18: Exit when branch condition -> 19, 23 | <- 17
|
||||
19: Enter block -> 20 | <- 18
|
||||
20: Const: Int(20) -> 21 | <- 19
|
||||
21: Exit block -> 22 | <- 20
|
||||
22: Exit when branch result -> 41 | <- 21
|
||||
23: Enter when branch condition -> 24 | <- 18
|
||||
24: Const: Int(1) -> 25 | <- 23
|
||||
25: Const: Int(1) -> 26 | <- 24
|
||||
26: Function call: Int(1).R|kotlin/Int.minus|(Int(1)) -> 27 | <- 25
|
||||
27: Const: Int(0) -> 28 | <- 26
|
||||
28: Operator == -> 29 | <- 27
|
||||
29: Exit when branch condition -> 30, 35 | <- 28
|
||||
30: Enter block -> 31 | <- 29
|
||||
31: Jump: ^test_1 Unit -> 32[DEAD], 44 | <- 30
|
||||
32: Stub[DEAD] -> 33 | <- 31
|
||||
33: Exit block[DEAD] -> 34 | <- 32
|
||||
34: Exit when branch result[DEAD] -> 41 | <- 33
|
||||
35: Enter when branch condition "else" -> 36 | <- 29
|
||||
36: Exit when branch condition -> 37 | <- 35
|
||||
37: Enter block -> 38 | <- 36
|
||||
38: Const: Int(5) -> 39 | <- 37
|
||||
39: Exit block -> 40 | <- 38
|
||||
40: Exit when branch result -> 41 | <- 39
|
||||
41: Exit when -> 42 | <- 11, 22, 34[DEAD], 40
|
||||
42: Variable declaration: lval y: R|kotlin/Int| -> 43 | <- 41
|
||||
43: Exit block -> 44 | <- 42
|
||||
44: Exit function "test_1" -> | <- 31, 43
|
||||
|
||||
0: Enter function "test_2" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Enter when -> 3 | <- 1
|
||||
3: Enter when branch condition -> 4 | <- 2
|
||||
4: Enter && -> 5 | <- 3
|
||||
5: Access variable R|<local>/x| -> 6 | <- 4
|
||||
6: Type operator: "x is A" -> 7, 9 | <- 5
|
||||
7: Access variable R|<local>/x| -> 8 | <- 6
|
||||
8: Type operator: "x is B" -> 9 | <- 7
|
||||
9: Exit && -> 10 | <- 6, 8
|
||||
10: Exit when branch condition -> 11, 16 | <- 9
|
||||
11: Enter block -> 12 | <- 10
|
||||
12: Access variable R|<local>/x| -> 13 | <- 11
|
||||
13: Type operator: "x is A" -> 14 | <- 12
|
||||
14: Exit block -> 15 | <- 13
|
||||
15: Exit when branch result -> 21 | <- 14
|
||||
16: Enter when branch condition "else" -> 17 | <- 10
|
||||
17: Exit when branch condition -> 18 | <- 16
|
||||
18: Enter block -> 19 | <- 17
|
||||
19: Exit block -> 20 | <- 18
|
||||
20: Exit when branch result -> 21 | <- 19
|
||||
21: Exit when -> 22 | <- 15, 20
|
||||
22: Exit block -> 23 | <- 21
|
||||
23: Exit function "test_2" -> | <- 22
|
||||
|
||||
@@ -31,7 +31,7 @@ abstract class AbstractFirCfgBuildingTest : AbstractFirResolveTestCase() {
|
||||
firFiles.first().accept(FirControlFlowGraphRenderVisitor(simpleBuilder, dotBuilder), null)
|
||||
|
||||
val dotCfgDump = dotBuilder.toString()
|
||||
val dotExpectedPath = path.replace(".kt", ".cfg.dot")
|
||||
val dotExpectedPath = path.replace(".kt", ".dot")
|
||||
KotlinTestUtils.assertEqualsToFile(File(dotExpectedPath), dotCfgDump)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user