Extract override modifier for lambda and reflection-like constructs

This commit is contained in:
Tamas Vajk
2022-04-07 09:58:40 +02:00
committed by Ian Lynagh
parent 505ccbbcf6
commit fc66b73e3b
5 changed files with 118 additions and 2 deletions

View File

@@ -37,3 +37,55 @@ memberRefExprs
| 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>(...) { ... } |
| 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>(...) { ... } |
| 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>(...) { ... } |
modifiers
| delegatedProperties.kt:6:32:9:9 | ...->... | delegatedProperties.kt:6:32:9:9 | invoke | override |
| delegatedProperties.kt:6:32:9:9 | ...->... | delegatedProperties.kt:6:32:9:9 | invoke | public |
| funcExprs.kt:22:26:22:33 | ...->... | funcExprs.kt:22:26:22:33 | invoke | override |
| funcExprs.kt:22:26:22:33 | ...->... | funcExprs.kt:22:26:22:33 | invoke | public |
| funcExprs.kt:23:26:23:33 | ...->... | funcExprs.kt:23:26:23:33 | invoke | override |
| funcExprs.kt:23:26:23:33 | ...->... | funcExprs.kt:23:26:23:33 | invoke | public |
| funcExprs.kt:24:26:24:33 | ...->... | funcExprs.kt:24:26:24:33 | invoke | override |
| funcExprs.kt:24:26:24:33 | ...->... | funcExprs.kt:24:26:24:33 | invoke | public |
| funcExprs.kt:25:29:25:38 | ...->... | funcExprs.kt:25:29:25:38 | invoke | override |
| funcExprs.kt:25:29:25:38 | ...->... | funcExprs.kt:25:29:25:38 | invoke | public |
| funcExprs.kt:26:29:26:34 | ...->... | funcExprs.kt:26:29:26:34 | invoke | override |
| funcExprs.kt:26:29:26:34 | ...->... | funcExprs.kt:26:29:26:34 | invoke | public |
| funcExprs.kt:27:29:27:42 | ...->... | funcExprs.kt:27:29:27:42 | invoke | override |
| funcExprs.kt:27:29:27:42 | ...->... | funcExprs.kt:27:29:27:42 | invoke | public |
| funcExprs.kt:29:29:29:37 | ...->... | funcExprs.kt:29:29:29:37 | invoke | override |
| funcExprs.kt:29:29:29:37 | ...->... | funcExprs.kt:29:29:29:37 | invoke | public |
| funcExprs.kt:30:28:30:50 | ...->... | funcExprs.kt:30:28:30:50 | invoke | override |
| funcExprs.kt:30:28:30:50 | ...->... | funcExprs.kt:30:28:30:50 | invoke | public |
| funcExprs.kt:31:28:31:40 | ...->... | funcExprs.kt:31:28:31:40 | invoke | override |
| funcExprs.kt:31:28:31:40 | ...->... | funcExprs.kt:31:28:31:40 | invoke | public |
| funcExprs.kt:32:28:32:44 | ...->... | funcExprs.kt:32:28:32:44 | invoke | override |
| funcExprs.kt:32:28:32:44 | ...->... | funcExprs.kt:32:28:32:44 | invoke | public |
| funcExprs.kt:33:28:33:51 | ...->... | funcExprs.kt:33:28:33:51 | invoke | override |
| funcExprs.kt:33:28:33:51 | ...->... | funcExprs.kt:33:28:33:51 | invoke | public |
| funcExprs.kt:33:37:33:47 | ...->... | funcExprs.kt:33:37:33:47 | invoke | override |
| funcExprs.kt:33:37:33:47 | ...->... | funcExprs.kt:33:37:33:47 | invoke | public |
| funcExprs.kt:35:29:35:112 | ...->... | funcExprs.kt:35:29:35:112 | invoke | override |
| funcExprs.kt:35:29:35:112 | ...->... | funcExprs.kt:35:29:35:112 | invoke | public |
| funcExprs.kt:36:29:36:117 | ...->... | funcExprs.kt:36:29:36:117 | invoke | override |
| funcExprs.kt:36:29:36:117 | ...->... | funcExprs.kt:36:29:36:117 | invoke | public |
| funcExprs.kt:36:29:36:117 | ...->... | funcExprs.kt:36:29:36:117 | invoke | public |
| funcExprs.kt:75:12:75:22 | ...->... | funcExprs.kt:75:12:75:22 | invoke | override |
| funcExprs.kt:75:12:75:22 | ...->... | funcExprs.kt:75:12:75:22 | invoke | public |
| samConversion.kt:2:31:2:45 | ...->... | samConversion.kt:2:31:2:45 | invoke | override |
| samConversion.kt:2:31:2:45 | ...->... | samConversion.kt:2:31:2:45 | invoke | public |
| samConversion.kt:4:27:4:42 | ...->... | samConversion.kt:4:27:4:42 | invoke | override |
| samConversion.kt:4:27:4:42 | ...->... | samConversion.kt:4:27:4:42 | invoke | public |
| samConversion.kt:7:29:7:46 | ...->... | samConversion.kt:7:29:7:46 | invoke | override |
| samConversion.kt:7:29:7:46 | ...->... | samConversion.kt:7:29:7:46 | invoke | public |
| samConversion.kt:9:33:11:5 | ...->... | samConversion.kt:9:33:11:5 | invoke | override |
| samConversion.kt:9:33:11:5 | ...->... | samConversion.kt:9:33:11:5 | invoke | public |
| samConversion.kt:11:12:13:5 | ...->... | samConversion.kt:11:12:13:5 | invoke | override |
| samConversion.kt:11:12:13:5 | ...->... | samConversion.kt:11:12:13:5 | invoke | public |
| samConversion.kt:43:31:45:68 | ...->... | samConversion.kt:43:31:45:68 | invoke | override |
| samConversion.kt:43:31:45:68 | ...->... | samConversion.kt:43:31:45:68 | invoke | public |
| samConversion.kt:43:31:45:68 | ...->... | samConversion.kt:43:31:45:68 | invoke | public |
| samConversion.kt:46:32:46:44 | ...->... | samConversion.kt:46:32:46:44 | invoke | override |
| samConversion.kt:46:32:46:44 | ...->... | samConversion.kt:46:32:46:44 | invoke | public |
nonOverrideInvoke
| funcExprs.kt:36:29:36:117 | ...->... | funcExprs.kt:36:29:36:117 | invoke | 23 |
| samConversion.kt:43:31:45:68 | ...->... | samConversion.kt:43:31:45:68 | invoke | 23 |

