File tree Expand file tree Collapse file tree 3 files changed +20
-13
lines changed
kotlin-extractor/src/main/kotlin
ql/test/kotlin/library-tests/special-method-getters Expand file tree Collapse file tree 3 files changed +20
-13
lines changed Original file line number Diff line number Diff line change @@ -1202,10 +1202,11 @@ open class KotlinUsesExtractor(
1202
1202
else
1203
1203
f.parentClassOrNull?.let { parentClass ->
1204
1204
getJavaEquivalentClass(parentClass)?.let { javaClass ->
1205
- if (javaClass != parentClass)
1205
+ if (javaClass != parentClass) {
1206
+ val jvmName = getJvmName(f) ? : f.name.asString()
1206
1207
// Look for an exact type match...
1207
1208
javaClass.declarations.findSubType<IrFunction > { decl ->
1208
- decl.name == f.name &&
1209
+ decl.name.asString() == jvmName &&
1209
1210
decl.valueParameters.size == f.valueParameters.size &&
1210
1211
// Note matching by classifier not the whole type so that generic arguments are allowed to differ,
1211
1212
// as they always will for method type parameters occurring in parameter types (e.g. <T> toArray(T[] array)
@@ -1214,7 +1215,7 @@ open class KotlinUsesExtractor(
1214
1215
} ? :
1215
1216
// Or if there is none, look for the only viable overload
1216
1217
javaClass.declarations.singleOrNullSubType<IrFunction > { decl ->
1217
- decl.name == f.name &&
1218
+ decl.name.asString() == jvmName &&
1218
1219
decl.valueParameters.size == f.valueParameters.size
1219
1220
} ? :
1220
1221
// Or check property accessors:
@@ -1234,6 +1235,7 @@ open class KotlinUsesExtractor(
1234
1235
}
1235
1236
null
1236
1237
}
1238
+ }
1237
1239
else
1238
1240
null
1239
1241
}
Original file line number Diff line number Diff line change 1
- | test.kt:1:84:1:89 | length(...) | length |
2
- | test.kt:1:97:1:100 | size(...) | size |
3
- | test.kt:1:108:1:111 | size(...) | size |
4
- | test.kt:1:119:1:122 | keySet(...) | keySet |
5
- | test.kt:1:124:1:127 | size(...) | size |
6
- | test.kt:1:135:1:140 | values(...) | values |
7
- | test.kt:1:142:1:145 | size(...) | size |
8
- | test.kt:1:153:1:159 | entrySet(...) | entrySet |
9
- | test.kt:1:161:1:164 | size(...) | size |
1
+ diag
2
+ #select
3
+ | test.kt:1:84:1:89 | length(...) | java.lang.CharSequence | length |
4
+ | test.kt:1:97:1:100 | size(...) | java.util.Collection<String> | size |
5
+ | test.kt:1:108:1:111 | size(...) | java.util.Map<String,String> | size |
6
+ | test.kt:1:119:1:122 | keySet(...) | java.util.Map<String,String> | keySet |
7
+ | test.kt:1:124:1:127 | size(...) | java.util.Set<String> | size |
8
+ | test.kt:1:135:1:140 | values(...) | java.util.Map<String,String> | values |
9
+ | test.kt:1:142:1:145 | size(...) | java.util.Collection<String> | size |
10
+ | test.kt:1:153:1:159 | entrySet(...) | java.util.Map<String,String> | entrySet |
11
+ | test.kt:1:161:1:164 | size(...) | java.util.Set<Entry<String,String>> | size |
Original file line number Diff line number Diff line change 1
1
import java
2
+ import semmle.code.java.Diagnostics
2
3
3
4
from MethodAccess ma
4
- select ma , ma .getCallee ( ) .toString ( )
5
+ select ma , ma .getCallee ( ) .getDeclaringType ( ) .getQualifiedName ( ) , ma .getCallee ( ) .getName ( )
6
+
7
+ query predicate diag ( Diagnostic d ) { any ( ) }
You can’t perform that action at this time.
0 commit comments