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(
12021202 else
12031203 f.parentClassOrNull?.let { parentClass ->
12041204 getJavaEquivalentClass(parentClass)?.let { javaClass ->
1205- if (javaClass != parentClass)
1205+ if (javaClass != parentClass) {
1206+ val jvmName = getJvmName(f) ? : f.name.asString()
12061207 // Look for an exact type match...
12071208 javaClass.declarations.findSubType<IrFunction > { decl ->
1208- decl.name == f.name &&
1209+ decl.name.asString() == jvmName &&
12091210 decl.valueParameters.size == f.valueParameters.size &&
12101211 // Note matching by classifier not the whole type so that generic arguments are allowed to differ,
12111212 // 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(
12141215 } ? :
12151216 // Or if there is none, look for the only viable overload
12161217 javaClass.declarations.singleOrNullSubType<IrFunction > { decl ->
1217- decl.name == f.name &&
1218+ decl.name.asString() == jvmName &&
12181219 decl.valueParameters.size == f.valueParameters.size
12191220 } ? :
12201221 // Or check property accessors:
@@ -1234,6 +1235,7 @@ open class KotlinUsesExtractor(
12341235 }
12351236 null
12361237 }
1238+ }
12371239 else
12381240 null
12391241 }
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 11import java
2+ import semmle.code.java.Diagnostics
23
34from 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