Fix labels of extension function parameters

This commit is contained in:
Tamas Vajk
2022-05-10 11:13:11 +02:00
committed by Chris Smowton
parent a0f4960e31
commit cc92c6517b
3 changed files with 12 additions and 194 deletions

View File

@@ -1209,15 +1209,20 @@ open class KotlinUsesExtractor(
* `parent` is null.
*/
fun getValueParameterLabel(vp: IrValueParameter, parent: Label<out DbCallable>?): String {
val parentId = parent ?: useDeclarationParent(vp.parent, false)
val idx = vp.index
val declarationParent = vp.parent
val parentId = parent ?: useDeclarationParent(declarationParent, false)
val idx = if (declarationParent is IrFunction && declarationParent.extensionReceiverParameter != null)
// For extension functions increase the index to match what the java extractor sees:
vp.index + 1
else
vp.index
if (idx < 0) {
val p = vp.parent
if (p !is IrFunction || p.extensionReceiverParameter != vp) {
// We're not extracting this and this@TYPE parameters of functions:
logger.error("Unexpected negative index for parameter")
}
}
return "@\"params;{$parentId};$idx\""
}

View File

@@ -1,158 +0,0 @@
[INVALID_KEY_SET] predicate params(@param id, @type typeid, int pos, @callable parentid, @param sourceid): The key set {parentid, pos} does not functionally determine all fields.
Here is a pair of tuples that agree on the key set but differ at index 0:
Tuple 1 in row 2: (87,42,0,44,87)
Tuple 2 in row 4: (90,42,0,44,90)
Relevant element: Tuple 1: id=87
Full ID for 87: @"params;(44);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.someFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
Relevant element: Tuple 2: id=90
Full ID for 90: @"params;(44);-1". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.someFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"};-1"
Relevant element: typeid=42
Full ID for 42: @"class;SomeClass"
Relevant element: parentid=44
Full ID for 44: @"callable;(40).someFun((42),(43))(16)". The ID may expand to @"callable;{@"class;ExtensionsKt"}.someFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"
Relevant element: Tuple 1: sourceid=87
Full ID for 87: @"params;(44);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.someFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
Relevant element: Tuple 2: sourceid=90
Full ID for 90: @"params;(44);-1". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.someFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"};-1"
[INVALID_KEY_SET] predicate params(@param id, @type typeid, int pos, @callable parentid, @param sourceid): The key set {parentid, pos} does not functionally determine all fields.
Here is a pair of tuples that agree on the key set but differ at index 0:
Tuple 1 in row 3: (87,43,1,44,87)
Tuple 2 in row 31: (329,43,1,44,329)
Relevant element: Tuple 1: id=87
Full ID for 87: @"params;(44);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.someFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
Relevant element: Tuple 2: id=329
Full ID for 329: @"params;(44);1". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.someFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"};1"
Relevant element: typeid=43
Full ID for 43: @"class;java.lang.String"
Relevant element: parentid=44
Full ID for 44: @"callable;(40).someFun((42),(43))(16)". The ID may expand to @"callable;{@"class;ExtensionsKt"}.someFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"
Relevant element: Tuple 1: sourceid=87
Full ID for 87: @"params;(44);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.someFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
Relevant element: Tuple 2: sourceid=329
Full ID for 329: @"params;(44);1". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.someFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"};1"
[INVALID_KEY_SET] predicate params(@param id, @type typeid, int pos, @callable parentid, @param sourceid): The key set {parentid, pos} does not functionally determine all fields.
Here is a pair of tuples that agree on the key set but differ at index 0:
Tuple 1 in row 6: (99,72,0,97,99)
Tuple 2 in row 7: (102,72,0,97,102)
Relevant element: Tuple 1: id=99
Full ID for 99: @"params;(97);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.anotherFun({@"class;AnotherClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
Relevant element: Tuple 2: id=102
Full ID for 102: @"params;(97);-1". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.anotherFun({@"class;AnotherClass"},{@"class;java.lang.String"}){@"type;void"}"};-1"
Relevant element: typeid=72
Full ID for 72: @"class;AnotherClass"
Relevant element: parentid=97
Full ID for 97: @"callable;(40).anotherFun((72),(43))(16)". The ID may expand to @"callable;{@"class;ExtensionsKt"}.anotherFun({@"class;AnotherClass"},{@"class;java.lang.String"}){@"type;void"}"
Relevant element: Tuple 1: sourceid=99
Full ID for 99: @"params;(97);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.anotherFun({@"class;AnotherClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
Relevant element: Tuple 2: sourceid=102
Full ID for 102: @"params;(97);-1". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.anotherFun({@"class;AnotherClass"},{@"class;java.lang.String"}){@"type;void"}"};-1"
[INVALID_KEY_SET] predicate params(@param id, @type typeid, int pos, @callable parentid, @param sourceid): The key set {parentid, pos} does not functionally determine all fields.
Here is a pair of tuples that agree on the key set but differ at index 0:
Tuple 1 in row 5: (99,43,1,97,99)
Tuple 2 in row 30: (326,43,1,97,326)
Relevant element: Tuple 1: id=99
Full ID for 99: @"params;(97);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.anotherFun({@"class;AnotherClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
Relevant element: Tuple 2: id=326
Full ID for 326: @"params;(97);1". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.anotherFun({@"class;AnotherClass"},{@"class;java.lang.String"}){@"type;void"}"};1"
Relevant element: typeid=43
Full ID for 43: @"class;java.lang.String"
Relevant element: parentid=97
Full ID for 97: @"callable;(40).anotherFun((72),(43))(16)". The ID may expand to @"callable;{@"class;ExtensionsKt"}.anotherFun({@"class;AnotherClass"},{@"class;java.lang.String"}){@"type;void"}"
Relevant element: Tuple 1: sourceid=99
Full ID for 99: @"params;(97);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.anotherFun({@"class;AnotherClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
Relevant element: Tuple 2: sourceid=326
Full ID for 326: @"params;(97);1". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.anotherFun({@"class;AnotherClass"},{@"class;java.lang.String"}){@"type;void"}"};1"
[INVALID_KEY_SET] predicate params(@param id, @type typeid, int pos, @callable parentid, @param sourceid): The key set {parentid, pos} does not functionally determine all fields.
Here is a pair of tuples that agree on the key set but differ at index 0:
Tuple 1 in row 8: (110,42,0,108,110)
Tuple 2 in row 10: (113,42,0,108,113)
Relevant element: Tuple 1: id=110
Full ID for 110: @"params;(108);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.bothFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
Relevant element: Tuple 2: id=113
Full ID for 113: @"params;(108);-1". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.bothFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"};-1"
Relevant element: typeid=42
Full ID for 42: @"class;SomeClass"
Relevant element: parentid=108
Full ID for 108: @"callable;(40).bothFun((42),(43))(16)". The ID may expand to @"callable;{@"class;ExtensionsKt"}.bothFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"
Relevant element: Tuple 1: sourceid=110
Full ID for 110: @"params;(108);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.bothFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
Relevant element: Tuple 2: sourceid=113
Full ID for 113: @"params;(108);-1". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.bothFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"};-1"
[INVALID_KEY_SET] predicate params(@param id, @type typeid, int pos, @callable parentid, @param sourceid): More errors, not displayed. There are at least 14 pairs of tuples not satisfying the key dependency for a relation of size 10480
[INVALID_KEY] predicate params(@param id, @type typeid, int pos, @callable parentid, @param sourceid): The key set {id} does not functionally determine all fields.
Here is a pair of tuples that agree on the key set but differ at index 1:
Tuple 1 in row 2: (87,42,0,44,87)
Tuple 2 in row 3: (87,43,1,44,87)
Relevant element: id=87
Full ID for 87: @"params;(44);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.someFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
Relevant element: Tuple 1: typeid=42
Full ID for 42: @"class;SomeClass"
Relevant element: Tuple 2: typeid=43
Full ID for 43: @"class;java.lang.String"
Relevant element: parentid=44
Full ID for 44: @"callable;(40).someFun((42),(43))(16)". The ID may expand to @"callable;{@"class;ExtensionsKt"}.someFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"
Relevant element: sourceid=87
Full ID for 87: @"params;(44);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.someFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
[INVALID_KEY] predicate params(@param id, @type typeid, int pos, @callable parentid, @param sourceid): The key set {id} does not functionally determine all fields.
Here is a pair of tuples that agree on the key set but differ at index 1:
Tuple 1 in row 5: (99,43,1,97,99)
Tuple 2 in row 6: (99,72,0,97,99)
Relevant element: id=99
Full ID for 99: @"params;(97);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.anotherFun({@"class;AnotherClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
Relevant element: Tuple 1: typeid=43
Full ID for 43: @"class;java.lang.String"
Relevant element: Tuple 2: typeid=72
Full ID for 72: @"class;AnotherClass"
Relevant element: parentid=97
Full ID for 97: @"callable;(40).anotherFun((72),(43))(16)". The ID may expand to @"callable;{@"class;ExtensionsKt"}.anotherFun({@"class;AnotherClass"},{@"class;java.lang.String"}){@"type;void"}"
Relevant element: sourceid=99
Full ID for 99: @"params;(97);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.anotherFun({@"class;AnotherClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
[INVALID_KEY] predicate params(@param id, @type typeid, int pos, @callable parentid, @param sourceid): The key set {id} does not functionally determine all fields.
Here is a pair of tuples that agree on the key set but differ at index 1:
Tuple 1 in row 8: (110,42,0,108,110)
Tuple 2 in row 9: (110,43,1,108,110)
Relevant element: id=110
Full ID for 110: @"params;(108);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.bothFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
Relevant element: Tuple 1: typeid=42
Full ID for 42: @"class;SomeClass"
Relevant element: Tuple 2: typeid=43
Full ID for 43: @"class;java.lang.String"
Relevant element: parentid=108
Full ID for 108: @"callable;(40).bothFun((42),(43))(16)". The ID may expand to @"callable;{@"class;ExtensionsKt"}.bothFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"
Relevant element: sourceid=110
Full ID for 110: @"params;(108);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.bothFun({@"class;SomeClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
[INVALID_KEY] predicate params(@param id, @type typeid, int pos, @callable parentid, @param sourceid): The key set {id} does not functionally determine all fields.
Here is a pair of tuples that agree on the key set but differ at index 1:
Tuple 1 in row 11: (121,43,1,119,121)
Tuple 2 in row 12: (121,72,0,119,121)
Relevant element: id=121
Full ID for 121: @"params;(119);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.bothFun({@"class;AnotherClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
Relevant element: Tuple 1: typeid=43
Full ID for 43: @"class;java.lang.String"
Relevant element: Tuple 2: typeid=72
Full ID for 72: @"class;AnotherClass"
Relevant element: parentid=119
Full ID for 119: @"callable;(40).bothFun((72),(43))(16)". The ID may expand to @"callable;{@"class;ExtensionsKt"}.bothFun({@"class;AnotherClass"},{@"class;java.lang.String"}){@"type;void"}"
Relevant element: sourceid=121
Full ID for 121: @"params;(119);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.bothFun({@"class;AnotherClass"},{@"class;java.lang.String"}){@"type;void"}"};0"
[INVALID_KEY] predicate params(@param id, @type typeid, int pos, @callable parentid, @param sourceid): The key set {id} does not functionally determine all fields.
Here is a pair of tuples that agree on the key set but differ at index 1:
Tuple 1 in row 14: (134,42,0,132,134)
Tuple 2 in row 15: (134,130,1,132,134)
Relevant element: Tuple 1: id=134
Full ID for 134: @"params;(132);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.bothFunDiffTypes({@"class;SomeClass"},{@"type;int"}){@"type;int"}"};0"
Relevant element: Tuple 2: id=134
Full ID for 134: @"params;(132);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.bothFunDiffTypes({@"class;SomeClass"},{@"type;int"}){@"type;int"}"};0"
Relevant element: Tuple 1: typeid=42
Full ID for 42: @"class;SomeClass"
Relevant element: Tuple 2: typeid=130
Full ID for 130: @"type;int"
Relevant element: Tuple 1: parentid=132
Full ID for 132: @"callable;(40).bothFunDiffTypes((42),(130))(130)". The ID may expand to @"callable;{@"class;ExtensionsKt"}.bothFunDiffTypes({@"class;SomeClass"},{@"type;int"}){@"type;int"}"
Relevant element: Tuple 2: parentid=132
Full ID for 132: @"callable;(40).bothFunDiffTypes((42),(130))(130)". The ID may expand to @"callable;{@"class;ExtensionsKt"}.bothFunDiffTypes({@"class;SomeClass"},{@"type;int"}){@"type;int"}"
Relevant element: Tuple 1: sourceid=134
Full ID for 134: @"params;(132);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.bothFunDiffTypes({@"class;SomeClass"},{@"type;int"}){@"type;int"}"};0"
Relevant element: Tuple 2: sourceid=134
Full ID for 134: @"params;(132);0". The ID may expand to @"params;{@"callable;{@"class;ExtensionsKt"}.bothFunDiffTypes({@"class;SomeClass"},{@"type;int"}){@"type;int"}"};0"
[INVALID_KEY] predicate params(@param id, @type typeid, int pos, @callable parentid, @param sourceid): More errors, not displayed. There are at least 7 pairs of tuples not satisfying the key dependency for a relation of size 10480

