Skip to content

Commit dc81b51

Browse files
Kotlin: converge synthetic value-parameter locations onto their owning declaration
Two compiler-synthesised value parameters that carry no source token of their own were located differently by the K1 and K2 frontends: - the `<set-?>` parameter of a delegated property's synthesised setter: K1 anchored it at the delegate expression (`delegates.kt:8:32:11:5`) while K2 spans the whole property declaration (`8:5:11:5`); and - the `value` parameter of the synthetic enum `valueOf` member: K1 has no offsets and emitted the null `0:0:0:0` location while K2 attributes it to the enum-class declaration (`1:1:4:1`). In both cases the parameter is synthesised, so the K2 span (the owning declaration) is a real, navigable location and strictly more useful than either the delegate-expression fragment or K1's null `0:0`. We therefore converge K1 onto the K2-native span, consistent with how the other synthesised members (accessors, implicit constructors, super calls, `$delegate` fields) are already being anchored on their owning declaration. `getPsiBasedSyntheticParameterLocation` recovers the span from the PSI under K1 and returns null under K2 (where `getKtFile` is unavailable and the raw offsets already carry the owning-declaration span) and for every ordinary, source-backed parameter, so the canonical K2 output is untouched. Relearn (both suites, CPUS=5): all 3333 tests pass. Only test-kotlin1 changes; methods/parameters is now byte-identical across suites (6 -> 0 divergent rows), and the same setter/valueOf parameter rows converge in the PrintAst/exprs projections that reference them (annotation_classes/PrintAst 88->84, classes/PrintAst 18->10, exprs/PrintAst 75->67, exprs/exprs 189->171, exprs_typeaccess/PrintAst 9->5, methods/exprs 36->30). Every touched file's divergence strictly decreases; no new divergence is introduced. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 7b1da21 commit dc81b51

8 files changed

Lines changed: 77 additions & 27 deletions

