mirror of
https://github.com/github/codeql.git
synced 2026-07-12 23:15:40 +02:00
Kotlin: converge delegated-property accessor synthetic thisRef locations onto K2
For `val x by Delegate()`, the compiler synthesises getter/setter bodies that
forward to the delegate's `getValue`/`setValue`, passing a synthetic receiver
argument (the enclosing `this`, or `null` for top-level/extension delegates).
Under the K1 frontend (test-kotlin1, `-language-version 1.9`) these synthetic
receiver arguments were given a bogus location `1:9:1:12`: their IR offsets
(8..11) are not real source offsets for the argument, and `findPsiElement`
resolves them to whatever sits at file offset 8, which for these tests is the
line-1 `import`. This is meaningless and makes the receivers un-searchable by
location.
The K2 frontend (test-kotlin2, default) already produces the intuitive result:
the synthetic member receiver is located at the DELEGATE EXPRESSION (e.g.
`by ResourceDelegate()` -> `ResourceDelegate()`), and a receiver-less `null`
argument gets the whole-file location `0:0:0:0`. K2 output is the canonical
target for this unification (it is also compiler-version-independent).
This change adds `getDelegatedAccessorSyntheticArgumentLocation`, gated on:
- the enclosing declaration being an IrFunction with origin
DELEGATED_PROPERTY_ACCESSOR (member/top-level accessors only),
- the element being either the accessor's dispatch/extension receiver
`IrGetValue` or a null `CodeQLIrConst`, and
- the element offsets lying outside the enclosing `KtProperty` text range
(so genuine in-source expressions are never rehomed).
It returns the delegate expression's location for the `this`/receiver case and
the whole-file location for the `null` case, mirroring K2. It is wired at the
three sites that extract these synthetic args (extractThisAccess, the
IrGetValue variable/extension-receiver path, and the null case of
extractConstant).
The helper relies on PSI (getPsi2Ir), so it is a no-op under K2: test-kotlin2
output is unchanged (verified). Only test-kotlin1 converges.
Trade-offs / scope:
- LOCAL delegated properties (declared inside a function body) are a distinct
mechanism: their get/set is inlined into the enclosing function (no
DELEGATED_PROPERTY_ACCESSOR origin) and the residual divergence there is an
end-offset difference, not the `1:9:1:12` bug. They are deliberately left
for a separate commit.
- The `$delegate` backing-variable initializer/type-access spans still differ
between suites (e.g. `4:18` vs `4:21`); that is an unrelated mechanism and
is not touched here.
- The outside-KtProperty-range gate could in principle false-negative for a
delegated property declared at the very top of a file (offsets <= 11); this
is preferred to over-correcting real expressions and is not observed in the
test corpus.
Relearned test-kotlin1 expected updated (exprs, methods; incl. PrintAst).
Verified via full dual-suite relearn (CI-faithful: 2.3.20/lang-1.9 for tk1,
default/2.4.0 for tk2, database consistency checks): all 3333 tests pass, only
the three delegates-related tk1 files change, every changed row is a pure
relocation of a synthetic receiver from `1:9:1:12` to the K2 target, and
test-kotlin2 is byte-for-byte unchanged.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -3123,6 +3123,70 @@ open class KotlinFileExtractor(
|
||||
return tw.getLocation(ktProperty.valOrVarKeyword.startOffset, ktProperty.endOffset)
|
||||
}
|
||||
|
||||
/**
|
||||
* For a synthetic `thisRef` argument in a compiler-generated *delegated*-property accessor
|
||||
* body (origin `DELEGATED_PROPERTY_ACCESSOR`), returns the location to use, or null to leave
|
||||
* the raw location in place.
|
||||
*
|
||||
* The synthesised getter/setter body forwards to the delegate's `getValue`/`setValue`,
|
||||
* passing the accessor's dispatch/extension receiver (a `this` access) as the `thisRef`
|
||||
* argument, or `null` when the property has no receiver (e.g. a local delegated property).
|
||||
* These arguments have no dedicated source token. The K2 frontend records them so that:
|
||||
* - a receiver `this` access takes the delegate *expression*'s source range (e.g. the
|
||||
* `ResourceDelegate()` in `by ResourceDelegate()`), and
|
||||
* - a `null` argument has undefined offsets, so `tw.getLocation` maps it to the whole-file
|
||||
* location (`file:0:0:0:0`).
|
||||
*
|
||||
* The K1 frontend instead gives both real-but-meaningless offsets that resolve (via
|
||||
* `findPsiElement`) to an unrelated token near the top of the file (e.g. an `import`),
|
||||
* producing a bogus non-zero location. Recognise these arguments by their enclosing accessor's
|
||||
* origin, their shape (the accessor's own dispatch/extension receiver, or a `null` constant),
|
||||
* and the fact that their offsets fall outside the enclosing property's PSI text range (a real
|
||||
* receiver access could only occur within the delegate expression, i.e. inside that range).
|
||||
* Emit the K2-native location so K1 converges: the delegate expression's range for a `this`
|
||||
* receiver, or the whole-file location for `null`.
|
||||
*
|
||||
* This is not gated on [usesK2]: it must fire under K1 (which retains PSI and produces the
|
||||
* bogus offsets) and is a no-op under K2 (where [getPsi2Ir] is null, so it returns null and
|
||||
* the raw location is already used).
|
||||
*/
|
||||
private fun getDelegatedAccessorSyntheticArgumentLocation(e: IrElement): Label<DbLocation>? {
|
||||
val enclosing = declarationStack.peek().first as? IrFunction ?: return null
|
||||
if (enclosing.origin != IrDeclarationOrigin.DELEGATED_PROPERTY_ACCESSOR) return null
|
||||
val isNull =
|
||||
when (e) {
|
||||
is IrGetValue -> {
|
||||
val owner = e.symbol.owner
|
||||
val isReceiver =
|
||||
owner is IrValueParameter &&
|
||||
owner.parent == enclosing &&
|
||||
(isDispatchReceiver(owner) ||
|
||||
owner == enclosing.codeQlExtensionReceiverParameter)
|
||||
if (!isReceiver) return null
|
||||
false
|
||||
}
|
||||
is CodeQLIrConst<*> -> {
|
||||
if (e.value != null) return null
|
||||
true
|
||||
}
|
||||
else -> return null
|
||||
}
|
||||
val file = currentIrFile ?: return null
|
||||
val psiElement = getPsi2Ir()?.findPsiElement(enclosing, file) ?: return null
|
||||
val ktProperty = generateSequence(psiElement) { it.parent }
|
||||
.filterIsInstance<KtProperty>().firstOrNull()
|
||||
?: return null
|
||||
val start = e.startOffset
|
||||
val end = e.endOffset
|
||||
if (start < 0 || end < 0) return null
|
||||
// In-range offsets could be a genuine receiver access within the delegate expression;
|
||||
// only treat offsets outside the whole property declaration as the synthetic thisRef.
|
||||
if (start >= ktProperty.startOffset && end <= ktProperty.endOffset) return null
|
||||
if (isNull) return tw.getWholeFileLocation()
|
||||
val delegateExpression = ktProperty.delegate?.expression ?: return null
|
||||
return tw.getLocation(delegateExpression.startOffset, delegateExpression.endOffset)
|
||||
}
|
||||
|
||||
/**
|
||||
* For a delegated-property accessor (origin `DELEGATED_PROPERTY_ACCESSOR`), returns the
|
||||
* offset remapping to apply while extracting its body, or null if it cannot be computed.
|
||||
@@ -6461,7 +6525,8 @@ open class KotlinFileExtractor(
|
||||
extractVariableAccess(
|
||||
useValueDeclaration(owner),
|
||||
extractType,
|
||||
getPsiBasedLocation(e) ?: tw.getLocation(e),
|
||||
getDelegatedAccessorSyntheticArgumentLocation(e)
|
||||
?: getPsiBasedLocation(e) ?: tw.getLocation(e),
|
||||
exprParent.parent,
|
||||
exprParent.idx,
|
||||
callable,
|
||||
@@ -7012,7 +7077,8 @@ open class KotlinFileExtractor(
|
||||
callable: Label<out DbCallable>
|
||||
) {
|
||||
val containingDeclaration = declarationStack.peek().first
|
||||
val locId = getPsiBasedLocation(e) ?: tw.getLocation(e)
|
||||
val locId = getDelegatedAccessorSyntheticArgumentLocation(e)
|
||||
?: getPsiBasedLocation(e) ?: tw.getLocation(e)
|
||||
|
||||
if (
|
||||
containingDeclaration.shouldExtractAsStatic &&
|
||||
@@ -7389,7 +7455,7 @@ open class KotlinFileExtractor(
|
||||
v == null -> {
|
||||
extractNull(
|
||||
e.type,
|
||||
tw.getLocation(e),
|
||||
getDelegatedAccessorSyntheticArgumentLocation(e) ?: tw.getLocation(e),
|
||||
parent,
|
||||
idx,
|
||||
enclosingCallable,
|
||||
|
||||
@@ -33,7 +33,7 @@ delegatedProperties.kt:
|
||||
# 87| -1: [TypeAccess] PropertyReferenceDelegatesKt
|
||||
# 87| 0: [VarAccess] DelegatedPropertiesKt.extDelegated$delegateMyClass
|
||||
# 87| -1: [TypeAccess] DelegatedPropertiesKt
|
||||
# 1| 1: [ExtensionReceiverAccess] this
|
||||
# 87| 1: [ExtensionReceiverAccess] this
|
||||
# 87| 2: [PropertyRefExpr] ...::...
|
||||
# 87| -4: [AnonymousClass] new KMutableProperty1<MyClass,Integer>(...) { ... }
|
||||
# 87| 1: [Constructor]
|
||||
@@ -82,7 +82,7 @@ delegatedProperties.kt:
|
||||
# 87| -1: [TypeAccess] PropertyReferenceDelegatesKt
|
||||
# 87| 0: [VarAccess] DelegatedPropertiesKt.extDelegated$delegateMyClass
|
||||
# 87| -1: [TypeAccess] DelegatedPropertiesKt
|
||||
# 1| 1: [ExtensionReceiverAccess] this
|
||||
# 87| 1: [ExtensionReceiverAccess] this
|
||||
# 87| 2: [PropertyRefExpr] ...::...
|
||||
# 87| -4: [AnonymousClass] new KMutableProperty1<MyClass,Integer>(...) { ... }
|
||||
# 87| 1: [Constructor]
|
||||
@@ -644,7 +644,7 @@ delegatedProperties.kt:
|
||||
# 42| 0: [MethodCall] getValue(...)
|
||||
# 42| -1: [VarAccess] this.varResource0$delegate
|
||||
# 42| -1: [ThisAccess] this
|
||||
# 1| 0: [ThisAccess] this
|
||||
# 42| 0: [ThisAccess] this
|
||||
# 42| 1: [PropertyRefExpr] ...::...
|
||||
# 42| -4: [AnonymousClass] new KMutableProperty1<Owner,Integer>(...) { ... }
|
||||
# 42| 1: [Constructor]
|
||||
@@ -687,7 +687,7 @@ delegatedProperties.kt:
|
||||
# 42| 0: [MethodCall] setValue(...)
|
||||
# 42| -1: [VarAccess] this.varResource0$delegate
|
||||
# 42| -1: [ThisAccess] this
|
||||
# 1| 0: [ThisAccess] this
|
||||
# 42| 0: [ThisAccess] this
|
||||
# 42| 1: [PropertyRefExpr] ...::...
|
||||
# 42| -4: [AnonymousClass] new KMutableProperty1<Owner,Integer>(...) { ... }
|
||||
# 42| 1: [Constructor]
|
||||
@@ -891,7 +891,7 @@ delegatedProperties.kt:
|
||||
# 66| -1: [TypeAccess] PropertyReferenceDelegatesKt
|
||||
# 66| 0: [VarAccess] this.delegatedToMember1$delegate
|
||||
# 66| -1: [ThisAccess] this
|
||||
# 1| 1: [ThisAccess] this
|
||||
# 66| 1: [ThisAccess] this
|
||||
# 66| 2: [PropertyRefExpr] ...::...
|
||||
# 66| -4: [AnonymousClass] new KMutableProperty1<MyClass,Integer>(...) { ... }
|
||||
# 66| 1: [Constructor]
|
||||
@@ -936,7 +936,7 @@ delegatedProperties.kt:
|
||||
# 66| -1: [TypeAccess] PropertyReferenceDelegatesKt
|
||||
# 66| 0: [VarAccess] this.delegatedToMember1$delegate
|
||||
# 66| -1: [ThisAccess] this
|
||||
# 1| 1: [ThisAccess] this
|
||||
# 66| 1: [ThisAccess] this
|
||||
# 66| 2: [PropertyRefExpr] ...::...
|
||||
# 66| -4: [AnonymousClass] new KMutableProperty1<MyClass,Integer>(...) { ... }
|
||||
# 66| 1: [Constructor]
|
||||
@@ -1021,7 +1021,7 @@ delegatedProperties.kt:
|
||||
# 67| -1: [TypeAccess] PropertyReferenceDelegatesKt
|
||||
# 67| 0: [VarAccess] this.delegatedToMember2$delegate
|
||||
# 67| -1: [ThisAccess] this
|
||||
# 1| 1: [ThisAccess] this
|
||||
# 67| 1: [ThisAccess] this
|
||||
# 67| 2: [PropertyRefExpr] ...::...
|
||||
# 67| -4: [AnonymousClass] new KMutableProperty1<MyClass,Integer>(...) { ... }
|
||||
# 67| 1: [Constructor]
|
||||
@@ -1067,7 +1067,7 @@ delegatedProperties.kt:
|
||||
# 67| -1: [TypeAccess] PropertyReferenceDelegatesKt
|
||||
# 67| 0: [VarAccess] this.delegatedToMember2$delegate
|
||||
# 67| -1: [ThisAccess] this
|
||||
# 1| 1: [ThisAccess] this
|
||||
# 67| 1: [ThisAccess] this
|
||||
# 67| 2: [PropertyRefExpr] ...::...
|
||||
# 67| -4: [AnonymousClass] new KMutableProperty1<MyClass,Integer>(...) { ... }
|
||||
# 67| 1: [Constructor]
|
||||
@@ -1146,7 +1146,7 @@ delegatedProperties.kt:
|
||||
# 69| -1: [TypeAccess] PropertyReferenceDelegatesKt
|
||||
# 69| 0: [VarAccess] this.delegatedToExtMember1$delegate
|
||||
# 69| -1: [ThisAccess] this
|
||||
# 1| 1: [ThisAccess] this
|
||||
# 69| 1: [ThisAccess] this
|
||||
# 69| 2: [PropertyRefExpr] ...::...
|
||||
# 69| -4: [AnonymousClass] new KMutableProperty1<MyClass,Integer>(...) { ... }
|
||||
# 69| 1: [Constructor]
|
||||
@@ -1191,7 +1191,7 @@ delegatedProperties.kt:
|
||||
# 69| -1: [TypeAccess] PropertyReferenceDelegatesKt
|
||||
# 69| 0: [VarAccess] this.delegatedToExtMember1$delegate
|
||||
# 69| -1: [ThisAccess] this
|
||||
# 1| 1: [ThisAccess] this
|
||||
# 69| 1: [ThisAccess] this
|
||||
# 69| 2: [PropertyRefExpr] ...::...
|
||||
# 69| -4: [AnonymousClass] new KMutableProperty1<MyClass,Integer>(...) { ... }
|
||||
# 69| 1: [Constructor]
|
||||
@@ -1278,7 +1278,7 @@ delegatedProperties.kt:
|
||||
# 70| -1: [TypeAccess] PropertyReferenceDelegatesKt
|
||||
# 70| 0: [VarAccess] this.delegatedToExtMember2$delegate
|
||||
# 70| -1: [ThisAccess] this
|
||||
# 1| 1: [ThisAccess] this
|
||||
# 70| 1: [ThisAccess] this
|
||||
# 70| 2: [PropertyRefExpr] ...::...
|
||||
# 70| -4: [AnonymousClass] new KMutableProperty1<MyClass,Integer>(...) { ... }
|
||||
# 70| 1: [Constructor]
|
||||
@@ -1324,7 +1324,7 @@ delegatedProperties.kt:
|
||||
# 70| -1: [TypeAccess] PropertyReferenceDelegatesKt
|
||||
# 70| 0: [VarAccess] this.delegatedToExtMember2$delegate
|
||||
# 70| -1: [ThisAccess] this
|
||||
# 1| 1: [ThisAccess] this
|
||||
# 70| 1: [ThisAccess] this
|
||||
# 70| 2: [PropertyRefExpr] ...::...
|
||||
# 70| -4: [AnonymousClass] new KMutableProperty1<MyClass,Integer>(...) { ... }
|
||||
# 70| 1: [Constructor]
|
||||
@@ -1405,7 +1405,7 @@ delegatedProperties.kt:
|
||||
# 72| -1: [TypeAccess] PropertyReferenceDelegatesKt
|
||||
# 72| 0: [VarAccess] this.delegatedToBaseClass1$delegate
|
||||
# 72| -1: [ThisAccess] this
|
||||
# 1| 1: [ThisAccess] this
|
||||
# 72| 1: [ThisAccess] this
|
||||
# 72| 2: [PropertyRefExpr] ...::...
|
||||
# 72| -4: [AnonymousClass] new KProperty1<MyClass,Integer>(...) { ... }
|
||||
# 72| 1: [Constructor]
|
||||
@@ -1471,7 +1471,7 @@ delegatedProperties.kt:
|
||||
# 73| -1: [TypeAccess] PropertyReferenceDelegatesKt
|
||||
# 73| 0: [VarAccess] this.delegatedToBaseClass2$delegate
|
||||
# 73| -1: [ThisAccess] this
|
||||
# 1| 1: [ThisAccess] this
|
||||
# 73| 1: [ThisAccess] this
|
||||
# 73| 2: [PropertyRefExpr] ...::...
|
||||
# 73| -4: [AnonymousClass] new KProperty1<MyClass,Integer>(...) { ... }
|
||||
# 73| 1: [Constructor]
|
||||
@@ -1531,7 +1531,7 @@ delegatedProperties.kt:
|
||||
# 75| -1: [TypeAccess] PropertyReferenceDelegatesKt
|
||||
# 75| 0: [VarAccess] this.delegatedToAnotherClass1$delegate
|
||||
# 75| -1: [ThisAccess] this
|
||||
# 1| 1: [ThisAccess] this
|
||||
# 75| 1: [ThisAccess] this
|
||||
# 75| 2: [PropertyRefExpr] ...::...
|
||||
# 75| -4: [AnonymousClass] new KProperty1<MyClass,Integer>(...) { ... }
|
||||
# 75| 1: [Constructor]
|
||||
@@ -1597,7 +1597,7 @@ delegatedProperties.kt:
|
||||
# 77| -1: [TypeAccess] PropertyReferenceDelegatesKt
|
||||
# 77| 0: [VarAccess] this.delegatedToTopLevel$delegate
|
||||
# 77| -1: [ThisAccess] this
|
||||
# 1| 1: [ThisAccess] this
|
||||
# 77| 1: [ThisAccess] this
|
||||
# 77| 2: [PropertyRefExpr] ...::...
|
||||
# 77| -4: [AnonymousClass] new KMutableProperty1<MyClass,Integer>(...) { ... }
|
||||
# 77| 1: [Constructor]
|
||||
@@ -1642,7 +1642,7 @@ delegatedProperties.kt:
|
||||
# 77| -1: [TypeAccess] PropertyReferenceDelegatesKt
|
||||
# 77| 0: [VarAccess] this.delegatedToTopLevel$delegate
|
||||
# 77| -1: [ThisAccess] this
|
||||
# 1| 1: [ThisAccess] this
|
||||
# 77| 1: [ThisAccess] this
|
||||
# 77| 2: [PropertyRefExpr] ...::...
|
||||
# 77| -4: [AnonymousClass] new KMutableProperty1<MyClass,Integer>(...) { ... }
|
||||
# 77| 1: [Constructor]
|
||||
@@ -1713,7 +1713,7 @@ delegatedProperties.kt:
|
||||
# 79| -1: [TypeAccess] PropertyReferenceDelegatesKt
|
||||
# 79| 0: [VarAccess] this.max$delegate
|
||||
# 79| -1: [ThisAccess] this
|
||||
# 1| 1: [ThisAccess] this
|
||||
# 79| 1: [ThisAccess] this
|
||||
# 79| 2: [PropertyRefExpr] ...::...
|
||||
# 79| -4: [AnonymousClass] new KProperty1<MyClass,Integer>(...) { ... }
|
||||
# 79| 1: [Constructor]
|
||||
|
||||
@@ -9,24 +9,6 @@
|
||||
| delegatedProperties.kt:0:0:0:0 | null | delegatedProperties.kt:82:9:82:54 | <get-delegatedToMember3> | NullLiteral |
|
||||
| delegatedProperties.kt:0:0:0:0 | null | delegatedProperties.kt:82:9:82:54 | <set-delegatedToMember3> | NullLiteral |
|
||||
| delegatedProperties.kt:1:9:1:12 | null | delegatedProperties.kt:18:5:40:5 | fn | NullLiteral |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:42:5:42:47 | getVarResource0 | ThisAccess |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:42:5:42:47 | setVarResource0 | ThisAccess |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:66:5:66:50 | getDelegatedToMember1 | ThisAccess |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:66:5:66:50 | setDelegatedToMember1 | ThisAccess |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:67:5:67:53 | getDelegatedToMember2 | ThisAccess |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:67:5:67:53 | setDelegatedToMember2 | ThisAccess |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:69:5:69:56 | getDelegatedToExtMember1 | ThisAccess |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:69:5:69:56 | setDelegatedToExtMember1 | ThisAccess |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:70:5:70:59 | getDelegatedToExtMember2 | ThisAccess |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:70:5:70:59 | setDelegatedToExtMember2 | ThisAccess |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:72:5:72:56 | getDelegatedToBaseClass1 | ThisAccess |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:73:5:73:56 | getDelegatedToBaseClass2 | ThisAccess |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:75:5:75:78 | getDelegatedToAnotherClass1 | ThisAccess |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:77:5:77:49 | getDelegatedToTopLevel | ThisAccess |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:77:5:77:49 | setDelegatedToTopLevel | ThisAccess |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:79:5:79:38 | getMax | ThisAccess |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:87:1:87:46 | getExtDelegated | ExtensionReceiverAccess |
|
||||
| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:87:1:87:46 | setExtDelegated | ExtensionReceiverAccess |
|
||||
| delegatedProperties.kt:5:5:12:5 | Unit | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| delegatedProperties.kt:6:9:9:9 | int | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| delegatedProperties.kt:6:9:9:9 | prop1$delegate | delegatedProperties.kt:5:5:12:5 | fn | LocalVariableDeclExpr |
|
||||
@@ -276,6 +258,8 @@
|
||||
| delegatedProperties.kt:42:30:42:47 | setVarResource0(...) | delegatedProperties.kt:42:30:42:47 | set | MethodCall |
|
||||
| delegatedProperties.kt:42:30:42:47 | setVarResource0(...) | delegatedProperties.kt:42:30:42:47 | set | MethodCall |
|
||||
| delegatedProperties.kt:42:30:42:47 | this | delegatedProperties.kt:42:5:42:47 | getVarResource0 | ThisAccess |
|
||||
| delegatedProperties.kt:42:30:42:47 | this | delegatedProperties.kt:42:5:42:47 | getVarResource0 | ThisAccess |
|
||||
| delegatedProperties.kt:42:30:42:47 | this | delegatedProperties.kt:42:5:42:47 | setVarResource0 | ThisAccess |
|
||||
| delegatedProperties.kt:42:30:42:47 | this | delegatedProperties.kt:42:5:42:47 | setVarResource0 | ThisAccess |
|
||||
| delegatedProperties.kt:42:30:42:47 | this | delegatedProperties.kt:42:30:42:47 | invoke | ThisAccess |
|
||||
| delegatedProperties.kt:42:30:42:47 | this | delegatedProperties.kt:42:30:42:47 | invoke | ThisAccess |
|
||||
@@ -399,6 +383,8 @@
|
||||
| delegatedProperties.kt:66:36:66:50 | setMemberInt(...) | delegatedProperties.kt:66:36:66:50 | set | MethodCall |
|
||||
| delegatedProperties.kt:66:36:66:50 | setValue(...) | delegatedProperties.kt:66:5:66:50 | setDelegatedToMember1 | MethodCall |
|
||||
| delegatedProperties.kt:66:36:66:50 | this | delegatedProperties.kt:66:5:66:50 | getDelegatedToMember1 | ThisAccess |
|
||||
| delegatedProperties.kt:66:36:66:50 | this | delegatedProperties.kt:66:5:66:50 | getDelegatedToMember1 | ThisAccess |
|
||||
| delegatedProperties.kt:66:36:66:50 | this | delegatedProperties.kt:66:5:66:50 | setDelegatedToMember1 | ThisAccess |
|
||||
| delegatedProperties.kt:66:36:66:50 | this | delegatedProperties.kt:66:5:66:50 | setDelegatedToMember1 | ThisAccess |
|
||||
| delegatedProperties.kt:66:36:66:50 | this | delegatedProperties.kt:66:36:66:50 | | ThisAccess |
|
||||
| delegatedProperties.kt:66:36:66:50 | this | delegatedProperties.kt:66:36:66:50 | get | ThisAccess |
|
||||
@@ -462,6 +448,8 @@
|
||||
| delegatedProperties.kt:67:36:67:53 | setMemberInt(...) | delegatedProperties.kt:67:36:67:53 | set | MethodCall |
|
||||
| delegatedProperties.kt:67:36:67:53 | setValue(...) | delegatedProperties.kt:67:5:67:53 | setDelegatedToMember2 | MethodCall |
|
||||
| delegatedProperties.kt:67:36:67:53 | this | delegatedProperties.kt:67:5:67:53 | getDelegatedToMember2 | ThisAccess |
|
||||
| delegatedProperties.kt:67:36:67:53 | this | delegatedProperties.kt:67:5:67:53 | getDelegatedToMember2 | ThisAccess |
|
||||
| delegatedProperties.kt:67:36:67:53 | this | delegatedProperties.kt:67:5:67:53 | setDelegatedToMember2 | ThisAccess |
|
||||
| delegatedProperties.kt:67:36:67:53 | this | delegatedProperties.kt:67:5:67:53 | setDelegatedToMember2 | ThisAccess |
|
||||
| delegatedProperties.kt:67:36:67:53 | this | delegatedProperties.kt:67:36:67:53 | invoke | ThisAccess |
|
||||
| delegatedProperties.kt:67:36:67:53 | this | delegatedProperties.kt:67:36:67:53 | invoke | ThisAccess |
|
||||
@@ -519,6 +507,8 @@
|
||||
| delegatedProperties.kt:69:39:69:56 | setExtDelegated(...) | delegatedProperties.kt:69:39:69:56 | set | MethodCall |
|
||||
| delegatedProperties.kt:69:39:69:56 | setValue(...) | delegatedProperties.kt:69:5:69:56 | setDelegatedToExtMember1 | MethodCall |
|
||||
| delegatedProperties.kt:69:39:69:56 | this | delegatedProperties.kt:69:5:69:56 | getDelegatedToExtMember1 | ThisAccess |
|
||||
| delegatedProperties.kt:69:39:69:56 | this | delegatedProperties.kt:69:5:69:56 | getDelegatedToExtMember1 | ThisAccess |
|
||||
| delegatedProperties.kt:69:39:69:56 | this | delegatedProperties.kt:69:5:69:56 | setDelegatedToExtMember1 | ThisAccess |
|
||||
| delegatedProperties.kt:69:39:69:56 | this | delegatedProperties.kt:69:5:69:56 | setDelegatedToExtMember1 | ThisAccess |
|
||||
| delegatedProperties.kt:69:39:69:56 | this | delegatedProperties.kt:69:39:69:56 | | ThisAccess |
|
||||
| delegatedProperties.kt:69:39:69:56 | this | delegatedProperties.kt:69:39:69:56 | get | ThisAccess |
|
||||
@@ -584,6 +574,8 @@
|
||||
| delegatedProperties.kt:70:39:70:59 | setExtDelegated(...) | delegatedProperties.kt:70:39:70:59 | set | MethodCall |
|
||||
| delegatedProperties.kt:70:39:70:59 | setValue(...) | delegatedProperties.kt:70:5:70:59 | setDelegatedToExtMember2 | MethodCall |
|
||||
| delegatedProperties.kt:70:39:70:59 | this | delegatedProperties.kt:70:5:70:59 | getDelegatedToExtMember2 | ThisAccess |
|
||||
| delegatedProperties.kt:70:39:70:59 | this | delegatedProperties.kt:70:5:70:59 | getDelegatedToExtMember2 | ThisAccess |
|
||||
| delegatedProperties.kt:70:39:70:59 | this | delegatedProperties.kt:70:5:70:59 | setDelegatedToExtMember2 | ThisAccess |
|
||||
| delegatedProperties.kt:70:39:70:59 | this | delegatedProperties.kt:70:5:70:59 | setDelegatedToExtMember2 | ThisAccess |
|
||||
| delegatedProperties.kt:70:39:70:59 | this | delegatedProperties.kt:70:39:70:59 | invoke | ThisAccess |
|
||||
| delegatedProperties.kt:70:39:70:59 | this | delegatedProperties.kt:70:39:70:59 | invoke | ThisAccess |
|
||||
@@ -617,6 +609,7 @@
|
||||
| delegatedProperties.kt:72:39:72:56 | getDelegatedToBaseClass1(...) | delegatedProperties.kt:72:39:72:56 | get | MethodCall |
|
||||
| delegatedProperties.kt:72:39:72:56 | getValue(...) | delegatedProperties.kt:72:5:72:56 | getDelegatedToBaseClass1 | MethodCall |
|
||||
| delegatedProperties.kt:72:39:72:56 | this | delegatedProperties.kt:72:5:72:56 | getDelegatedToBaseClass1 | ThisAccess |
|
||||
| delegatedProperties.kt:72:39:72:56 | this | delegatedProperties.kt:72:5:72:56 | getDelegatedToBaseClass1 | ThisAccess |
|
||||
| delegatedProperties.kt:72:39:72:56 | this | delegatedProperties.kt:72:39:72:56 | | ThisAccess |
|
||||
| delegatedProperties.kt:72:39:72:56 | this | delegatedProperties.kt:72:39:72:56 | get | ThisAccess |
|
||||
| delegatedProperties.kt:72:39:72:56 | this | delegatedProperties.kt:72:39:72:56 | invoke | ThisAccess |
|
||||
@@ -651,6 +644,7 @@
|
||||
| delegatedProperties.kt:73:39:73:56 | getDelegatedToBaseClass2(...) | delegatedProperties.kt:73:39:73:56 | get | MethodCall |
|
||||
| delegatedProperties.kt:73:39:73:56 | getValue(...) | delegatedProperties.kt:73:5:73:56 | getDelegatedToBaseClass2 | MethodCall |
|
||||
| delegatedProperties.kt:73:39:73:56 | this | delegatedProperties.kt:73:5:73:56 | getDelegatedToBaseClass2 | ThisAccess |
|
||||
| delegatedProperties.kt:73:39:73:56 | this | delegatedProperties.kt:73:5:73:56 | getDelegatedToBaseClass2 | ThisAccess |
|
||||
| delegatedProperties.kt:73:39:73:56 | this | delegatedProperties.kt:73:39:73:56 | invoke | ThisAccess |
|
||||
| delegatedProperties.kt:73:39:73:56 | this | delegatedProperties.kt:73:39:73:56 | invoke | ThisAccess |
|
||||
| delegatedProperties.kt:73:39:73:56 | this.delegatedToBaseClass2$delegate | delegatedProperties.kt:73:5:73:56 | getDelegatedToBaseClass2 | VarAccess |
|
||||
@@ -682,6 +676,7 @@
|
||||
| delegatedProperties.kt:75:42:75:78 | getDelegatedToAnotherClass1(...) | delegatedProperties.kt:75:42:75:78 | get | MethodCall |
|
||||
| delegatedProperties.kt:75:42:75:78 | getValue(...) | delegatedProperties.kt:75:5:75:78 | getDelegatedToAnotherClass1 | MethodCall |
|
||||
| delegatedProperties.kt:75:42:75:78 | this | delegatedProperties.kt:75:5:75:78 | getDelegatedToAnotherClass1 | ThisAccess |
|
||||
| delegatedProperties.kt:75:42:75:78 | this | delegatedProperties.kt:75:5:75:78 | getDelegatedToAnotherClass1 | ThisAccess |
|
||||
| delegatedProperties.kt:75:42:75:78 | this | delegatedProperties.kt:75:42:75:78 | | ThisAccess |
|
||||
| delegatedProperties.kt:75:42:75:78 | this | delegatedProperties.kt:75:42:75:78 | get | ThisAccess |
|
||||
| delegatedProperties.kt:75:42:75:78 | this | delegatedProperties.kt:75:42:75:78 | invoke | ThisAccess |
|
||||
@@ -735,6 +730,8 @@
|
||||
| delegatedProperties.kt:77:37:77:49 | setTopLevelInt(...) | delegatedProperties.kt:77:37:77:49 | set | MethodCall |
|
||||
| delegatedProperties.kt:77:37:77:49 | setValue(...) | delegatedProperties.kt:77:5:77:49 | setDelegatedToTopLevel | MethodCall |
|
||||
| delegatedProperties.kt:77:37:77:49 | this | delegatedProperties.kt:77:5:77:49 | getDelegatedToTopLevel | ThisAccess |
|
||||
| delegatedProperties.kt:77:37:77:49 | this | delegatedProperties.kt:77:5:77:49 | getDelegatedToTopLevel | ThisAccess |
|
||||
| delegatedProperties.kt:77:37:77:49 | this | delegatedProperties.kt:77:5:77:49 | setDelegatedToTopLevel | ThisAccess |
|
||||
| delegatedProperties.kt:77:37:77:49 | this | delegatedProperties.kt:77:5:77:49 | setDelegatedToTopLevel | ThisAccess |
|
||||
| delegatedProperties.kt:77:37:77:49 | this | delegatedProperties.kt:77:37:77:49 | invoke | ThisAccess |
|
||||
| delegatedProperties.kt:77:37:77:49 | this | delegatedProperties.kt:77:37:77:49 | invoke | ThisAccess |
|
||||
@@ -763,6 +760,7 @@
|
||||
| delegatedProperties.kt:79:21:79:38 | getMax(...) | delegatedProperties.kt:79:21:79:38 | get | MethodCall |
|
||||
| delegatedProperties.kt:79:21:79:38 | getValue(...) | delegatedProperties.kt:79:5:79:38 | getMax | MethodCall |
|
||||
| delegatedProperties.kt:79:21:79:38 | this | delegatedProperties.kt:79:5:79:38 | getMax | ThisAccess |
|
||||
| delegatedProperties.kt:79:21:79:38 | this | delegatedProperties.kt:79:5:79:38 | getMax | ThisAccess |
|
||||
| delegatedProperties.kt:79:21:79:38 | this | delegatedProperties.kt:79:21:79:38 | invoke | ThisAccess |
|
||||
| delegatedProperties.kt:79:21:79:38 | this | delegatedProperties.kt:79:21:79:38 | invoke | ThisAccess |
|
||||
| delegatedProperties.kt:79:21:79:38 | this.max$delegate | delegatedProperties.kt:79:5:79:38 | getMax | VarAccess |
|
||||
@@ -880,6 +878,8 @@
|
||||
| delegatedProperties.kt:87:34:87:46 | setExtDelegated(...) | delegatedProperties.kt:87:34:87:46 | set | MethodCall |
|
||||
| delegatedProperties.kt:87:34:87:46 | setTopLevelInt(...) | delegatedProperties.kt:87:34:87:46 | set | MethodCall |
|
||||
| delegatedProperties.kt:87:34:87:46 | setValue(...) | delegatedProperties.kt:87:1:87:46 | setExtDelegated | MethodCall |
|
||||
| delegatedProperties.kt:87:34:87:46 | this | delegatedProperties.kt:87:1:87:46 | getExtDelegated | ExtensionReceiverAccess |
|
||||
| delegatedProperties.kt:87:34:87:46 | this | delegatedProperties.kt:87:1:87:46 | setExtDelegated | ExtensionReceiverAccess |
|
||||
| delegatedProperties.kt:87:34:87:46 | this | delegatedProperties.kt:87:34:87:46 | invoke | ThisAccess |
|
||||
| delegatedProperties.kt:87:34:87:46 | this | delegatedProperties.kt:87:34:87:46 | invoke | ThisAccess |
|
||||
| delegatedProperties.kt:87:34:87:46 | this | delegatedProperties.kt:87:34:87:46 | invoke | ThisAccess |
|
||||
|
||||
@@ -132,9 +132,6 @@
|
||||
| dataClass.kt:1:34:1:46 | this.y | VarAccess |
|
||||
| dataClass.kt:1:34:1:46 | y | VarAccess |
|
||||
| dataClass.kt:1:34:1:46 | y | VarAccess |
|
||||
| delegates.kt:1:9:1:12 | this | ThisAccess |
|
||||
| delegates.kt:1:9:1:12 | this | ThisAccess |
|
||||
| delegates.kt:1:9:1:12 | this | ThisAccess |
|
||||
| delegates.kt:4:5:6:5 | int | TypeAccess |
|
||||
| delegates.kt:4:18:6:5 | ...=... | KtInitializerAssignExpr |
|
||||
| delegates.kt:4:18:6:5 | Integer | TypeAccess |
|
||||
@@ -156,6 +153,7 @@
|
||||
| delegates.kt:4:21:6:5 | lazy(...) | MethodCall |
|
||||
| delegates.kt:4:21:6:5 | this | ThisAccess |
|
||||
| delegates.kt:4:21:6:5 | this | ThisAccess |
|
||||
| delegates.kt:4:21:6:5 | this | ThisAccess |
|
||||
| delegates.kt:4:21:6:5 | this.lazyProp$delegate | VarAccess |
|
||||
| delegates.kt:4:26:6:5 | ...->... | LambdaExpr |
|
||||
| delegates.kt:4:26:6:5 | Function0<Integer> | TypeAccess |
|
||||
@@ -202,6 +200,8 @@
|
||||
| delegates.kt:8:35:11:5 | this | ThisAccess |
|
||||
| delegates.kt:8:35:11:5 | this | ThisAccess |
|
||||
| delegates.kt:8:35:11:5 | this | ThisAccess |
|
||||
| delegates.kt:8:35:11:5 | this | ThisAccess |
|
||||
| delegates.kt:8:35:11:5 | this | ThisAccess |
|
||||
| delegates.kt:8:35:11:5 | this.observableProp$delegate | VarAccess |
|
||||
| delegates.kt:8:35:11:5 | this.observableProp$delegate | VarAccess |
|
||||
| delegates.kt:8:56:8:63 | "<none>" | StringLiteral |
|
||||
|
||||
Reference in New Issue
Block a user