Skip to content

Commit 1e30605

Browse files
committed
Kotlin: Add for loop tests
1 parent caf9ac5 commit 1e30605

File tree

8 files changed

+398
-30
lines changed

8 files changed

+398
-30
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
| file://:0:0:0:0 | Couldn't find a Java equivalent function to kotlin.Int.rangeTo in java.lang.Integer |
2+
| file://:0:0:0:0 | Couldn't find a Java equivalent function to kotlin.Int.rangeTo in java.lang.Integer |
3+
| file://:0:0:0:0 | Couldn't find a Java equivalent function to kotlin.Int.rangeTo in java.lang.Integer |
Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
stmts.kt:
2+
# 0| [CompilationUnit] stmts
3+
# 0| 1: [Class] StmtsKt
4+
# 2| 1: [Method] topLevelMethod
5+
# 2| 3: [TypeAccess] int
6+
#-----| 4: (Parameters)
7+
# 2| 0: [Parameter] x
8+
# 2| 0: [TypeAccess] int
9+
# 2| 1: [Parameter] y
10+
# 2| 0: [TypeAccess] int
11+
# 2| 5: [BlockStmt] { ... }
12+
# 3| 0: [ExprStmt] <Expr>;
13+
# 3| 0: [WhenExpr] when ...
14+
# 3| 0: [WhenBranch] ... -> ...
15+
# 3| 0: [GTExpr] ... > ...
16+
# 3| 0: [VarAccess] x
17+
# 3| 1: [VarAccess] y
18+
# 3| 1: [BlockStmt] { ... }
19+
# 4| 1: [WhenBranch] ... -> ...
20+
# 4| 0: [LTExpr] ... < ...
21+
# 4| 0: [VarAccess] x
22+
# 4| 1: [VarAccess] y
23+
# 4| 1: [BlockStmt] { ... }
24+
# 5| 2: [WhenBranch] ... -> ...
25+
# 5| 0: [BooleanLiteral] true
26+
# 5| 1: [BlockStmt] { ... }
27+
# 7| 1: [WhileStmt] while (...)
28+
# 7| 0: [GTExpr] ... > ...
29+
# 7| 0: [VarAccess] x
30+
# 7| 1: [VarAccess] y
31+
# 8| 1: [ReturnStmt] return ...
32+
# 8| 0: [VarAccess] x
33+
# 9| 2: [WhileStmt] while (...)
34+
# 9| 0: [LTExpr] ... < ...
35+
# 9| 0: [VarAccess] x
36+
# 9| 1: [VarAccess] y
37+
# 9| 1: [BlockStmt] { ... }
38+
# 10| 0: [ReturnStmt] return ...
39+
# 10| 0: [VarAccess] y
40+
# 12| 3: [BlockStmt] { ... }
41+
# 12| 0: [DoStmt] do ... while (...)
42+
# 14| 0: [LTExpr] ... < ...
43+
# 14| 0: [VarAccess] x
44+
# 14| 1: [VarAccess] y
45+
# 12| 1: [BlockStmt] { ... }
46+
# 13| 0: [ReturnStmt] return ...
47+
# 13| 0: [VarAccess] y
48+
# 15| 4: [LocalVariableDeclStmt] var ...;
49+
# 15| 1: [LocalVariableDeclExpr] z
50+
# 15| 0: [IntegerLiteral] 3
51+
# 17| 5: [LocalVariableDeclStmt] var ...;
52+
# 17| 1: [LocalVariableDeclExpr] q2
53+
# 17| 0: [WhenExpr] when ...
54+
# 17| 0: [WhenBranch] ... -> ...
55+
# 17| 0: [BooleanLiteral] true
56+
# 17| 1: [BlockStmt] { ... }
57+
# 17| 0: [ExprStmt] <Expr>;
58+
# 17| 0: [AssignExpr] ...=...
59+
# 17| 0: [VarAccess] z
60+
# 17| 1: [IntegerLiteral] 4
61+
# 17| 1: [WhenBranch] ... -> ...
62+
# 17| 0: [BooleanLiteral] true
63+
# 17| 1: [BlockStmt] { ... }
64+
# 17| 0: [ExprStmt] <Expr>;
65+
# 17| 0: [AssignExpr] ...=...
66+
# 17| 0: [VarAccess] z
67+
# 17| 1: [IntegerLiteral] 5
68+
# 18| 6: [LocalVariableDeclStmt] var ...;
69+
# 18| 1: [LocalVariableDeclExpr] q3
70+
# 18| 0: [WhenExpr] when ...
71+
# 18| 0: [WhenBranch] ... -> ...
72+
# 18| 0: [BooleanLiteral] true
73+
# 18| 1: [ExprStmt] <Expr>;
74+
# 18| 0: [AssignExpr] ...=...
75+
# 18| 0: [VarAccess] z
76+
# 18| 1: [IntegerLiteral] 4
77+
# 18| 1: [WhenBranch] ... -> ...
78+
# 18| 0: [BooleanLiteral] true
79+
# 18| 1: [ExprStmt] <Expr>;
80+
# 18| 0: [AssignExpr] ...=...
81+
# 18| 0: [VarAccess] z
82+
# 18| 1: [IntegerLiteral] 5
83+
# 19| 7: [ReturnStmt] return ...
84+
# 19| 0: [AddExpr] ... + ...
85+
# 19| 0: [VarAccess] x
86+
# 19| 1: [VarAccess] y
87+
# 22| 2: [Method] loops
88+
# 22| 3: [TypeAccess] Unit
89+
#-----| 4: (Parameters)
90+
# 22| 0: [Parameter] x
91+
# 22| 0: [TypeAccess] int
92+
# 22| 1: [Parameter] y
93+
# 22| 0: [TypeAccess] int
94+
# 22| 5: [BlockStmt] { ... }
95+
# 23| 0: [LabeledStmt] <Label>: ...
96+
# 23| 0: [WhileStmt] while (...)
97+
# 23| 0: [LTExpr] ... < ...
98+
# 23| 0: [VarAccess] x
99+
# 23| 1: [IntegerLiteral] 100
100+
# 23| 1: [BlockStmt] { ... }
101+
# 24| 0: [BlockStmt] { ... }
102+
# 24| 0: [DoStmt] do ... while (...)
103+
# 26| 0: [GTExpr] ... > ...
104+
# 26| 0: [VarAccess] y
105+
# 26| 1: [IntegerLiteral] 100
106+
# 24| 1: [BlockStmt] { ... }
107+
# 25| 0: [ExprStmt] <Expr>;
108+
# 25| 0: [WhenExpr] when ...
109+
# 25| 0: [WhenBranch] ... -> ...
110+
# 25| 0: [GTExpr] ... > ...
111+
# 25| 0: [VarAccess] x
112+
# 25| 1: [VarAccess] y
113+
# 25| 1: [BreakStmt] break
114+
# 28| 1: [WhileStmt] while (...)
115+
# 28| 0: [GTExpr] ... > ...
116+
# 28| 0: [VarAccess] x
117+
# 28| 1: [VarAccess] y
118+
# 29| 1: [ContinueStmt] continue
119+
# 31| 2: [BlockStmt] { ... }
120+
# 31| 0: [LocalVariableDeclStmt] var ...;
121+
# 31| 1: [LocalVariableDeclExpr] tmp0_iterator
122+
# 31| 0: [MethodAccess] iterator(...)
123+
# 31| -1: [MethodAccess] rangeTo(...)
124+
# 31| -1: [VarAccess] x
125+
# 31| 0: [VarAccess] y
126+
# 31| 1: [WhileStmt] while (...)
127+
# 31| 0: [MethodAccess] hasNext(...)
128+
# 31| -1: [VarAccess] tmp0_iterator
129+
# 31| 1: [BlockStmt] { ... }
130+
# 31| 0: [LocalVariableDeclStmt] var ...;
131+
# 31| 1: [LocalVariableDeclExpr] i
132+
# 31| 0: [MethodAccess] next(...)
133+
# 31| -1: [VarAccess] tmp0_iterator
134+
# 31| 1: [BlockStmt] { ... }
135+
# 32| 0: [ExprStmt] <Expr>;
136+
# 32| 0: [WhenExpr] when ...
137+
# 32| 0: [WhenBranch] ... -> ...
138+
# 32| 0: [GTExpr] ... > ...
139+
# 32| 0: [VarAccess] x
140+
# 32| 1: [VarAccess] y
141+
# 32| 1: [BreakStmt] break
142+
# 35| 3: [BlockStmt] { ... }
143+
# 35| 0: [LocalVariableDeclStmt] var ...;
144+
# 35| 1: [LocalVariableDeclExpr] tmp1_iterator
145+
# 35| 0: [MethodAccess] iterator(...)
146+
# 35| -1: [MethodAccess] rangeTo(...)
147+
# 35| -1: [VarAccess] x
148+
# 35| 0: [VarAccess] y
149+
# 35| 1: [LabeledStmt] <Label>: ...
150+
# 35| 0: [WhileStmt] while (...)
151+
# 35| 0: [MethodAccess] hasNext(...)
152+
# 35| -1: [VarAccess] tmp1_iterator
153+
# 35| 1: [BlockStmt] { ... }
154+
# 35| 0: [LocalVariableDeclStmt] var ...;
155+
# 35| 1: [LocalVariableDeclExpr] i
156+
# 35| 0: [MethodAccess] next(...)
157+
# 35| -1: [VarAccess] tmp1_iterator
158+
# 35| 1: [BlockStmt] { ... }
159+
# 36| 0: [BlockStmt] { ... }
160+
# 36| 0: [DoStmt] do ... while (...)
161+
# 38| 0: [GTExpr] ... > ...
162+
# 38| 0: [VarAccess] y
163+
# 38| 1: [IntegerLiteral] 100
164+
# 36| 1: [BlockStmt] { ... }
165+
# 37| 0: [ExprStmt] <Expr>;
166+
# 37| 0: [WhenExpr] when ...
167+
# 37| 0: [WhenBranch] ... -> ...
168+
# 37| 0: [GTExpr] ... > ...
169+
# 37| 0: [VarAccess] x
170+
# 37| 1: [VarAccess] y
171+
# 37| 1: [BreakStmt] break
172+
# 41| 4: [BlockStmt] { ... }
173+
# 41| 0: [LocalVariableDeclStmt] var ...;
174+
# 41| 1: [LocalVariableDeclExpr] tmp2_iterator
175+
# 41| 0: [MethodAccess] iterator(...)
176+
# 41| -1: [MethodAccess] withIndex(...)
177+
# 41| -2: [TypeAccess] Integer
178+
# 41| -1: [TypeAccess] CollectionsKt
179+
# 41| 0: [MethodAccess] rangeTo(...)
180+
# 41| -1: [VarAccess] x
181+
# 41| 0: [VarAccess] y
182+
# 41| 1: [WhileStmt] while (...)
183+
# 41| 0: [MethodAccess] hasNext(...)
184+
# 41| -1: [VarAccess] tmp2_iterator
185+
# 41| 1: [BlockStmt] { ... }
186+
# 41| 0: [LocalVariableDeclStmt] var ...;
187+
# 41| 1: [LocalVariableDeclExpr] tmp3_loop_parameter
188+
# 41| 0: [MethodAccess] next(...)
189+
# 41| -1: [VarAccess] tmp2_iterator
190+
# 41| 1: [LocalVariableDeclStmt] var ...;
191+
# 41| 1: [LocalVariableDeclExpr] v
192+
# 41| 0: [MethodAccess] component1(...)
193+
# 41| -1: [VarAccess] tmp3_loop_parameter
194+
# 41| 2: [LocalVariableDeclStmt] var ...;
195+
# 41| 1: [LocalVariableDeclExpr] i
196+
# 41| 0: [MethodAccess] component2(...)
197+
# 41| -1: [VarAccess] tmp3_loop_parameter
198+
# 41| 3: [BlockStmt] { ... }
199+
# 42| 0: [ExprStmt] <Expr>;
200+
# 42| 0: [WhenExpr] when ...
201+
# 42| 0: [WhenBranch] ... -> ...
202+
# 42| 0: [GTExpr] ... > ...
203+
# 42| 0: [VarAccess] x
204+
# 42| 1: [VarAccess] y
205+
# 42| 1: [BreakStmt] break
206+
# 46| 3: [Method] exceptions
207+
# 46| 3: [TypeAccess] int
208+
# 46| 5: [BlockStmt] { ... }
209+
# 47| 0: [TryStmt] try ...
210+
# 53| -2: [BlockStmt] { ... }
211+
# 54| 0: [ReturnStmt] return ...
212+
# 54| 0: [IntegerLiteral] 2
213+
# 47| -1: [BlockStmt] { ... }
214+
# 48| 0: [ThrowStmt] throw ...
215+
# 48| 0: [ClassInstanceExpr] new Exception(...)
216+
# 48| -3: [TypeAccess] Exception
217+
# 48| 0: [StringLiteral] Foo
218+
# 50| 0: [CatchClause] catch (...)
219+
#-----| 0: (Single Local Variable Declaration)
220+
# 50| 0: [TypeAccess] Exception
221+
# 50| 1: [LocalVariableDeclExpr] e
222+
# 50| 1: [BlockStmt] { ... }
223+
# 51| 0: [ReturnStmt] return ...
224+
# 51| 0: [IntegerLiteral] 1
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
semmle/code/java/PrintAst.ql