View File

@@ -3,76 +3,47 @@ parametersWithArgs
| extensions.kt:6:28:6:37 | p1 | 0 | extensions.kt:25:40:25:42 | foo |
| extensions.kt:9:5:9:13 | <this> | 0 | A.java:3:30:3:44 | new SomeClass(...) |
| extensions.kt:9:5:9:13 | <this> | 0 | extensions.kt:22:5:22:15 | new SomeClass(...) |
| extensions.kt:9:23:9:32 | p1 | 0 | A.java:3:30:3:44 | new SomeClass(...) |
| extensions.kt:9:23:9:32 | p1 | 0 | extensions.kt:22:5:22:15 | new SomeClass(...) |
| extensions.kt:9:23:9:32 | p1 | 1 | A.java:3:47:3:48 | "" |
| extensions.kt:9:23:9:32 | p1 | 1 | extensions.kt:22:26:22:28 | foo |
| extensions.kt:10:5:10:16 | <this> | 0 | extensions.kt:26:5:26:18 | new AnotherClass(...) |
| extensions.kt:10:29:10:38 | p1 | 0 | extensions.kt:26:5:26:18 | new AnotherClass(...) |
| extensions.kt:10:29:10:38 | p1 | 1 | extensions.kt:26:32:26:34 | foo |
| extensions.kt:12:5:12:13 | <this> | 0 | extensions.kt:23:5:23:15 | new SomeClass(...) |
| extensions.kt:12:23:12:32 | p1 | 0 | extensions.kt:23:5:23:15 | new SomeClass(...) |
| extensions.kt:12:23:12:32 | p1 | 1 | extensions.kt:23:26:23:28 | foo |
| extensions.kt:13:5:13:16 | <this> | 0 | extensions.kt:27:5:27:18 | new AnotherClass(...) |
| extensions.kt:13:26:13:35 | p1 | 0 | extensions.kt:27:5:27:18 | new AnotherClass(...) |
| extensions.kt:13:26:13:35 | p1 | 1 | extensions.kt:27:29:27:31 | foo |
| extensions.kt:15:5:15:13 | <this> | 0 | extensions.kt:24:5:24:15 | new SomeClass(...) |
| extensions.kt:15:32:15:38 | p1 | 0 | extensions.kt:24:5:24:15 | new SomeClass(...) |
| extensions.kt:15:32:15:38 | p1 | 1 | extensions.kt:24:34:24:34 | 1 |
| extensions.kt:16:5:16:16 | <this> | 0 | extensions.kt:28:5:28:18 | new AnotherClass(...) |
| extensions.kt:16:35:16:44 | p1 | 0 | extensions.kt:28:5:28:18 | new AnotherClass(...) |
| extensions.kt:16:35:16:44 | p1 | 1 | extensions.kt:28:38:28:40 | foo |
| extensions.kt:18:5:18:10 | <this> | 0 | extensions.kt:29:6:29:15 | someString |
| extensions.kt:18:16:18:25 | p1 | 0 | extensions.kt:29:6:29:15 | someString |
| extensions.kt:18:16:18:25 | p1 | 1 | extensions.kt:29:23:29:25 | foo |
| extensions.kt:30:9:30:14 | <this> | 0 | extensions.kt:31:6:31:15 | someString |
| extensions.kt:30:20:30:29 | p1 | 1 | extensions.kt:31:23:31:30 | bazParam |
extensionParameter
| extensions.kt:9:5:9:13 | <this> |
| extensions.kt:9:23:9:32 | p1 |
| extensions.kt:10:5:10:16 | <this> |
| extensions.kt:10:29:10:38 | p1 |
| extensions.kt:12:5:12:13 | <this> |
| extensions.kt:12:23:12:32 | p1 |
| extensions.kt:13:5:13:16 | <this> |
| extensions.kt:13:26:13:35 | p1 |
| extensions.kt:15:5:15:13 | <this> |
| extensions.kt:15:32:15:38 | p1 |
| extensions.kt:16:5:16:16 | <this> |
| extensions.kt:16:35:16:44 | p1 |
| extensions.kt:18:5:18:10 | <this> |
| extensions.kt:18:16:18:25 | p1 |
| extensions.kt:30:9:30:14 | <this> |
#select
| extensions.kt:3:5:3:38 | someClassMethod | extensions.kt:3:25:3:34 | p1 | 0 |
| extensions.kt:6:5:6:41 | anotherClassMethod | extensions.kt:6:28:6:37 | p1 | 0 |
| extensions.kt:9:1:9:36 | someFun | extensions.kt:9:5:9:13 | <this> | 0 |
| extensions.kt:9:1:9:36 | someFun | extensions.kt:9:23:9:32 | p1 | 0 |
| extensions.kt:9:1:9:36 | someFun | extensions.kt:9:23:9:32 | p1 | 1 |
| extensions.kt:9:1:9:36 | someFun | file://:0:0:0:0 | p1 | 1 |
| extensions.kt:10:1:10:42 | anotherFun | extensions.kt:10:5:10:16 | <this> | 0 |
| extensions.kt:10:1:10:42 | anotherFun | extensions.kt:10:29:10:38 | p1 | 0 |
| extensions.kt:10:1:10:42 | anotherFun | extensions.kt:10:29:10:38 | p1 | 1 |
| extensions.kt:10:1:10:42 | anotherFun | file://:0:0:0:0 | p1 | 1 |
| extensions.kt:12:1:12:36 | bothFun | extensions.kt:12:5:12:13 | <this> | 0 |
| extensions.kt:12:1:12:36 | bothFun | extensions.kt:12:23:12:32 | p1 | 0 |
| extensions.kt:12:1:12:36 | bothFun | extensions.kt:12:23:12:32 | p1 | 1 |
| extensions.kt:12:1:12:36 | bothFun | file://:0:0:0:0 | p1 | 1 |
| extensions.kt:13:1:13:39 | bothFun | extensions.kt:13:5:13:16 | <this> | 0 |
| extensions.kt:13:1:13:39 | bothFun | extensions.kt:13:26:13:35 | p1 | 0 |
| extensions.kt:13:1:13:39 | bothFun | extensions.kt:13:26:13:35 | p1 | 1 |
| extensions.kt:13:1:13:39 | bothFun | file://:0:0:0:0 | p1 | 1 |
| extensions.kt:15:1:15:57 | bothFunDiffTypes | extensions.kt:15:5:15:13 | <this> | 0 |
| extensions.kt:15:1:15:57 | bothFunDiffTypes | extensions.kt:15:32:15:38 | p1 | 0 |
| extensions.kt:15:1:15:57 | bothFunDiffTypes | extensions.kt:15:32:15:38 | p1 | 1 |
| extensions.kt:15:1:15:57 | bothFunDiffTypes | file://:0:0:0:0 | p1 | 1 |
| extensions.kt:16:1:16:70 | bothFunDiffTypes | extensions.kt:16:5:16:16 | <this> | 0 |
| extensions.kt:16:1:16:70 | bothFunDiffTypes | extensions.kt:16:35:16:44 | p1 | 0 |
| extensions.kt:16:1:16:70 | bothFunDiffTypes | extensions.kt:16:35:16:44 | p1 | 1 |
| extensions.kt:16:1:16:70 | bothFunDiffTypes | file://:0:0:0:0 | p1 | 1 |
| extensions.kt:18:1:18:51 | bar | extensions.kt:18:5:18:10 | <this> | 0 |
| extensions.kt:18:1:18:51 | bar | extensions.kt:18:16:18:25 | p1 | 0 |
| extensions.kt:18:1:18:51 | bar | extensions.kt:18:16:18:25 | p1 | 1 |
| extensions.kt:18:1:18:51 | bar | file://:0:0:0:0 | p1 | 1 |
| extensions.kt:30:5:30:55 | baz | extensions.kt:30:9:30:14 | <this> | 0 |
| extensions.kt:30:5:30:55 | baz | extensions.kt:30:20:30:29 | p1 | 1 |