File tree

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

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1383,6 +1383,7 @@ open class KotlinFileExtractor(
13831383
val location =
13841384
locOverride
13851385
?: getGeneratedDataClassCopyParamLocation(vp, idx)
1386+
?: getPsiBasedSyntheticParameterLocation(vp)
13861387
?: getPsiBasedValueParameterLocation(vp)
13871388
?: getLocation(vp, classTypeArgsIncludingOuterClasses)
13881389
val maybeAlteredType =
@@ -3166,6 +3167,55 @@ open class KotlinFileExtractor(
31663167
return tw.getLocation(keyword.startOffset, vp.endOffset)
31673168
}
31683169

3170+
/**
3171+
* Returns the PSI-based location for a *synthesised* value parameter that has no source
3172+
* token of its own, matching the span the K2 frontend emits natively, or null to leave the
3173+
* raw IR offset in place.
3174+
*
3175+
* Two synthetic members carry such parameters:
3176+
* - the compiler-generated setter of a *delegated* property (its `<set-?>` parameter): the
3177+
* K1 frontend anchors it at the delegate expression (`8:32:11:5`) while K2 spans the whole
3178+
* property declaration (`8:5:11:5`); and
3179+
* - the enum `valueOf` special member (its `value` parameter): the K1 frontend has no offsets
3180+
* at all and emits the null `0:0:0:0` location while K2 attributes it to the enum-class
3181+
* declaration (`1:1:4:1`).
3182+
*
3183+
* In both cases the parameter is compiler-synthesised, so the K2 span (the owning declaration)
3184+
* is a real, navigable location and strictly more useful than either the delegate-expression
3185+
* fragment or the null `0:0` K1 records. As with the other convergence helpers we recover that
3186+
* span from the PSI under K1; the method returns null under K2 (where [getKtFile] is
3187+
* unavailable and the raw offsets already carry the owning-declaration span) and for every
3188+
* ordinary, source-backed parameter.
3189+
*/
3190+
private fun getPsiBasedSyntheticParameterLocation(vp: IrValueParameter): Label<DbLocation>? {
3191+
val file = currentIrFile ?: return null
3192+
val ktFile = getPsi2Ir()?.getKtFile(file) ?: return null
3193+
val fn = vp.parent as? IrSimpleFunction ?: return null
3194+
3195+
val property = fn.correspondingPropertySymbol?.owner
3196+
if (property != null && property.isDelegated && property.setter?.symbol == fn.symbol) {
3197+
val ktProperty = getEnclosingKtProperty(property) ?: return null
3198+
return tw.getLocation(ktProperty.startOffset, ktProperty.endOffset)
3199+
}
3200+
3201+
if (
3202+
fn.origin == IrDeclarationOrigin.ENUM_CLASS_SPECIAL_MEMBER &&
3203+
fn.name.asString() == "valueOf"
3204+
) {
3205+
val enumClass = fn.parentClassOrNull ?: return null
3206+
if (enumClass.startOffset < 0) return null
3207+
val ktClass = ktFile.findElementAt(enumClass.startOffset)
3208+
?.let { leaf ->
3209+
generateSequence(leaf) { it.parent }
3210+
.filterIsInstance<KtClassOrObject>()
3211+
.firstOrNull()
3212+
}
3213+
?: return null
3214+
return tw.getLocation(ktClass.startOffset, ktClass.endOffset)
3215+
}
3216+
return null
3217+
}
3218+
31693219
/**
31703220
* Returns the PSI-based location for a synthesised (`DEFAULT_PROPERTY_ACCESSOR`)
31713221
* getter or setter, matching the span the K2 frontend emits natively.

java/ql/test-kotlin1/library-tests/annotation_classes/PrintAst.expected

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,8 @@ def.kt:
175175
# 0| 3: [Method] valueOf
176176
# 0| 3: [TypeAccess] Y
177177
#-----| 4: (Parameters)
178-
# 0| 0: [Parameter] value
179-
# 0| 0: [TypeAccess] String
178+
# 34| 0: [Parameter] value
179+
# 34| 0: [TypeAccess] String
180180
# 0| 4: [Method] values
181181
# 0| 3: [TypeAccess] Y[]
182182
# 0| 0: [TypeAccess] Y

java/ql/test-kotlin1/library-tests/classes/PrintAst.expected

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,8 @@ classes.kt:
166166
# 0| 3: [Method] valueOf
167167
# 0| 3: [TypeAccess] Direction
168168
#-----| 4: (Parameters)
169-
# 0| 0: [Parameter] value
170-
# 0| 0: [TypeAccess] String
169+
# 49| 0: [Parameter] value
170+
# 49| 0: [TypeAccess] String
171171
# 0| 4: [Method] values
172172
# 0| 3: [TypeAccess] Direction[]
173173
# 0| 0: [TypeAccess] Direction
@@ -203,8 +203,8 @@ classes.kt:
203203
# 0| 3: [Method] valueOf
204204
# 0| 3: [TypeAccess] Color
205205
#-----| 4: (Parameters)
206-
# 0| 0: [Parameter] value
207-
# 0| 0: [TypeAccess] String
206+
# 53| 0: [Parameter] value
207+
# 53| 0: [TypeAccess] String
208208
# 0| 4: [Method] values
209209
# 0| 3: [TypeAccess] Color[]
210210
# 0| 0: [TypeAccess] Color

java/ql/test-kotlin1/library-tests/exprs/PrintAst.expected

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3350,8 +3350,8 @@ exprs.kt:
33503350
# 0| 3: [Method] valueOf
33513351
# 0| 3: [TypeAccess] Direction
33523352
#-----| 4: (Parameters)
3353-
# 0| 0: [Parameter] value
3354-
# 0| 0: [TypeAccess] String
3353+
# 174| 0: [Parameter] value
3354+
# 174| 0: [TypeAccess] String
33553355
# 0| 4: [Method] values
33563356
# 0| 3: [TypeAccess] Direction[]
33573357
# 0| 0: [TypeAccess] Direction
@@ -3387,8 +3387,8 @@ exprs.kt:
33873387
# 0| 3: [Method] valueOf
33883388
# 0| 3: [TypeAccess] Color
33893389
#-----| 4: (Parameters)
3390-
# 0| 0: [Parameter] value
3391-
# 0| 0: [TypeAccess] String
3390+
# 178| 0: [Parameter] value
3391+
# 178| 0: [TypeAccess] String
33923392
# 0| 4: [Method] values
33933393
# 0| 3: [TypeAccess] Color[]
33943394
# 0| 0: [TypeAccess] Color

java/ql/test-kotlin1/library-tests/exprs/exprs.expected

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@
226226
| delegatedProperties.kt:39:34:39:51 | varResource2$delegate | delegatedProperties.kt:39:9:39:51 | <get-varResource2> | VarAccess |
227227
| delegatedProperties.kt:42:5:42:47 | Unit | file://:0:0:0:0 | <none> | TypeAccess |
228228
| delegatedProperties.kt:42:5:42:47 | int | file://:0:0:0:0 | <none> | TypeAccess |
229-
| delegatedProperties.kt:42:27:42:47 | int | file://:0:0:0:0 | <none> | TypeAccess |
229+
| delegatedProperties.kt:42:5:42:47 | int | file://:0:0:0:0 | <none> | TypeAccess |
230230
| delegatedProperties.kt:42:30:42:47 | ...::... | delegatedProperties.kt:42:5:42:47 | getVarResource0 | PropertyRefExpr |
231231
| delegatedProperties.kt:42:30:42:47 | ...::... | delegatedProperties.kt:42:5:42:47 | setVarResource0 | PropertyRefExpr |
232232
| delegatedProperties.kt:42:30:42:47 | ...=... | delegatedProperties.kt:17:1:43:1 | Owner | KtInitializerAssignExpr |
@@ -336,7 +336,7 @@
336336
| delegatedProperties.kt:65:87:65:95 | memberInt | delegatedProperties.kt:65:14:65:78 | MyClass | VarAccess |
337337
| delegatedProperties.kt:66:5:66:50 | Unit | file://:0:0:0:0 | <none> | TypeAccess |
338338
| delegatedProperties.kt:66:5:66:50 | int | file://:0:0:0:0 | <none> | TypeAccess |
339-
| delegatedProperties.kt:66:33:66:50 | int | file://:0:0:0:0 | <none> | TypeAccess |
339+
| delegatedProperties.kt:66:5:66:50 | int | file://:0:0:0:0 | <none> | TypeAccess |
340340
| delegatedProperties.kt:66:36:66:39 | MyClass | delegatedProperties.kt:65:14:65:78 | MyClass | TypeAccess |
341341
| delegatedProperties.kt:66:36:66:39 | MyClass.this | delegatedProperties.kt:65:14:65:78 | MyClass | ThisAccess |
342342
| delegatedProperties.kt:66:36:66:50 | ...::... | delegatedProperties.kt:65:14:65:78 | MyClass | PropertyRefExpr |
@@ -399,7 +399,7 @@
399399
| delegatedProperties.kt:66:36:66:50 | this.delegatedToMember1$delegate | delegatedProperties.kt:66:5:66:50 | setDelegatedToMember1 | VarAccess |
400400
| delegatedProperties.kt:67:5:67:53 | Unit | file://:0:0:0:0 | <none> | TypeAccess |
401401
| delegatedProperties.kt:67:5:67:53 | int | file://:0:0:0:0 | <none> | TypeAccess |
402-
| delegatedProperties.kt:67:33:67:53 | int | file://:0:0:0:0 | <none> | TypeAccess |
402+
| delegatedProperties.kt:67:5:67:53 | int | file://:0:0:0:0 | <none> | TypeAccess |
403403
| delegatedProperties.kt:67:36:67:53 | ...::... | delegatedProperties.kt:65:14:65:78 | MyClass | PropertyRefExpr |
404404
| delegatedProperties.kt:67:36:67:53 | ...::... | delegatedProperties.kt:67:5:67:53 | getDelegatedToMember2 | PropertyRefExpr |
405405
| delegatedProperties.kt:67:36:67:53 | ...::... | delegatedProperties.kt:67:5:67:53 | setDelegatedToMember2 | PropertyRefExpr |
@@ -458,7 +458,7 @@
458458
| delegatedProperties.kt:67:36:67:53 | this.delegatedToMember2$delegate | delegatedProperties.kt:67:5:67:53 | setDelegatedToMember2 | VarAccess |
459459
| delegatedProperties.kt:69:5:69:56 | Unit | file://:0:0:0:0 | <none> | TypeAccess |
460460
| delegatedProperties.kt:69:5:69:56 | int | file://:0:0:0:0 | <none> | TypeAccess |
461-
| delegatedProperties.kt:69:36:69:56 | int | file://:0:0:0:0 | <none> | TypeAccess |
461+
| delegatedProperties.kt:69:5:69:56 | int | file://:0:0:0:0 | <none> | TypeAccess |
462462
| delegatedProperties.kt:69:39:69:42 | MyClass | delegatedProperties.kt:65:14:65:78 | MyClass | TypeAccess |
463463
| delegatedProperties.kt:69:39:69:42 | MyClass.this | delegatedProperties.kt:65:14:65:78 | MyClass | ThisAccess |
464464
| delegatedProperties.kt:69:39:69:56 | ...::... | delegatedProperties.kt:65:14:65:78 | MyClass | PropertyRefExpr |
@@ -523,7 +523,7 @@
523523
| delegatedProperties.kt:69:39:69:56 | this.delegatedToExtMember1$delegate | delegatedProperties.kt:69:5:69:56 | setDelegatedToExtMember1 | VarAccess |
524524
| delegatedProperties.kt:70:5:70:59 | Unit | file://:0:0:0:0 | <none> | TypeAccess |
525525
| delegatedProperties.kt:70:5:70:59 | int | file://:0:0:0:0 | <none> | TypeAccess |
526-
| delegatedProperties.kt:70:36:70:59 | int | file://:0:0:0:0 | <none> | TypeAccess |
526+
| delegatedProperties.kt:70:5:70:59 | int | file://:0:0:0:0 | <none> | TypeAccess |
527527
| delegatedProperties.kt:70:39:70:59 | ...::... | delegatedProperties.kt:65:14:65:78 | MyClass | PropertyRefExpr |
528528
| delegatedProperties.kt:70:39:70:59 | ...::... | delegatedProperties.kt:70:5:70:59 | getDelegatedToExtMember2 | PropertyRefExpr |
529529
| delegatedProperties.kt:70:39:70:59 | ...::... | delegatedProperties.kt:70:5:70:59 | setDelegatedToExtMember2 | PropertyRefExpr |
@@ -686,7 +686,7 @@
686686
| delegatedProperties.kt:75:42:75:78 | this.delegatedToAnotherClass1$delegate | delegatedProperties.kt:75:5:75:78 | getDelegatedToAnotherClass1 | VarAccess |
687687
| delegatedProperties.kt:77:5:77:49 | Unit | file://:0:0:0:0 | <none> | TypeAccess |
688688
| delegatedProperties.kt:77:5:77:49 | int | file://:0:0:0:0 | <none> | TypeAccess |
689-
| delegatedProperties.kt:77:34:77:49 | int | file://:0:0:0:0 | <none> | TypeAccess |
689+
| delegatedProperties.kt:77:5:77:49 | int | file://:0:0:0:0 | <none> | TypeAccess |
690690
| delegatedProperties.kt:77:37:77:49 | ...::... | delegatedProperties.kt:65:14:65:78 | MyClass | PropertyRefExpr |
691691
| delegatedProperties.kt:77:37:77:49 | ...::... | delegatedProperties.kt:77:5:77:49 | getDelegatedToTopLevel | PropertyRefExpr |
692692
| delegatedProperties.kt:77:37:77:49 | ...::... | delegatedProperties.kt:77:5:77:49 | setDelegatedToTopLevel | PropertyRefExpr |
@@ -826,7 +826,7 @@
826826
| delegatedProperties.kt:87:1:87:46 | MyClass | file://:0:0:0:0 | <none> | TypeAccess |
827827
| delegatedProperties.kt:87:1:87:46 | Unit | file://:0:0:0:0 | <none> | TypeAccess |
828828
| delegatedProperties.kt:87:1:87:46 | int | file://:0:0:0:0 | <none> | TypeAccess |
829-
| delegatedProperties.kt:87:31:87:46 | int | file://:0:0:0:0 | <none> | TypeAccess |
829+
| delegatedProperties.kt:87:1:87:46 | int | file://:0:0:0:0 | <none> | TypeAccess |
830830
| delegatedProperties.kt:87:34:87:46 | ...::... | delegatedProperties.kt:0:0:0:0 | <clinit> | PropertyRefExpr |
831831
| delegatedProperties.kt:87:34:87:46 | ...::... | delegatedProperties.kt:87:1:87:46 | getExtDelegated | PropertyRefExpr |
832832
| delegatedProperties.kt:87:34:87:46 | ...::... | delegatedProperties.kt:87:1:87:46 | setExtDelegated | PropertyRefExpr |
@@ -893,8 +893,6 @@
893893
| exprs.kt:0:0:0:0 | Direction[] | file://:0:0:0:0 | <none> | TypeAccess |
894894
| exprs.kt:0:0:0:0 | EnumEntries<Color> | file://:0:0:0:0 | <none> | TypeAccess |
895895
| exprs.kt:0:0:0:0 | EnumEntries<Direction> | file://:0:0:0:0 | <none> | TypeAccess |
896-
| exprs.kt:0:0:0:0 | String | file://:0:0:0:0 | <none> | TypeAccess |
897-
| exprs.kt:0:0:0:0 | String | file://:0:0:0:0 | <none> | TypeAccess |
898896
| exprs.kt:4:1:142:1 | int | file://:0:0:0:0 | <none> | TypeAccess |
899897
| exprs.kt:4:20:4:25 | int | file://:0:0:0:0 | <none> | TypeAccess |
900898
| exprs.kt:4:28:4:33 | int | file://:0:0:0:0 | <none> | TypeAccess |
@@ -1477,6 +1475,7 @@
14771475
| exprs.kt:174:1:176:1 | 0 | exprs.kt:174:1:176:1 | Direction | IntegerLiteral |
14781476
| exprs.kt:174:1:176:1 | Direction | exprs.kt:174:1:176:1 | Direction | TypeAccess |
14791477
| exprs.kt:174:1:176:1 | Enum<Direction> | exprs.kt:174:1:176:1 | Direction | TypeAccess |
1478+
| exprs.kt:174:1:176:1 | String | file://:0:0:0:0 | <none> | TypeAccess |
14801479
| exprs.kt:174:1:176:1 | new Enum(...) | exprs.kt:174:1:176:1 | Direction | ClassInstanceExpr |
14811480
| exprs.kt:174:1:176:1 | null | exprs.kt:174:1:176:1 | Direction | NullLiteral |
14821481
| exprs.kt:175:5:175:10 | ...=... | exprs.kt:0:0:0:0 | <clinit> | KtInitializerAssignExpr |
@@ -1506,6 +1505,7 @@
15061505
| exprs.kt:178:1:182:1 | 0 | exprs.kt:178:17:178:30 | Color | IntegerLiteral |
15071506
| exprs.kt:178:1:182:1 | Color | exprs.kt:178:17:178:30 | Color | TypeAccess |
15081507
| exprs.kt:178:1:182:1 | Enum<Color> | exprs.kt:178:17:178:30 | Color | TypeAccess |
1508+
| exprs.kt:178:1:182:1 | String | file://:0:0:0:0 | <none> | TypeAccess |
15091509
| exprs.kt:178:1:182:1 | new Enum(...) | exprs.kt:178:17:178:30 | Color | ClassInstanceExpr |
15101510
| exprs.kt:178:1:182:1 | null | exprs.kt:178:17:178:30 | Color | NullLiteral |
15111511
| exprs.kt:178:18:178:29 | ...=... | exprs.kt:178:17:178:30 | Color | KtInitializerAssignExpr |

java/ql/test-kotlin1/library-tests/exprs_typeaccess/PrintAst.expected

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ A.kt:
8080
# 0| 3: [Method] valueOf
8181
# 0| 3: [TypeAccess] Enu
8282
#-----| 4: (Parameters)
83-
# 0| 0: [Parameter] value
84-
# 0| 0: [TypeAccess] String
83+
# 23| 0: [Parameter] value
84+
# 23| 0: [TypeAccess] String
8585
# 0| 4: [Method] values
8686
# 0| 3: [TypeAccess] Enu[]
8787
# 0| 0: [TypeAccess] Enu

java/ql/test-kotlin1/library-tests/methods/exprs.expected

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,8 @@
161161
| delegates.kt:4:26:6:5 | int | TypeAccess |
162162
| delegates.kt:5:9:5:9 | 5 | IntegerLiteral |
163163
| delegates.kt:8:5:11:5 | String | TypeAccess |
164+
| delegates.kt:8:5:11:5 | String | TypeAccess |
164165
| delegates.kt:8:5:11:5 | Unit | TypeAccess |
165-
| delegates.kt:8:32:11:5 | String | TypeAccess |
166166
| delegates.kt:8:35:8:43 | INSTANCE | VarAccess |
167167
| delegates.kt:8:35:11:5 | ...::... | PropertyRefExpr |
168168
| delegates.kt:8:35:11:5 | ...::... | PropertyRefExpr |
@@ -233,11 +233,10 @@
233233
| enumClass.kt:0:0:0:0 | EnumWithFunctions | TypeAccess |
234234
| enumClass.kt:0:0:0:0 | EnumWithFunctions | TypeAccess |
235235
| enumClass.kt:0:0:0:0 | EnumWithFunctions[] | TypeAccess |
236-
| enumClass.kt:0:0:0:0 | String | TypeAccess |
237-
| enumClass.kt:0:0:0:0 | String | TypeAccess |
238236
| enumClass.kt:1:1:4:1 | 0 | IntegerLiteral |
239237
| enumClass.kt:1:1:4:1 | Enum<EnumClass> | TypeAccess |
240238
| enumClass.kt:1:1:4:1 | EnumClass | TypeAccess |
239+
| enumClass.kt:1:1:4:1 | String | TypeAccess |
241240
| enumClass.kt:1:1:4:1 | new Enum(...) | ClassInstanceExpr |
242241
| enumClass.kt:1:1:4:1 | null | NullLiteral |
243242
| enumClass.kt:1:22:1:31 | ...=... | KtInitializerAssignExpr |
@@ -265,6 +264,7 @@
265264
| enumClass.kt:6:1:16:1 | 0 | IntegerLiteral |
266265
| enumClass.kt:6:1:16:1 | Enum<EnumWithFunctions> | TypeAccess |
267266
| enumClass.kt:6:1:16:1 | EnumWithFunctions | TypeAccess |
267+
| enumClass.kt:6:1:16:1 | String | TypeAccess |
268268
| enumClass.kt:6:1:16:1 | new Enum(...) | ClassInstanceExpr |
269269
| enumClass.kt:6:1:16:1 | null | NullLiteral |
270270
| enumClass.kt:8:3:11:4 | ...=... | KtInitializerAssignExpr |

java/ql/test-kotlin1/library-tests/methods/parameters.expected

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
| dataClass.kt:1:34:1:46 | setY | dataClass.kt:1:34:1:46 | <set-?> | 0 |
1111
| delegates.kt:4:21:6:5 | get | delegates.kt:4:21:6:5 | a0 | 0 |
1212
| delegates.kt:4:21:6:5 | invoke | delegates.kt:4:21:6:5 | a0 | 0 |
13-
| delegates.kt:8:5:11:5 | setObservableProp | delegates.kt:8:32:11:5 | <set-?> | 0 |
13+
| delegates.kt:8:5:11:5 | setObservableProp | delegates.kt:8:5:11:5 | <set-?> | 0 |
1414
| delegates.kt:8:35:11:5 | get | delegates.kt:8:35:11:5 | a0 | 0 |
1515
| delegates.kt:8:35:11:5 | get | delegates.kt:8:35:11:5 | a0 | 0 |
1616
| delegates.kt:8:35:11:5 | invoke | delegates.kt:8:35:11:5 | a0 | 0 |
@@ -22,8 +22,8 @@
2222
| delegates.kt:8:66:11:5 | invoke | delegates.kt:9:9:9:12 | prop | 0 |
2323
| delegates.kt:8:66:11:5 | invoke | delegates.kt:9:15:9:17 | old | 1 |
2424
| delegates.kt:8:66:11:5 | invoke | delegates.kt:9:20:9:22 | new | 2 |
25-
| enumClass.kt:0:0:0:0 | valueOf | enumClass.kt:0:0:0:0 | value | 0 |
26-
| enumClass.kt:0:0:0:0 | valueOf | enumClass.kt:0:0:0:0 | value | 0 |
25+
| enumClass.kt:0:0:0:0 | valueOf | enumClass.kt:1:1:4:1 | value | 0 |
26+
| enumClass.kt:0:0:0:0 | valueOf | enumClass.kt:6:1:16:1 | value | 0 |
2727
| enumClass.kt:9:14:9:30 | f | enumClass.kt:9:20:9:25 | i | 0 |
2828
| enumClass.kt:10:14:10:42 | g | enumClass.kt:10:20:10:25 | i | 0 |
2929
| enumClass.kt:13:12:13:29 | f | enumClass.kt:13:18:13:23 | i | 0 |

0 commit comments

Comments
 (0)