Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit fc66b73

Browse files
tamasvajkigfoo
authored andcommitted
Extract override modifier for lambda and reflection-like constructs
1 parent 505ccbb commit fc66b73

5 files changed

Lines changed: 118 additions & 2 deletions

File tree

java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2670,6 +2670,8 @@ open class KotlinFileExtractor(
26702670
val isBigArity = types.size > BuiltInFunctionArity.BIG_ARITY
26712671
if (isBigArity) {
26722672
implementFunctionNInvoke(e.function, ids, locId, parameters)
2673+
} else {
2674+
addModifiers(ids.function, "override")
26732675
}
26742676

26752677
val exprParent = parent.expr(e, callable)
@@ -3394,6 +3396,7 @@ open class KotlinFileExtractor(
33943396
tw.writeHasLocation(methodId, locId)
33953397

33963398
addModifiers(methodId, "public")
3399+
addModifiers(methodId, "override")
33973400

33983401
// Block
33993402
val blockId = tw.getFreshIdLabel<DbBlock>()

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

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,55 @@ memberRefExprs
3737
| kFunctionInvoke.kt:8:44:8:47 | ...::... | kFunctionInvoke.kt:8:44:8:47 | invoke | invoke(java.lang.String) | kFunctionInvoke.kt:8:44:8:47 | new Function1<String,Unit>(...) { ... } |
3838
| samConversion.kt:5:27:5:31 | ...::... | samConversion.kt:5:27:5:31 | invoke | invoke(int,int) | samConversion.kt:5:27:5:31 | new Function2<Integer,Integer,Unit>(...) { ... } |
3939
| samConversion.kt:41:13:41:16 | ...::... | samConversion.kt:41:13:41:16 | invoke | invoke(java.lang.Object[]) | samConversion.kt:41:13:41:16 | new FunctionN<Boolean>(...) { ... } |
40+
modifiers
41+
| delegatedProperties.kt:6:32:9:9 | ...->... | delegatedProperties.kt:6:32:9:9 | invoke | override |
42+
| delegatedProperties.kt:6:32:9:9 | ...->... | delegatedProperties.kt:6:32:9:9 | invoke | public |
43+
| funcExprs.kt:22:26:22:33 | ...->... | funcExprs.kt:22:26:22:33 | invoke | override |
44+
| funcExprs.kt:22:26:22:33 | ...->... | funcExprs.kt:22:26:22:33 | invoke | public |
45+
| funcExprs.kt:23:26:23:33 | ...->... | funcExprs.kt:23:26:23:33 | invoke | override |
46+
| funcExprs.kt:23:26:23:33 | ...->... | funcExprs.kt:23:26:23:33 | invoke | public |
47+
| funcExprs.kt:24:26:24:33 | ...->... | funcExprs.kt:24:26:24:33 | invoke | override |
48+
| funcExprs.kt:24:26:24:33 | ...->... | funcExprs.kt:24:26:24:33 | invoke | public |
49+
| funcExprs.kt:25:29:25:38 | ...->... | funcExprs.kt:25:29:25:38 | invoke | override |
50+
| funcExprs.kt:25:29:25:38 | ...->... | funcExprs.kt:25:29:25:38 | invoke | public |
51+
| funcExprs.kt:26:29:26:34 | ...->... | funcExprs.kt:26:29:26:34 | invoke | override |
52+
| funcExprs.kt:26:29:26:34 | ...->... | funcExprs.kt:26:29:26:34 | invoke | public |
53+
| funcExprs.kt:27:29:27:42 | ...->... | funcExprs.kt:27:29:27:42 | invoke | override |
54+
| funcExprs.kt:27:29:27:42 | ...->... | funcExprs.kt:27:29:27:42 | invoke | public |
55+
| funcExprs.kt:29:29:29:37 | ...->... | funcExprs.kt:29:29:29:37 | invoke | override |
56+
| funcExprs.kt:29:29:29:37 | ...->... | funcExprs.kt:29:29:29:37 | invoke | public |
57+
| funcExprs.kt:30:28:30:50 | ...->... | funcExprs.kt:30:28:30:50 | invoke | override |
58+
| funcExprs.kt:30:28:30:50 | ...->... | funcExprs.kt:30:28:30:50 | invoke | public |
59+
| funcExprs.kt:31:28:31:40 | ...->... | funcExprs.kt:31:28:31:40 | invoke | override |
60+
| funcExprs.kt:31:28:31:40 | ...->... | funcExprs.kt:31:28:31:40 | invoke | public |
61+
| funcExprs.kt:32:28:32:44 | ...->... | funcExprs.kt:32:28:32:44 | invoke | override |
62+
| funcExprs.kt:32:28:32:44 | ...->... | funcExprs.kt:32:28:32:44 | invoke | public |
63+
| funcExprs.kt:33:28:33:51 | ...->... | funcExprs.kt:33:28:33:51 | invoke | override |
64+
| funcExprs.kt:33:28:33:51 | ...->... | funcExprs.kt:33:28:33:51 | invoke | public |
65+
| funcExprs.kt:33:37:33:47 | ...->... | funcExprs.kt:33:37:33:47 | invoke | override |
66+
| funcExprs.kt:33:37:33:47 | ...->... | funcExprs.kt:33:37:33:47 | invoke | public |
67+
| funcExprs.kt:35:29:35:112 | ...->... | funcExprs.kt:35:29:35:112 | invoke | override |
68+
| funcExprs.kt:35:29:35:112 | ...->... | funcExprs.kt:35:29:35:112 | invoke | public |
69+
| funcExprs.kt:36:29:36:117 | ...->... | funcExprs.kt:36:29:36:117 | invoke | override |
70+
| funcExprs.kt:36:29:36:117 | ...->... | funcExprs.kt:36:29:36:117 | invoke | public |
71+
| funcExprs.kt:36:29:36:117 | ...->... | funcExprs.kt:36:29:36:117 | invoke | public |
72+
| funcExprs.kt:75:12:75:22 | ...->... | funcExprs.kt:75:12:75:22 | invoke | override |
73+
| funcExprs.kt:75:12:75:22 | ...->... | funcExprs.kt:75:12:75:22 | invoke | public |
74+
| samConversion.kt:2:31:2:45 | ...->... | samConversion.kt:2:31:2:45 | invoke | override |
75+
| samConversion.kt:2:31:2:45 | ...->... | samConversion.kt:2:31:2:45 | invoke | public |
76+
| samConversion.kt:4:27:4:42 | ...->... | samConversion.kt:4:27:4:42 | invoke | override |
77+
| samConversion.kt:4:27:4:42 | ...->... | samConversion.kt:4:27:4:42 | invoke | public |
78+
| samConversion.kt:7:29:7:46 | ...->... | samConversion.kt:7:29:7:46 | invoke | override |
79+
| samConversion.kt:7:29:7:46 | ...->... | samConversion.kt:7:29:7:46 | invoke | public |
80+
| samConversion.kt:9:33:11:5 | ...->... | samConversion.kt:9:33:11:5 | invoke | override |
81+
| samConversion.kt:9:33:11:5 | ...->... | samConversion.kt:9:33:11:5 | invoke | public |
82+
| samConversion.kt:11:12:13:5 | ...->... | samConversion.kt:11:12:13:5 | invoke | override |
83+
| samConversion.kt:11:12:13:5 | ...->... | samConversion.kt:11:12:13:5 | invoke | public |
84+
| samConversion.kt:43:31:45:68 | ...->... | samConversion.kt:43:31:45:68 | invoke | override |
85+
| samConversion.kt:43:31:45:68 | ...->... | samConversion.kt:43:31:45:68 | invoke | public |
86+
| samConversion.kt:43:31:45:68 | ...->... | samConversion.kt:43:31:45:68 | invoke | public |
87+
| samConversion.kt:46:32:46:44 | ...->... | samConversion.kt:46:32:46:44 | invoke | override |
88+
| samConversion.kt:46:32:46:44 | ...->... | samConversion.kt:46:32:46:44 | invoke | public |
89+
nonOverrideInvoke
90+
| funcExprs.kt:36:29:36:117 | ...->... | funcExprs.kt:36:29:36:117 | invoke | 23 |
91+
| samConversion.kt:43:31:45:68 | ...->... | samConversion.kt:43:31:45:68 | invoke | 23 |

java/ql/test/kotlin/library-tests/exprs/funcExprs.ql

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,20 @@ query predicate memberRefExprs(MemberRefExpr e, Method m, string signature, Anon
1818
signature = m.getSignature() and
1919
e.getAnonymousClass() = an
2020
}
21+
22+
query predicate modifiers(LambdaExpr le, Method m, string modifier) {
23+
le.getAnonymousClass().getAMethod() = m and
24+
m.hasModifier(modifier)
25+
}
26+
27+
query predicate nonOverrideInvoke(LambdaExpr le, Method m, int pCount) {
28+
le.getAnonymousClass().getAMethod() = m and
29+
not m.hasModifier("override") and
30+
m.getName() = "invoke" and
31+
pCount = m.getNumberOfParameters() and
32+
exists(Method mOtherInvoke |
33+
le.getAnonymousClass().getAMethod() = mOtherInvoke and
34+
mOtherInvoke.hasModifier("override") and
35+
mOtherInvoke.getName() = "invoke"
36+
)
37+
}

java/ql/test/kotlin/library-tests/reflection/reflection.expected

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,48 +136,92 @@ fieldAccessInsideInvocationMethods
136136
| reflection.kt:99:14:99:29 | ...::... | reflection.kt:99:14:99:29 | new Function1<String,Inner<String>>(...) { ... } | reflection.kt:99:14:99:29 | invoke | reflection.kt:99:14:99:29 | this.<dispatchReceiver> |
137137
| reflection.kt:109:17:109:27 | ...::... | reflection.kt:109:17:109:27 | new KMutableProperty0<Integer>(...) { ... } | reflection.kt:109:17:109:27 | get | reflection.kt:109:17:109:27 | this.<dispatchReceiver> |
138138
| reflection.kt:109:17:109:27 | ...::... | reflection.kt:109:17:109:27 | new KMutableProperty0<Integer>(...) { ... } | reflection.kt:109:17:109:27 | set | reflection.kt:109:17:109:27 | this.<dispatchReceiver> |
139-
memberVisibility
139+
modifiers
140+
| reflection.kt:7:49:7:54 | ...::... | reflection.kt:7:49:7:54 | invoke | override |
140141
| reflection.kt:7:49:7:54 | ...::... | reflection.kt:7:49:7:54 | invoke | public |
142+
| reflection.kt:10:38:10:42 | ...::... | reflection.kt:10:38:10:42 | get | override |
141143
| reflection.kt:10:38:10:42 | ...::... | reflection.kt:10:38:10:42 | get | public |
144+
| reflection.kt:10:38:10:42 | ...::... | reflection.kt:10:38:10:42 | invoke | override |
142145
| reflection.kt:10:38:10:42 | ...::... | reflection.kt:10:38:10:42 | invoke | public |
146+
| reflection.kt:14:38:14:44 | ...::... | reflection.kt:14:38:14:44 | invoke | override |
143147
| reflection.kt:14:38:14:44 | ...::... | reflection.kt:14:38:14:44 | invoke | public |
148+
| reflection.kt:15:35:15:41 | ...::... | reflection.kt:15:35:15:41 | get | override |
144149
| reflection.kt:15:35:15:41 | ...::... | reflection.kt:15:35:15:41 | get | public |
150+
| reflection.kt:15:35:15:41 | ...::... | reflection.kt:15:35:15:41 | invoke | override |
145151
| reflection.kt:15:35:15:41 | ...::... | reflection.kt:15:35:15:41 | invoke | public |
152+
| reflection.kt:17:45:17:49 | ...::... | reflection.kt:17:45:17:49 | get | override |
146153
| reflection.kt:17:45:17:49 | ...::... | reflection.kt:17:45:17:49 | get | public |
154+
| reflection.kt:17:45:17:49 | ...::... | reflection.kt:17:45:17:49 | invoke | override |
147155
| reflection.kt:17:45:17:49 | ...::... | reflection.kt:17:45:17:49 | invoke | public |
156+
| reflection.kt:17:45:17:49 | ...::... | reflection.kt:17:45:17:49 | set | override |
148157
| reflection.kt:17:45:17:49 | ...::... | reflection.kt:17:45:17:49 | set | public |
158+
| reflection.kt:21:44:21:50 | ...::... | reflection.kt:21:44:21:50 | invoke | override |
149159
| reflection.kt:21:44:21:50 | ...::... | reflection.kt:21:44:21:50 | invoke | public |
160+
| reflection.kt:22:42:22:48 | ...::... | reflection.kt:22:42:22:48 | get | override |
150161
| reflection.kt:22:42:22:48 | ...::... | reflection.kt:22:42:22:48 | get | public |
162+
| reflection.kt:22:42:22:48 | ...::... | reflection.kt:22:42:22:48 | invoke | override |
151163
| reflection.kt:22:42:22:48 | ...::... | reflection.kt:22:42:22:48 | invoke | public |
164+
| reflection.kt:22:42:22:48 | ...::... | reflection.kt:22:42:22:48 | set | override |
152165
| reflection.kt:22:42:22:48 | ...::... | reflection.kt:22:42:22:48 | set | public |
166+
| reflection.kt:50:13:50:28 | ...::... | reflection.kt:50:13:50:28 | get | override |
153167
| reflection.kt:50:13:50:28 | ...::... | reflection.kt:50:13:50:28 | get | public |
168+
| reflection.kt:50:13:50:28 | ...::... | reflection.kt:50:13:50:28 | invoke | override |
154169
| reflection.kt:50:13:50:28 | ...::... | reflection.kt:50:13:50:28 | invoke | public |
170+
| reflection.kt:51:13:51:28 | ...::... | reflection.kt:51:13:51:28 | get | override |
155171
| reflection.kt:51:13:51:28 | ...::... | reflection.kt:51:13:51:28 | get | public |
172+
| reflection.kt:51:13:51:28 | ...::... | reflection.kt:51:13:51:28 | invoke | override |
156173
| reflection.kt:51:13:51:28 | ...::... | reflection.kt:51:13:51:28 | invoke | public |
174+
| reflection.kt:60:17:60:32 | ...::... | reflection.kt:60:17:60:32 | invoke | override |
157175
| reflection.kt:60:17:60:32 | ...::... | reflection.kt:60:17:60:32 | invoke | public |
176+
| reflection.kt:61:17:61:34 | ...::... | reflection.kt:61:17:61:34 | invoke | override |
158177
| reflection.kt:61:17:61:34 | ...::... | reflection.kt:61:17:61:34 | invoke | public |
178+
| reflection.kt:62:17:62:34 | ...::... | reflection.kt:62:17:62:34 | invoke | override |
159179
| reflection.kt:62:17:62:34 | ...::... | reflection.kt:62:17:62:34 | invoke | public |
180+
| reflection.kt:63:17:63:36 | ...::... | reflection.kt:63:17:63:36 | invoke | override |
160181
| reflection.kt:63:17:63:36 | ...::... | reflection.kt:63:17:63:36 | invoke | public |
182+
| reflection.kt:64:17:64:34 | ...::... | reflection.kt:64:17:64:34 | invoke | override |
161183
| reflection.kt:64:17:64:34 | ...::... | reflection.kt:64:17:64:34 | invoke | public |
184+
| reflection.kt:65:17:65:36 | ...::... | reflection.kt:65:17:65:36 | invoke | override |
162185
| reflection.kt:65:17:65:36 | ...::... | reflection.kt:65:17:65:36 | invoke | public |
186+
| reflection.kt:67:17:67:32 | ...::... | reflection.kt:67:17:67:32 | get | override |
163187
| reflection.kt:67:17:67:32 | ...::... | reflection.kt:67:17:67:32 | get | public |
188+
| reflection.kt:67:17:67:32 | ...::... | reflection.kt:67:17:67:32 | invoke | override |
164189
| reflection.kt:67:17:67:32 | ...::... | reflection.kt:67:17:67:32 | invoke | public |
190+
| reflection.kt:67:17:67:32 | ...::... | reflection.kt:67:17:67:32 | set | override |
165191
| reflection.kt:67:17:67:32 | ...::... | reflection.kt:67:17:67:32 | set | public |
192+
| reflection.kt:68:17:68:34 | ...::... | reflection.kt:68:17:68:34 | get | override |
166193
| reflection.kt:68:17:68:34 | ...::... | reflection.kt:68:17:68:34 | get | public |
194+
| reflection.kt:68:17:68:34 | ...::... | reflection.kt:68:17:68:34 | invoke | override |
167195
| reflection.kt:68:17:68:34 | ...::... | reflection.kt:68:17:68:34 | invoke | public |
196+
| reflection.kt:68:17:68:34 | ...::... | reflection.kt:68:17:68:34 | set | override |
168197
| reflection.kt:68:17:68:34 | ...::... | reflection.kt:68:17:68:34 | set | public |
198+
| reflection.kt:70:17:70:30 | ...::... | reflection.kt:70:17:70:30 | get | override |
169199
| reflection.kt:70:17:70:30 | ...::... | reflection.kt:70:17:70:30 | get | public |
200+
| reflection.kt:70:17:70:30 | ...::... | reflection.kt:70:17:70:30 | invoke | override |
170201
| reflection.kt:70:17:70:30 | ...::... | reflection.kt:70:17:70:30 | invoke | public |
202+
| reflection.kt:71:17:71:34 | ...::... | reflection.kt:71:17:71:34 | get | override |
171203
| reflection.kt:71:17:71:34 | ...::... | reflection.kt:71:17:71:34 | get | public |
204+
| reflection.kt:71:17:71:34 | ...::... | reflection.kt:71:17:71:34 | invoke | override |
172205
| reflection.kt:71:17:71:34 | ...::... | reflection.kt:71:17:71:34 | invoke | public |
206+
| reflection.kt:72:17:72:35 | ...::... | reflection.kt:72:17:72:35 | get | override |
173207
| reflection.kt:72:17:72:35 | ...::... | reflection.kt:72:17:72:35 | get | public |
208+
| reflection.kt:72:17:72:35 | ...::... | reflection.kt:72:17:72:35 | invoke | override |
174209
| reflection.kt:72:17:72:35 | ...::... | reflection.kt:72:17:72:35 | invoke | public |
210+
| reflection.kt:72:17:72:35 | ...::... | reflection.kt:72:17:72:35 | set | override |
175211
| reflection.kt:72:17:72:35 | ...::... | reflection.kt:72:17:72:35 | set | public |
212+
| reflection.kt:90:18:90:24 | ...::... | reflection.kt:90:18:90:24 | invoke | override |
176213
| reflection.kt:90:18:90:24 | ...::... | reflection.kt:90:18:90:24 | invoke | public |
214+
| reflection.kt:97:14:97:21 | ...::... | reflection.kt:97:14:97:21 | invoke | override |
177215
| reflection.kt:97:14:97:21 | ...::... | reflection.kt:97:14:97:21 | invoke | public |
216+
| reflection.kt:98:14:98:17 | ...::... | reflection.kt:98:14:98:17 | invoke | override |
178217
| reflection.kt:98:14:98:17 | ...::... | reflection.kt:98:14:98:17 | invoke | public |
218+
| reflection.kt:99:14:99:29 | ...::... | reflection.kt:99:14:99:29 | invoke | override |
179219
| reflection.kt:99:14:99:29 | ...::... | reflection.kt:99:14:99:29 | invoke | public |
220+
| reflection.kt:109:17:109:27 | ...::... | reflection.kt:109:17:109:27 | get | override |
180221
| reflection.kt:109:17:109:27 | ...::... | reflection.kt:109:17:109:27 | get | public |
222+
| reflection.kt:109:17:109:27 | ...::... | reflection.kt:109:17:109:27 | invoke | override |
181223
| reflection.kt:109:17:109:27 | ...::... | reflection.kt:109:17:109:27 | invoke | public |
224+
| reflection.kt:109:17:109:27 | ...::... | reflection.kt:109:17:109:27 | set | override |
182225
| reflection.kt:109:17:109:27 | ...::... | reflection.kt:109:17:109:27 | set | public |
226+
| reflection.kt:116:40:116:44 | ...::... | reflection.kt:116:40:116:44 | invoke | override |
183227
| reflection.kt:116:40:116:44 | ...::... | reflection.kt:116:40:116:44 | invoke | public |

java/ql/test/kotlin/library-tests/reflection/reflection.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ query predicate fieldAccessInsideInvocationMethods(
8181
access.getEnclosingCallable() = m
8282
}
8383

84-
query predicate memberVisibility(ClassInstanceExpr e, Method m, string modifier) {
84+
query predicate modifiers(ClassInstanceExpr e, Method m, string modifier) {
8585
(e instanceof MemberRefExpr or e instanceof PropertyRefExpr) and
8686
e.getAnonymousClass().getAMethod() = m and
8787
m.hasModifier(modifier)

0 commit comments

Comments
 (0)