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

Skip to content

Commit f5383bb

Browse files
tamasvajkigfoo
authored andcommitted
Add extension receiver type to function signature in trap file names
1 parent 61728e6 commit f5383bb

4 files changed

Lines changed: 17 additions & 7 deletions

File tree

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,14 @@ open class KotlinUsesExtractor(
249249
// Note we erase the parameter types before calling useType even though the signature should be the same
250250
// in order to prevent an infinite loop through useTypeParameter -> useDeclarationParent -> useFunction
251251
// -> extractFunctionLaterIfExternalFileMember, which would result for `fun <T> f(t: T) { ... }` for example.
252-
val paramTypes = f.valueParameters.map { useType(erase(it.type)) }
252+
val ext = f.extensionReceiverParameter
253+
val parameters = if (ext != null) {
254+
listOf(ext) + f.valueParameters
255+
} else {
256+
f.valueParameters
257+
}
258+
259+
val paramTypes = parameters.map { useType(erase(it.type)) }
253260
val signature = paramTypes.joinToString(separator = ",", prefix = "(", postfix = ")") { it.javaResult.signature!! }
254261
dependencyCollector?.addDependency(f, signature)
255262
externalClassExtractor.extractLater(f, signature)
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1-
| test.kt:2:17:2:31 | startsWith(...) | test.kt:2:13:2:15 | url | test.kt:2:29:2:29 | 1 |
2-
| test.kt:3:17:3:33 | removePrefix(...) | test.kt:3:13:3:15 | url | test.kt:3:31:3:31 | 2 |
1+
| PropertyReferenceDelegatesKt | getValue(KProperty0<V>, Object, KProperty<?>) |
2+
| PropertyReferenceDelegatesKt | getValue(KProperty1<T,V>, T, KProperty<?>) |
3+
| StringsKt | removePrefix(String, CharSequence) |
4+
| StringsKt | startsWith(String, String, boolean) |
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
import java
22

3-
from MethodAccess ma, Expr qualifier, Argument arg
4-
where ma.getQualifier() = qualifier and
5-
ma.getAnArgument() = arg
6-
select ma, qualifier, arg
3+
from MethodAccess ma
4+
select ma.getMethod().getDeclaringType().getName(), ma.getMethod().getStringSignature()
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
fun test(url: String) {
22
val s = url.startsWith("1")
33
val r = url.removePrefix("2")
4+
5+
(null!! as kotlin.reflect.KProperty0<Int>).getValue(null, null!!)
6+
(null!! as kotlin.reflect.KProperty1<Int, Int>).getValue(1, null!!)
47
}

0 commit comments

Comments
 (0)