java/ql/test/kotlin/library-tests/stmts/exprs.expected

Lines changed: 63 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
| stmts.kt:19:12:19:12 | x | VarAccess |
4747
| stmts.kt:19:12:19:16 | ... + ... | AddExpr |
4848
| stmts.kt:19:16:19:16 | y | VarAccess |
49-
| stmts.kt:22:1:30:1 | Unit | TypeAccess |
49+
| stmts.kt:22:1:44:1 | Unit | TypeAccess |
5050
| stmts.kt:22:11:22:16 | int | TypeAccess |
5151
| stmts.kt:22:19:22:24 | int | TypeAccess |
5252
| stmts.kt:23:18:23:18 | x | VarAccess |
@@ -62,11 +62,65 @@
6262
| stmts.kt:28:11:28:11 | x | VarAccess |
6363
| stmts.kt:28:11:28:15 | ... > ... | GTExpr |
6464
| stmts.kt:28:15:28:15 | y | VarAccess |
65-
| stmts.kt:32:1:42:1 | int | TypeAccess |
66-
| stmts.kt:34:15:34:30 | Exception | TypeAccess |
67-
| stmts.kt:34:15:34:30 | new Exception(...) | ClassInstanceExpr |
68-
| stmts.kt:34:26:34:28 | Foo | StringLiteral |
69-
| stmts.kt:36:12:36:23 | Exception | TypeAccess |
70-
| stmts.kt:36:12:36:23 | e | LocalVariableDeclExpr |
71-
| stmts.kt:37:16:37:16 | 1 | IntegerLiteral |
72-
| stmts.kt:40:16:40:16 | 2 | IntegerLiteral |
65+
| stmts.kt:31:10:31:10 | i | LocalVariableDeclExpr |
66+
| stmts.kt:31:15:31:15 | x | VarAccess |
67+
| stmts.kt:31:15:31:18 | hasNext(...) | MethodAccess |
68+
| stmts.kt:31:15:31:18 | iterator(...) | MethodAccess |
69+
| stmts.kt:31:15:31:18 | next(...) | MethodAccess |
70+
| stmts.kt:31:15:31:18 | rangeTo(...) | MethodAccess |
71+
| stmts.kt:31:15:31:18 | tmp0_iterator | LocalVariableDeclExpr |
72+
| stmts.kt:31:15:31:18 | tmp0_iterator | VarAccess |
73+
| stmts.kt:31:15:31:18 | tmp0_iterator | VarAccess |
74+
| stmts.kt:31:18:31:18 | y | VarAccess |
75+
| stmts.kt:32:9:32:24 | when ... | WhenExpr |
76+
| stmts.kt:32:13:32:13 | x | VarAccess |
77+
| stmts.kt:32:13:32:17 | ... > ... | GTExpr |
78+
| stmts.kt:32:17:32:17 | y | VarAccess |
79+
| stmts.kt:35:18:35:18 | i | LocalVariableDeclExpr |
80+
| stmts.kt:35:23:35:23 | x | VarAccess |
81+
| stmts.kt:35:23:35:26 | hasNext(...) | MethodAccess |
82+
| stmts.kt:35:23:35:26 | iterator(...) | MethodAccess |
83+
| stmts.kt:35:23:35:26 | next(...) | MethodAccess |
84+
| stmts.kt:35:23:35:26 | rangeTo(...) | MethodAccess |
85+
| stmts.kt:35:23:35:26 | tmp1_iterator | LocalVariableDeclExpr |
86+
| stmts.kt:35:23:35:26 | tmp1_iterator | VarAccess |
87+
| stmts.kt:35:23:35:26 | tmp1_iterator | VarAccess |
88+
| stmts.kt:35:26:35:26 | y | VarAccess |
89+
| stmts.kt:37:13:37:36 | when ... | WhenExpr |
90+
| stmts.kt:37:17:37:17 | x | VarAccess |
91+
| stmts.kt:37:17:37:21 | ... > ... | GTExpr |
92+
| stmts.kt:37:21:37:21 | y | VarAccess |
93+
| stmts.kt:38:18:38:18 | y | VarAccess |
94+
| stmts.kt:38:18:38:24 | ... > ... | GTExpr |
95+
| stmts.kt:38:22:38:24 | 100 | IntegerLiteral |
96+
| stmts.kt:41:11:41:11 | component1(...) | MethodAccess |
97+
| stmts.kt:41:11:41:11 | v | LocalVariableDeclExpr |
98+
| stmts.kt:41:13:41:13 | component2(...) | MethodAccess |
99+
| stmts.kt:41:13:41:13 | i | LocalVariableDeclExpr |
100+
| stmts.kt:41:19:41:36 | hasNext(...) | MethodAccess |
101+
| stmts.kt:41:19:41:36 | iterator(...) | MethodAccess |
102+
| stmts.kt:41:19:41:36 | next(...) | MethodAccess |
103+
| stmts.kt:41:19:41:36 | tmp2_iterator | LocalVariableDeclExpr |
104+
| stmts.kt:41:19:41:36 | tmp2_iterator | VarAccess |
105+
| stmts.kt:41:19:41:36 | tmp2_iterator | VarAccess |
106+
| stmts.kt:41:19:41:36 | tmp3_loop_parameter | LocalVariableDeclExpr |
107+
| stmts.kt:41:19:41:36 | tmp3_loop_parameter | VarAccess |
108+
| stmts.kt:41:19:41:36 | tmp3_loop_parameter | VarAccess |
109+
| stmts.kt:41:20:41:20 | x | VarAccess |
110+
| stmts.kt:41:20:41:23 | rangeTo(...) | MethodAccess |
111+
| stmts.kt:41:23:41:23 | y | VarAccess |
112+
| stmts.kt:41:26:41:36 | CollectionsKt | TypeAccess |
113+
| stmts.kt:41:26:41:36 | Integer | TypeAccess |
114+
| stmts.kt:41:26:41:36 | withIndex(...) | MethodAccess |
115+
| stmts.kt:42:9:42:24 | when ... | WhenExpr |
116+
| stmts.kt:42:13:42:13 | x | VarAccess |
117+
| stmts.kt:42:13:42:17 | ... > ... | GTExpr |
118+
| stmts.kt:42:17:42:17 | y | VarAccess |
119+
| stmts.kt:46:1:56:1 | int | TypeAccess |
120+
| stmts.kt:48:15:48:30 | Exception | TypeAccess |
121+
| stmts.kt:48:15:48:30 | new Exception(...) | ClassInstanceExpr |
122+
| stmts.kt:48:26:48:28 | Foo | StringLiteral |
123+
| stmts.kt:50:12:50:23 | Exception | TypeAccess |
124+
| stmts.kt:50:12:50:23 | e | LocalVariableDeclExpr |
125+
| stmts.kt:51:16:51:16 | 1 | IntegerLiteral |
126+
| stmts.kt:54:16:54:16 | 2 | IntegerLiteral |
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
breakLabel
22
| stmts.kt:25:24:25:33 | break | loop |
3+
| stmts.kt:37:24:37:36 | break | forLoop |
34
continueLabel
45
jumpTarget
56
| stmts.kt:25:24:25:33 | break | stmts.kt:23:11:27:5 | while (...) |
67
| stmts.kt:29:9:29:16 | continue | stmts.kt:28:5:29:16 | while (...) |
8+
| stmts.kt:32:20:32:24 | break | stmts.kt:31:5:33:5 | while (...) |
9+
| stmts.kt:37:24:37:36 | break | stmts.kt:35:13:39:5 | while (...) |
10+
| stmts.kt:42:20:42:24 | break | stmts.kt:41:5:43:5 | while (...) |

0 commit comments

Comments
 (0)