Skip to content

Commit 7e79e69

Browse files
kotlin-extractor: converge backing-field locations across language versions
Anchor a property backing field's location on its property declaration (the `val`/`var` keyword to the end of the declaration) rather than the raw IR offset. The raw `IrField` offset is inconsistent between frontends: under `-language-version 1.9` it includes leading modifiers in the span start, while under 2.0 it starts at the `val`/`var` keyword. Example: `private val privateProp: Int = 0` before (lang 1.9): properties.kt:35:5:35:32 | int privateProp; (col 5 = `private`) after (lang 1.9): properties.kt:35:13:35:32 | int privateProp; (col 13 = `val`) lang 2.0 (unchanged): properties.kt:35:13:35:32 | int privateProp; The property entity already uses this PSI-based anchor (getPsiBasedLocation), so the field now matches its own property location, which is what the 2.0 frontend already emits. Delegated properties are excluded via `isDelegated`: their field is the `$delegate` storage, whose location is the delegate expression rather than the property declaration, and is converged separately. This is a no-op for `-language-version 2.0` (only test-kotlin1 expected files change); the two suites' backing-field and field-type-access locations now agree. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 327eedc commit 7e79e69

10 files changed

Lines changed: 61 additions & 49 deletions

File tree

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2594,12 +2594,24 @@ open class KotlinFileExtractor(
25942594
if (isAnnotationClassField(f)) kClassToJavaClass(f.type) else f.type
25952595
val id = useField(f)
25962596
extractAnnotations(f, id, extractAnnotationEnumTypeAccesses)
2597+
// A plain backing field's location should match its property's location
2598+
// (the `val`/`var` keyword to the end of the declaration), rather than the
2599+
// raw IR offset, which includes leading modifiers under -language-version
2600+
// 1.9 but not 2.0. Anchoring on the property keeps the two consistent.
2601+
// Delegated properties are excluded: their field is the `$delegate` storage,
2602+
// whose location is the delegate expression, not the property declaration.
2603+
val locId =
2604+
f.correspondingPropertySymbol
2605+
?.owner
2606+
?.takeUnless { it.isDelegated }
2607+
?.let { getPsiBasedLocation(it) }
2608+
?: tw.getLocation(f)
25972609
return extractField(
25982610
id,
25992611
"${f.name.asString()}$fNameSuffix",
26002612
extractType,
26012613
parentId,
2602-
tw.getLocation(f),
2614+
locId,
26032615
f.visibility,
26042616
f,
26052617
isExternalDeclaration(f),

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,7 @@ def.kt:
4444
# 50| 1: [LocalVariableDeclStmt] var ...;
4545
# 50| 1: [LocalVariableDeclExpr] x
4646
# 50| 0: [IntegerLiteral] 10
47-
# 53| 3: [FieldDeclaration] int p;
48-
#-----| -2: (Annotations)
49-
# 56| 1: [Annotation] Annot0k
50-
# 0| 1: [IntegerLiteral] 0
51-
# 53| -1: [TypeAccess] int
52-
# 57| 0: [IntegerLiteral] 5
53-
# 57| 4: [Method] getP
47+
# 57| 3: [Method] getP
5448
#-----| 1: (Annotations)
5549
# 54| 1: [Annotation] Annot0k
5650
# 0| 1: [IntegerLiteral] 0
@@ -59,6 +53,12 @@ def.kt:
5953
# 57| 0: [ReturnStmt] return ...
6054
# 57| 0: [VarAccess] DefKt.p
6155
# 57| -1: [TypeAccess] DefKt
56+
# 57| 4: [FieldDeclaration] int p;
57+
#-----| -2: (Annotations)
58+
# 56| 1: [Annotation] Annot0k
59+
# 0| 1: [IntegerLiteral] 0
60+
# 57| -1: [TypeAccess] int
61+
# 57| 0: [IntegerLiteral] 5
6262
# 57| 5: [Method] setP
6363
#-----| 1: (Annotations)
6464
# 55| 1: [Annotation] Annot0k

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ annotations
3434
| def.kt:46:21:46:28 | Annot0k | def.kt:46:21:46:39 | a | def.kt:5:1:21:60 | Annot0k |
3535
| def.kt:54:1:54:12 | Annot0k | def.kt:57:1:57:5 | getP | def.kt:5:1:21:60 | Annot0k |
3636
| def.kt:55:1:55:12 | Annot0k | def.kt:57:1:57:5 | setP | def.kt:5:1:21:60 | Annot0k |
37-
| def.kt:56:1:56:14 | Annot0k | def.kt:53:1:57:23 | p | def.kt:5:1:21:60 | Annot0k |
37+
| def.kt:56:1:56:14 | Annot0k | def.kt:57:1:57:23 | p | def.kt:5:1:21:60 | Annot0k |
3838
| def.kt:59:5:59:21 | Annot0k | def.kt:59:5:59:28 | <this> | def.kt:5:1:21:60 | Annot0k |
3939
| use.java:10:5:10:21 | Annot0j | use.java:14:18:14:18 | Z | Annot0j.java:1:19:1:25 | Annot0j |
4040
| use.java:11:5:11:90 | Annot1j | use.java:14:18:14:18 | Z | Annot1j.java:1:19:1:25 | Annot1j |

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -658,7 +658,14 @@ generic_anonymous.kt:
658658
# 1| 0: [ReturnStmt] return ...
659659
# 1| 0: [VarAccess] this.t
660660
# 1| -1: [ThisAccess] this
661-
# 3| 4: [FieldDeclaration] new Object(...) { ... } x;
661+
# 3| 4: [Method] getX$private
662+
# 3| 3: [TypeAccess] new Object(...) { ... }
663+
# 3| 0: [TypeAccess] T
664+
# 3| 5: [BlockStmt] { ... }
665+
# 3| 0: [ReturnStmt] return ...
666+
# 3| 0: [VarAccess] this.x
667+
# 3| -1: [ThisAccess] this
668+
# 3| 5: [FieldDeclaration] new Object(...) { ... } x;
662669
# 3| -1: [TypeAccess] new Object(...) { ... }
663670
# 3| 0: [TypeAccess] T
664671
# 3| 0: [StmtExpr] <Stmt>
@@ -686,13 +693,6 @@ generic_anonymous.kt:
686693
# 3| 1: [ExprStmt] <Expr>;
687694
# 3| 0: [ClassInstanceExpr] new (...)
688695
# 3| -3: [TypeAccess] Object
689-
# 3| 5: [Method] getX$private
690-
# 3| 3: [TypeAccess] new Object(...) { ... }
691-
# 3| 0: [TypeAccess] T
692-
# 3| 5: [BlockStmt] { ... }
693-
# 3| 0: [ReturnStmt] return ...
694-
# 3| 0: [VarAccess] this.x
695-
# 3| -1: [ThisAccess] this
696696
# 7| 6: [Method] get
697697
# 7| 3: [TypeAccess] T
698698
# 7| 5: [BlockStmt] { ... }

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
| generic_anonymous.kt:1:26:1:33 | this | Generic |
88
| generic_anonymous.kt:1:26:1:33 | this.t | T |
99
| generic_anonymous.kt:3:3:5:3 | ...=... | new Object(...) { ... } |
10-
| generic_anonymous.kt:3:3:5:3 | T | T |
11-
| generic_anonymous.kt:3:3:5:3 | new Object(...) { ... } | new Object(...) { ... } |
1210
| generic_anonymous.kt:3:3:5:3 | this | Generic |
1311
| generic_anonymous.kt:3:3:5:3 | x | new Object(...) { ... } |
1412
| generic_anonymous.kt:3:11:3:15 | T | T |
1513
| generic_anonymous.kt:3:11:3:15 | new Object(...) { ... } | new Object(...) { ... } |
14+
| generic_anonymous.kt:3:11:5:3 | T | T |
15+
| generic_anonymous.kt:3:11:5:3 | new Object(...) { ... } | new Object(...) { ... } |
1616
| generic_anonymous.kt:3:11:5:3 | this.x | new Object(...) { ... } |
1717
| generic_anonymous.kt:3:19:5:3 | <Stmt> | new Object(...) { ... } |
1818
| generic_anonymous.kt:3:19:5:3 | Object | Object |

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ comments
1818
| comments.kt:95:1:95:163 | // Diagnostic Matches: % Couldn't get owner of KDoc. The comment is extracted without an owner. ...while extracting a file (comments.kt) at %comments.kt:1:1:96:0% | // Diagnostic Matches: % Couldn't get owner of KDoc. The comment is extracted without an owner. ...while extracting a file (comments.kt) at %comments.kt:1:1:96:0% |
1919
commentOwners
2020
| comments.kt:4:1:11:3 | /**\n * A group of *members*.\n *\n * This class has no useful logic; it's just a documentation example.\n *\n * @property name the name of this group.\n * @constructor Creates an empty group.\n */ | comments.kt:12:1:31:1 | Group |
21-
| comments.kt:14:5:16:7 | /**\n * Members of this group.\n */ | comments.kt:17:5:17:46 | members |
2221
| comments.kt:14:5:16:7 | /**\n * Members of this group.\n */ | comments.kt:17:13:17:23 | getMembers$private |
2322
| comments.kt:14:5:16:7 | /**\n * Members of this group.\n */ | comments.kt:17:13:17:46 | members |
23+
| comments.kt:14:5:16:7 | /**\n * Members of this group.\n */ | comments.kt:17:13:17:46 | members |
2424
| comments.kt:19:5:22:7 | /**\n * Adds a [member] to this group.\n * @return the new size of the group.\n */ | comments.kt:23:5:26:5 | add |
2525
| comments.kt:35:5:35:34 | /** Medium is in the middle */ | comments.kt:36:5:36:14 | Medium |
2626
| comments.kt:37:5:37:23 | /** This is high */ | comments.kt:38:5:38:11 | High |

java/ql/test-kotlin1/library-tests/generic-selective-extraction/test.expected

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
| Test.kt:1:1:8:1 | TestKt | Test.kt:3:3:3:11 | getField |
1616
| Test.kt:1:1:8:1 | TestKt | Test.kt:3:3:3:11 | setField |
1717
| Test.kt:1:1:8:1 | TestKt | Test.kt:3:3:3:22 | field |
18-
| Test.kt:1:1:8:1 | TestKt | Test.kt:4:3:5:25 | rawField |
1918
| Test.kt:1:1:8:1 | TestKt | Test.kt:5:3:5:14 | getRawField |
2019
| Test.kt:1:1:8:1 | TestKt | Test.kt:5:3:5:14 | setRawField |
20+
| Test.kt:1:1:8:1 | TestKt | Test.kt:5:3:5:25 | rawField |
2121
| Test.kt:1:1:8:1 | TestKt | Test.kt:6:3:6:22 | method |
2222
| Test.kt:10:1:10:20 | FieldUsedKt | Test.kt:10:1:10:20 | FieldUsedKt |
2323
| Test.kt:11:1:11:23 | RawFieldUsedKt | Test.kt:11:1:11:23 | RawFieldUsedKt |

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
| modifiers.kt:1:1:29:1 | X | Class | public |
22
| modifiers.kt:1:6:29:1 | X | Constructor | public |
3-
| modifiers.kt:2:5:2:21 | a | Field | final |
4-
| modifiers.kt:2:5:2:21 | a | Field | private |
53
| modifiers.kt:2:13:2:17 | getA$private | Method | final |
64
| modifiers.kt:2:13:2:17 | getA$private | Method | private |
5+
| modifiers.kt:2:13:2:21 | a | Field | final |
6+
| modifiers.kt:2:13:2:21 | a | Field | private |
77
| modifiers.kt:2:13:2:21 | a | Property | private |
8-
| modifiers.kt:3:5:3:23 | b | Field | final |
9-
| modifiers.kt:3:5:3:23 | b | Field | private |
108
| modifiers.kt:3:15:3:19 | getB | Method | final |
119
| modifiers.kt:3:15:3:19 | getB | Method | protected |
10+
| modifiers.kt:3:15:3:23 | b | Field | final |
11+
| modifiers.kt:3:15:3:23 | b | Field | private |
1212
| modifiers.kt:3:15:3:23 | b | Property | protected |
13-
| modifiers.kt:4:5:4:22 | c | Field | final |
14-
| modifiers.kt:4:5:4:22 | c | Field | private |
1513
| modifiers.kt:4:14:4:18 | getC$main | Method | final |
1614
| modifiers.kt:4:14:4:18 | getC$main | Method | internal |
15+
| modifiers.kt:4:14:4:22 | c | Field | final |
16+
| modifiers.kt:4:14:4:22 | c | Field | private |
1717
| modifiers.kt:4:14:4:22 | c | Property | internal |
1818
| modifiers.kt:5:5:5:9 | getD | Method | final |
1919
| modifiers.kt:5:5:5:9 | getD | Method | public |
@@ -23,10 +23,10 @@
2323
| modifiers.kt:7:5:9:5 | Nested | Class | final |
2424
| modifiers.kt:7:5:9:5 | Nested | Class | protected |
2525
| modifiers.kt:7:15:9:5 | Nested | Constructor | public |
26-
| modifiers.kt:8:9:8:29 | e | Field | final |
27-
| modifiers.kt:8:9:8:29 | e | Field | private |
2826
| modifiers.kt:8:16:8:20 | getE | Method | final |
2927
| modifiers.kt:8:16:8:20 | getE | Method | public |
28+
| modifiers.kt:8:16:8:29 | e | Field | final |
29+
| modifiers.kt:8:16:8:29 | e | Field | private |
3030
| modifiers.kt:8:16:8:29 | e | Property | public |
3131
| modifiers.kt:11:5:15:5 | fn1 | Method | final |
3232
| modifiers.kt:11:5:15:5 | fn1 | Method | public |
@@ -75,11 +75,11 @@
7575
| modifiers.kt:35:1:41:1 | LateInit | Class | final |
7676
| modifiers.kt:35:1:41:1 | LateInit | Class | public |
7777
| modifiers.kt:35:8:41:1 | LateInit | Constructor | public |
78-
| modifiers.kt:36:5:36:40 | test0 | Field | private |
7978
| modifiers.kt:36:22:36:30 | getTest0$private | Method | final |
8079
| modifiers.kt:36:22:36:30 | getTest0$private | Method | private |
8180
| modifiers.kt:36:22:36:30 | setTest0$private | Method | final |
8281
| modifiers.kt:36:22:36:30 | setTest0$private | Method | private |
82+
| modifiers.kt:36:22:36:40 | test0 | Field | private |
8383
| modifiers.kt:36:22:36:40 | test0 | Property | lateinit |
8484
| modifiers.kt:36:22:36:40 | test0 | Property | private |
8585
| modifiers.kt:38:5:40:5 | fn | Method | final |

java/ql/test-kotlin1/library-tests/private-anonymous-types/test.expected

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@
1919
| test.kt:7:1:22:1 | A | test.kt:7:16:7:21 | A |
2020
| test.kt:7:1:22:1 | A | test.kt:9:3:9:14 | getAnonType |
2121
| test.kt:7:1:22:1 | A | test.kt:9:3:11:3 | anonType |
22-
| test.kt:7:1:22:1 | A | test.kt:13:3:15:3 | privateAnonType |
2322
| test.kt:7:1:22:1 | A | test.kt:13:11:13:29 | getPrivateAnonType$private |
23+
| test.kt:7:1:22:1 | A | test.kt:13:11:15:3 | privateAnonType |
2424
| test.kt:7:1:22:1 | A | test.kt:17:3:20:3 | privateUser |
2525
| test.kt:9:18:11:3 | new If<T>(...) { ... } | test.kt:9:18:11:3 | |
26-
| test.kt:9:18:11:3 | new If<T>(...) { ... } | test.kt:10:5:10:22 | x |
2726
| test.kt:9:18:11:3 | new If<T>(...) { ... } | test.kt:10:14:10:18 | getX |
27+
| test.kt:9:18:11:3 | new If<T>(...) { ... } | test.kt:10:14:10:22 | x |
2828
| test.kt:13:33:15:3 | new If<T>(...) { ... } | test.kt:13:33:15:3 | |
29-
| test.kt:13:33:15:3 | new If<T>(...) { ... } | test.kt:14:5:14:22 | x |
3029
| test.kt:13:33:15:3 | new If<T>(...) { ... } | test.kt:14:14:14:18 | getX |
30+
| test.kt:13:33:15:3 | new If<T>(...) { ... } | test.kt:14:14:14:22 | x |
3131
enclosingTypes
3232
| file:///!unknown-binary-location/A$<no name provided>.class:0:0:0:0 | new If<T>(...) { ... }<> | file:///!unknown-binary-location/A.class:0:0:0:0 | A<CharSequence> |
3333
| file:///!unknown-binary-location/A$<no name provided>.class:0:0:0:0 | new If<T>(...) { ... }<> | file:///!unknown-binary-location/A.class:0:0:0:0 | A<String> |

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

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,17 @@
1717
| properties.kt:28:5:29:22 | overrideGetter | properties.kt:29:13:29:22 | getOverrideGetter | properties.kt:28:5:28:22 | setOverrideGetter | properties.kt:28:5:29:22 | overrideGetter | public |
1818
| properties.kt:30:5:31:29 | overrideGetterUseField | properties.kt:31:13:31:29 | getOverrideGetterUseField | properties.kt:30:5:30:30 | setOverrideGetterUseField | properties.kt:30:5:31:29 | overrideGetterUseField | public |
1919
| properties.kt:32:5:33:29 | useField | properties.kt:33:13:33:29 | getUseField | file://:0:0:0:0 | <none> | properties.kt:32:5:33:29 | useField | public |
20-
| properties.kt:34:14:34:36 | lateInitVar | properties.kt:34:14:34:28 | getLateInitVar | properties.kt:34:14:34:28 | setLateInitVar | properties.kt:34:5:34:36 | lateInitVar | lateinit, public |
21-
| properties.kt:35:13:35:32 | privateProp | properties.kt:35:13:35:27 | getPrivateProp$private | file://:0:0:0:0 | <none> | properties.kt:35:5:35:32 | privateProp | private |
22-
| properties.kt:36:15:36:36 | protectedProp | properties.kt:36:15:36:31 | getProtectedProp | file://:0:0:0:0 | <none> | properties.kt:36:5:36:36 | protectedProp | protected |
23-
| properties.kt:37:12:37:30 | publicProp | properties.kt:37:12:37:25 | getPublicProp | file://:0:0:0:0 | <none> | properties.kt:37:5:37:30 | publicProp | public |
24-
| properties.kt:38:14:38:34 | internalProp | properties.kt:38:14:38:29 | getInternalProp$main | file://:0:0:0:0 | <none> | properties.kt:38:5:38:34 | internalProp | internal |
25-
| properties.kt:67:7:67:23 | constVal | properties.kt:67:7:67:18 | getConstVal | file://:0:0:0:0 | <none> | properties.kt:67:1:67:23 | constVal | public |
20+
| properties.kt:34:14:34:36 | lateInitVar | properties.kt:34:14:34:28 | getLateInitVar | properties.kt:34:14:34:28 | setLateInitVar | properties.kt:34:14:34:36 | lateInitVar | lateinit, public |
21+
| properties.kt:35:13:35:32 | privateProp | properties.kt:35:13:35:27 | getPrivateProp$private | file://:0:0:0:0 | <none> | properties.kt:35:13:35:32 | privateProp | private |
22+
| properties.kt:36:15:36:36 | protectedProp | properties.kt:36:15:36:31 | getProtectedProp | file://:0:0:0:0 | <none> | properties.kt:36:15:36:36 | protectedProp | protected |
23+
| properties.kt:37:12:37:30 | publicProp | properties.kt:37:12:37:25 | getPublicProp | file://:0:0:0:0 | <none> | properties.kt:37:12:37:30 | publicProp | public |
24+
| properties.kt:38:14:38:34 | internalProp | properties.kt:38:14:38:29 | getInternalProp$main | file://:0:0:0:0 | <none> | properties.kt:38:14:38:34 | internalProp | internal |
25+
| properties.kt:67:7:67:23 | constVal | properties.kt:67:7:67:18 | getConstVal | file://:0:0:0:0 | <none> | properties.kt:67:7:67:23 | constVal | public |
2626
| properties.kt:70:5:70:16 | prop | properties.kt:70:5:70:12 | getProp | file://:0:0:0:0 | <none> | properties.kt:70:5:70:16 | prop | public |
2727
| properties.kt:78:1:79:13 | x | properties.kt:79:5:79:13 | getX | file://:0:0:0:0 | <none> | file://:0:0:0:0 | <none> | public |
2828
| properties.kt:80:1:81:13 | x | properties.kt:81:5:81:13 | getX | file://:0:0:0:0 | <none> | file://:0:0:0:0 | <none> | public |
29-
| properties.kt:84:13:84:29 | data | properties.kt:84:13:84:20 | getData$private | properties.kt:84:13:84:20 | setData$private | properties.kt:84:5:84:29 | data | private |
30-
| properties.kt:92:13:93:18 | data | properties.kt:93:9:93:18 | getData | properties.kt:92:13:92:20 | setData$private | properties.kt:92:5:93:18 | data | private |
29+
| properties.kt:84:13:84:29 | data | properties.kt:84:13:84:20 | getData$private | properties.kt:84:13:84:20 | setData$private | properties.kt:84:13:84:29 | data | private |
30+
| properties.kt:92:13:93:18 | data | properties.kt:93:9:93:18 | getData | properties.kt:92:13:92:20 | setData$private | properties.kt:92:13:93:18 | data | private |
3131
fieldDeclarations
3232
| properties.kt:2:27:2:50 | int constructorProp; | properties.kt:2:27:2:50 | constructorProp | 0 |
3333
| properties.kt:2:53:2:83 | int mutableConstructorProp; | properties.kt:2:53:2:83 | mutableConstructorProp | 0 |
@@ -43,12 +43,12 @@ fieldDeclarations
4343
| properties.kt:28:5:29:22 | int overrideGetter; | properties.kt:28:5:29:22 | overrideGetter | 0 |
4444
| properties.kt:30:5:31:29 | int overrideGetterUseField; | properties.kt:30:5:31:29 | overrideGetterUseField | 0 |
4545
| properties.kt:32:5:33:29 | int useField; | properties.kt:32:5:33:29 | useField | 0 |
46-
| properties.kt:34:5:34:36 | String lateInitVar; | properties.kt:34:5:34:36 | lateInitVar | 0 |
47-
| properties.kt:35:5:35:32 | int privateProp; | properties.kt:35:5:35:32 | privateProp | 0 |
48-
| properties.kt:36:5:36:36 | int protectedProp; | properties.kt:36:5:36:36 | protectedProp | 0 |
49-
| properties.kt:37:5:37:30 | int publicProp; | properties.kt:37:5:37:30 | publicProp | 0 |
50-
| properties.kt:38:5:38:34 | int internalProp; | properties.kt:38:5:38:34 | internalProp | 0 |
51-
| properties.kt:67:1:67:23 | int constVal; | properties.kt:67:1:67:23 | constVal | 0 |
46+
| properties.kt:34:14:34:36 | String lateInitVar; | properties.kt:34:14:34:36 | lateInitVar | 0 |
47+
| properties.kt:35:13:35:32 | int privateProp; | properties.kt:35:13:35:32 | privateProp | 0 |
48+
| properties.kt:36:15:36:36 | int protectedProp; | properties.kt:36:15:36:36 | protectedProp | 0 |
49+
| properties.kt:37:12:37:30 | int publicProp; | properties.kt:37:12:37:30 | publicProp | 0 |
50+
| properties.kt:38:14:38:34 | int internalProp; | properties.kt:38:14:38:34 | internalProp | 0 |
51+
| properties.kt:67:7:67:23 | int constVal; | properties.kt:67:7:67:23 | constVal | 0 |
5252
| properties.kt:70:5:70:16 | int prop; | properties.kt:70:5:70:16 | prop | 0 |
53-
| properties.kt:84:5:84:29 | int data; | properties.kt:84:5:84:29 | data | 0 |
54-
| properties.kt:92:5:93:18 | int data; | properties.kt:92:5:93:18 | data | 0 |
53+
| properties.kt:84:13:84:29 | int data; | properties.kt:84:13:84:29 | data | 0 |
54+
| properties.kt:92:13:93:18 | int data; | properties.kt:92:13:93:18 | data | 0 |

0 commit comments

Comments
 (0)