View File

@@ -18,3 +18,20 @@ query predicate memberRefExprs(MemberRefExpr e, Method m, string signature, Anon
signature = m.getSignature() and
e.getAnonymousClass() = an
}
query predicate modifiers(LambdaExpr le, Method m, string modifier) {
le.getAnonymousClass().getAMethod() = m and
m.hasModifier(modifier)
}
query predicate nonOverrideInvoke(LambdaExpr le, Method m, int pCount) {
le.getAnonymousClass().getAMethod() = m and
not m.hasModifier("override") and
m.getName() = "invoke" and
pCount = m.getNumberOfParameters() and
exists(Method mOtherInvoke |
le.getAnonymousClass().getAMethod() = mOtherInvoke and
mOtherInvoke.hasModifier("override") and
mOtherInvoke.getName() = "invoke"
)
}

View File

@@ -136,48 +136,92 @@ fieldAccessInsideInvocationMethods
| 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> |
| 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> |
| 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> |
memberVisibility
modifiers
| reflection.kt:7:49:7:54 | ...::... | reflection.kt:7:49:7:54 | invoke | override |
| reflection.kt:7:49:7:54 | ...::... | reflection.kt:7:49:7:54 | invoke | public |
| reflection.kt:10:38:10:42 | ...::... | reflection.kt:10:38:10:42 | get | override |
| reflection.kt:10:38:10:42 | ...::... | reflection.kt:10:38:10:42 | get | public |
| reflection.kt:10:38:10:42 | ...::... | reflection.kt:10:38:10:42 | invoke | override |
| reflection.kt:10:38:10:42 | ...::... | reflection.kt:10:38:10:42 | invoke | public |
| reflection.kt:14:38:14:44 | ...::... | reflection.kt:14:38:14:44 | invoke | override |
| reflection.kt:14:38:14:44 | ...::... | reflection.kt:14:38:14:44 | invoke | public |
| reflection.kt:15:35:15:41 | ...::... | reflection.kt:15:35:15:41 | get | override |
| reflection.kt:15:35:15:41 | ...::... | reflection.kt:15:35:15:41 | get | public |
| reflection.kt:15:35:15:41 | ...::... | reflection.kt:15:35:15:41 | invoke | override |
| reflection.kt:15:35:15:41 | ...::... | reflection.kt:15:35:15:41 | invoke | public |
| reflection.kt:17:45:17:49 | ...::... | reflection.kt:17:45:17:49 | get | override |
| reflection.kt:17:45:17:49 | ...::... | reflection.kt:17:45:17:49 | get | public |
| reflection.kt:17:45:17:49 | ...::... | reflection.kt:17:45:17:49 | invoke | override |
| reflection.kt:17:45:17:49 | ...::... | reflection.kt:17:45:17:49 | invoke | public |
| reflection.kt:17:45:17:49 | ...::... | reflection.kt:17:45:17:49 | set | override |
| reflection.kt:17:45:17:49 | ...::... | reflection.kt:17:45:17:49 | set | public |
| reflection.kt:21:44:21:50 | ...::... | reflection.kt:21:44:21:50 | invoke | override |
| reflection.kt:21:44:21:50 | ...::... | reflection.kt:21:44:21:50 | invoke | public |
| reflection.kt:22:42:22:48 | ...::... | reflection.kt:22:42:22:48 | get | override |
| reflection.kt:22:42:22:48 | ...::... | reflection.kt:22:42:22:48 | get | public |
| reflection.kt:22:42:22:48 | ...::... | reflection.kt:22:42:22:48 | invoke | override |
| reflection.kt:22:42:22:48 | ...::... | reflection.kt:22:42:22:48 | invoke | public |
| reflection.kt:22:42:22:48 | ...::... | reflection.kt:22:42:22:48 | set | override |
| reflection.kt:22:42:22:48 | ...::... | reflection.kt:22:42:22:48 | set | public |
| reflection.kt:50:13:50:28 | ...::... | reflection.kt:50:13:50:28 | get | override |
| reflection.kt:50:13:50:28 | ...::... | reflection.kt:50:13:50:28 | get | public |
| reflection.kt:50:13:50:28 | ...::... | reflection.kt:50:13:50:28 | invoke | override |
| reflection.kt:50:13:50:28 | ...::... | reflection.kt:50:13:50:28 | invoke | public |
| reflection.kt:51:13:51:28 | ...::... | reflection.kt:51:13:51:28 | get | override |
| reflection.kt:51:13:51:28 | ...::... | reflection.kt:51:13:51:28 | get | public |
| reflection.kt:51:13:51:28 | ...::... | reflection.kt:51:13:51:28 | invoke | override |
| reflection.kt:51:13:51:28 | ...::... | reflection.kt:51:13:51:28 | invoke | public |
| reflection.kt:60:17:60:32 | ...::... | reflection.kt:60:17:60:32 | invoke | override |
| reflection.kt:60:17:60:32 | ...::... | reflection.kt:60:17:60:32 | invoke | public |
| reflection.kt:61:17:61:34 | ...::... | reflection.kt:61:17:61:34 | invoke | override |
| reflection.kt:61:17:61:34 | ...::... | reflection.kt:61:17:61:34 | invoke | public |
| reflection.kt:62:17:62:34 | ...::... | reflection.kt:62:17:62:34 | invoke | override |
| reflection.kt:62:17:62:34 | ...::... | reflection.kt:62:17:62:34 | invoke | public |
| reflection.kt:63:17:63:36 | ...::... | reflection.kt:63:17:63:36 | invoke | override |
| reflection.kt:63:17:63:36 | ...::... | reflection.kt:63:17:63:36 | invoke | public |
| reflection.kt:64:17:64:34 | ...::... | reflection.kt:64:17:64:34 | invoke | override |
| reflection.kt:64:17:64:34 | ...::... | reflection.kt:64:17:64:34 | invoke | public |
| reflection.kt:65:17:65:36 | ...::... | reflection.kt:65:17:65:36 | invoke | override |
| reflection.kt:65:17:65:36 | ...::... | reflection.kt:65:17:65:36 | invoke | public |
| reflection.kt:67:17:67:32 | ...::... | reflection.kt:67:17:67:32 | get | override |
| reflection.kt:67:17:67:32 | ...::... | reflection.kt:67:17:67:32 | get | public |
| reflection.kt:67:17:67:32 | ...::... | reflection.kt:67:17:67:32 | invoke | override |
| reflection.kt:67:17:67:32 | ...::... | reflection.kt:67:17:67:32 | invoke | public |
| reflection.kt:67:17:67:32 | ...::... | reflection.kt:67:17:67:32 | set | override |
| reflection.kt:67:17:67:32 | ...::... | reflection.kt:67:17:67:32 | set | public |
| reflection.kt:68:17:68:34 | ...::... | reflection.kt:68:17:68:34 | get | override |
| reflection.kt:68:17:68:34 | ...::... | reflection.kt:68:17:68:34 | get | public |
| reflection.kt:68:17:68:34 | ...::... | reflection.kt:68:17:68:34 | invoke | override |
| reflection.kt:68:17:68:34 | ...::... | reflection.kt:68:17:68:34 | invoke | public |
| reflection.kt:68:17:68:34 | ...::... | reflection.kt:68:17:68:34 | set | override |
| reflection.kt:68:17:68:34 | ...::... | reflection.kt:68:17:68:34 | set | public |
| reflection.kt:70:17:70:30 | ...::... | reflection.kt:70:17:70:30 | get | override |
| reflection.kt:70:17:70:30 | ...::... | reflection.kt:70:17:70:30 | get | public |
| reflection.kt:70:17:70:30 | ...::... | reflection.kt:70:17:70:30 | invoke | override |
| reflection.kt:70:17:70:30 | ...::... | reflection.kt:70:17:70:30 | invoke | public |
| reflection.kt:71:17:71:34 | ...::... | reflection.kt:71:17:71:34 | get | override |
| reflection.kt:71:17:71:34 | ...::... | reflection.kt:71:17:71:34 | get | public |
| reflection.kt:71:17:71:34 | ...::... | reflection.kt:71:17:71:34 | invoke | override |
| reflection.kt:71:17:71:34 | ...::... | reflection.kt:71:17:71:34 | invoke | public |
| reflection.kt:72:17:72:35 | ...::... | reflection.kt:72:17:72:35 | get | override |
| reflection.kt:72:17:72:35 | ...::... | reflection.kt:72:17:72:35 | get | public |
| reflection.kt:72:17:72:35 | ...::... | reflection.kt:72:17:72:35 | invoke | override |
| reflection.kt:72:17:72:35 | ...::... | reflection.kt:72:17:72:35 | invoke | public |
| reflection.kt:72:17:72:35 | ...::... | reflection.kt:72:17:72:35 | set | override |
| reflection.kt:72:17:72:35 | ...::... | reflection.kt:72:17:72:35 | set | public |
| reflection.kt:90:18:90:24 | ...::... | reflection.kt:90:18:90:24 | invoke | override |
| reflection.kt:90:18:90:24 | ...::... | reflection.kt:90:18:90:24 | invoke | public |
| reflection.kt:97:14:97:21 | ...::... | reflection.kt:97:14:97:21 | invoke | override |
| reflection.kt:97:14:97:21 | ...::... | reflection.kt:97:14:97:21 | invoke | public |
| reflection.kt:98:14:98:17 | ...::... | reflection.kt:98:14:98:17 | invoke | override |
| reflection.kt:98:14:98:17 | ...::... | reflection.kt:98:14:98:17 | invoke | public |
| reflection.kt:99:14:99:29 | ...::... | reflection.kt:99:14:99:29 | invoke | override |
| reflection.kt:99:14:99:29 | ...::... | reflection.kt:99:14:99:29 | invoke | public |
| reflection.kt:109:17:109:27 | ...::... | reflection.kt:109:17:109:27 | get | override |
| reflection.kt:109:17:109:27 | ...::... | reflection.kt:109:17:109:27 | get | public |
| reflection.kt:109:17:109:27 | ...::... | reflection.kt:109:17:109:27 | invoke | override |
| reflection.kt:109:17:109:27 | ...::... | reflection.kt:109:17:109:27 | invoke | public |
| reflection.kt:109:17:109:27 | ...::... | reflection.kt:109:17:109:27 | set | override |
| reflection.kt:109:17:109:27 | ...::... | reflection.kt:109:17:109:27 | set | public |
| reflection.kt:116:40:116:44 | ...::... | reflection.kt:116:40:116:44 | invoke | override |
| reflection.kt:116:40:116:44 | ...::... | reflection.kt:116:40:116:44 | invoke | public |

View File

@@ -81,7 +81,7 @@ query predicate fieldAccessInsideInvocationMethods(
access.getEnclosingCallable() = m
}
query predicate memberVisibility(ClassInstanceExpr e, Method m, string modifier) {
query predicate modifiers(ClassInstanceExpr e, Method m, string modifier) {
(e instanceof MemberRefExpr or e instanceof PropertyRefExpr) and
e.getAnonymousClass().getAMethod() = m and
m.hasModifier(modifier)