[FIR] Optimization & checking fix: remove usage of dispatchReceiverValue

This commit is contained in:
simon.ogorodnik
2019-12-25 17:23:44 +03:00
committed by Mikhail Glukhikh
parent 686965c0d3
commit 5e426fdc71
114 changed files with 268 additions and 302 deletions
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.ConeTypeVariable
import org.jetbrains.kotlin.fir.types.FirTypeProjection
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemBuilder
import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemOperation
import org.jetbrains.kotlin.resolve.calls.inference.model.ConstraintStorage
@@ -48,7 +47,7 @@ class CallInfo(
CallInfo(
callKind, explicitReceiver,
listOf(receiverExpression) + arguments,
isSafeCall, typeArguments, session, containingFile, implicitReceiverStack, expectedType, outerCSBuilder, lhs, typeProvider
isSafeCall, typeArguments, session, containingFile, implicitReceiverStack, expectedType, outerCSBuilder, lhs
)
}
@@ -63,7 +62,7 @@ enum class CandidateApplicability {
class Candidate(
val symbol: AbstractFirBasedSymbol<*>,
val dispatchReceiverValue: ClassDispatchReceiverValue?,
val dispatchReceiverValue: ReceiverValue?,
val implicitExtensionReceiverValue: ImplicitReceiverValue<*>?,
val explicitReceiverKind: ExplicitReceiverKind,
val bodyResolveComponents: BodyResolveComponents,
@@ -31,7 +31,7 @@ class CandidateFactory(
fun createCandidate(
symbol: AbstractFirBasedSymbol<*>,
explicitReceiverKind: ExplicitReceiverKind,
dispatchReceiverValue: ClassDispatchReceiverValue? = null,
dispatchReceiverValue: ReceiverValue? = null,
implicitExtensionReceiverValue: ImplicitReceiverValue<*>? = null,
builtInExtensionFunctionReceiverValue: ReceiverValue? = null
): Candidate {
@@ -65,7 +65,7 @@ class QualifiedReceiverTowerDataConsumer<T : AbstractFirBasedSymbol<*>>(
private inner class TowerLevelProcessorImpl(val group: Int) : TowerScopeLevel.TowerScopeLevelProcessor<T> {
override fun consumeCandidate(
symbol: T,
dispatchReceiverValue: ClassDispatchReceiverValue?,
dispatchReceiverValue: ReceiverValue?,
implicitExtensionReceiverValue: ImplicitReceiverValue<*>?,
builtInExtensionFunctionReceiverValue: ReceiverValue?
): ProcessorAction {
@@ -198,7 +198,7 @@ class ExplicitReceiverTowerDataConsumer<T : AbstractFirBasedSymbol<*>>(
private inner class EmptyKindTowerProcessor(val group: Int) : TowerScopeLevel.TowerScopeLevelProcessor<T> {
override fun consumeCandidate(
symbol: T,
dispatchReceiverValue: ClassDispatchReceiverValue?,
dispatchReceiverValue: ReceiverValue?,
implicitExtensionReceiverValue: ImplicitReceiverValue<*>?,
builtInExtensionFunctionReceiverValue: ReceiverValue?
): ProcessorAction {
@@ -219,7 +219,7 @@ class ExplicitReceiverTowerDataConsumer<T : AbstractFirBasedSymbol<*>>(
private inner class TowerLevelKindTowerProcessor(val group: Int) : TowerScopeLevel.TowerScopeLevelProcessor<T> {
override fun consumeCandidate(
symbol: T,
dispatchReceiverValue: ClassDispatchReceiverValue?,
dispatchReceiverValue: ReceiverValue?,
implicitExtensionReceiverValue: ImplicitReceiverValue<*>?,
builtInExtensionFunctionReceiverValue: ReceiverValue?
): ProcessorAction {
@@ -291,7 +291,7 @@ class NoExplicitReceiverTowerDataConsumer<T : AbstractFirBasedSymbol<*>>(
private inner class TowerLevelProcessorImpl(val group: Int) : TowerScopeLevel.TowerScopeLevelProcessor<T> {
override fun consumeCandidate(
symbol: T,
dispatchReceiverValue: ClassDispatchReceiverValue?,
dispatchReceiverValue: ReceiverValue?,
implicitExtensionReceiverValue: ImplicitReceiverValue<*>?,
builtInExtensionFunctionReceiverValue: ReceiverValue?
): ProcessorAction {
@@ -5,21 +5,21 @@
package org.jetbrains.kotlin.fir.resolve.calls
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirImportImpl
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedImportImpl
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
import org.jetbrains.kotlin.fir.resolve.BodyResolveComponents
import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
import org.jetbrains.kotlin.fir.resolve.*
import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
import org.jetbrains.kotlin.fir.scopes.impl.FirAbstractImportingScope
import org.jetbrains.kotlin.fir.scopes.impl.FirExplicitSimpleImportingScope
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.ConeNullability
import org.jetbrains.kotlin.fir.types.isExtensionFunctionType
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
@@ -45,7 +45,7 @@ interface TowerScopeLevel {
interface TowerScopeLevelProcessor<T : AbstractFirBasedSymbol<*>> {
fun consumeCandidate(
symbol: T,
dispatchReceiverValue: ClassDispatchReceiverValue?,
dispatchReceiverValue: ReceiverValue?,
implicitExtensionReceiverValue: ImplicitReceiverValue<*>?,
builtInExtensionFunctionReceiverValue: ReceiverValue? = null
): ProcessorAction
@@ -110,9 +110,7 @@ class MemberScopeTowerLevel(
if (candidate is FirCallableSymbol<*> &&
(implicitExtensionInvokeMode || candidate.hasConsistentExtensionReceiver(extensionReceiver))
) {
// NB: we do not check dispatchReceiverValue != null here,
// because of objects & constructors (see comments in dispatchReceiverValue() implementation)
val dispatchReceiverValue = candidate.dispatchReceiverValue()
val dispatchReceiverValue = NotNullableReceiverValue(dispatchReceiver)
if (implicitExtensionInvokeMode) {
if (output.consumeCandidate(
candidate, dispatchReceiverValue,
@@ -139,7 +137,7 @@ class MemberScopeTowerLevel(
) return ProcessorAction.STOP
val withSynthetic = FirSyntheticPropertiesScope(session, scope)
return withSynthetic.processScopeMembers { symbol ->
output.consumeCandidate(symbol, symbol.dispatchReceiverValue(), implicitExtensionReceiver, null)
output.consumeCandidate(symbol, NotNullableReceiverValue(dispatchReceiver), implicitExtensionReceiver, null)
}
}
@@ -187,7 +185,7 @@ class ScopeTowerLevel(
extensionsOnly && !hasExtensionReceiver() -> false
!hasConsistentExtensionReceiver(extensionReceiver) -> false
scope is FirAbstractImportingScope -> true
else -> dispatchReceiverValue().let { it == null || it.klassSymbol.fir.classKind == ClassKind.OBJECT }
else -> true
}
override fun <T : AbstractFirBasedSymbol<*>> processElementsByName(
@@ -204,12 +202,8 @@ class ScopeTowerLevel(
return when (token) {
TowerScopeLevel.Token.Properties -> scope.processPropertiesByName(name) { candidate ->
if (candidate.hasConsistentReceivers(extensionReceiver)) {
val dispatchReceiverValue = when (candidate) {
is FirBackingFieldSymbol -> candidate.fir.symbol.dispatchReceiverValue()
else -> candidate.dispatchReceiverValue()
}
processor.consumeCandidate(
candidate as T, dispatchReceiverValue = dispatchReceiverValue,
candidate as T, dispatchReceiverValue = null,
implicitExtensionReceiverValue = implicitExtensionReceiver
)
} else {
@@ -223,7 +217,7 @@ class ScopeTowerLevel(
) { candidate ->
if (candidate.hasConsistentReceivers(extensionReceiver)) {
processor.consumeCandidate(
candidate as T, dispatchReceiverValue = candidate.dispatchReceiverValue(),
candidate as T, dispatchReceiverValue = null,
implicitExtensionReceiverValue = implicitExtensionReceiver
)
} else {
@@ -300,6 +294,14 @@ class QualifiedReceiverTowerLevel(
}
}
class NotNullableReceiverValue(val value: ReceiverValue) : ReceiverValue {
override val type: ConeKotlinType
get() = value.type.withNullability(ConeNullability.NOT_NULL)
override val receiverExpression: FirExpression
get() = value.receiverExpression
}
fun FirCallableDeclaration<*>.dispatchReceiverValue(session: FirSession): ClassDispatchReceiverValue? {
// TODO: this is not true atCall least for inner class constructors
if (this is FirConstructor) return null
@@ -26,7 +26,7 @@ FILE: lambdaInLambda.kt
public final fun test(ordinal: R|kotlin/Int|): R|kotlin/Unit| {
R|/buildString|(<L> = buildString@fun R|StringBuilder|.<anonymous>(): R|kotlin/Unit| {
this@R|special/anonymous|.R|/insert|<R|StringBuilder|, R|KDocTemplate|>(R|/KDocTemplate.KDocTemplate|(), <L> = insert@fun R|KDocTemplate|.<anonymous>(): R|kotlin/Unit| {
this@R|/KDocTemplate|.R|/KDocTemplate.definition|(<L> = definition@fun R|StringBuilder|.<anonymous>(): R|kotlin/Unit| {
this@R|special/anonymous|.R|/KDocTemplate.definition|(<L> = definition@fun R|StringBuilder|.<anonymous>(): R|kotlin/Unit| {
R|<local>/ordinal|?.R|kotlin/let|<R|kotlin/Int|, R|kotlin/Unit|>(<L> = let@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Unit| <kind=EXACTLY_ONCE> {
Unit
}
+4 -4
View File
@@ -206,7 +206,7 @@ digraph complex_kt {
subgraph cluster_19 {
color=blue
79 [label="Enter block"];
80 [label="Function call: this@R|/AutoCloseable|.R|/AutoCloseable.close|()"];
80 [label="Function call: this@R|/closeFinally|.R|/AutoCloseable.close|()"];
81 [label="Exit block"];
}
82 [label="Try main block exit"];
@@ -233,7 +233,7 @@ digraph complex_kt {
subgraph cluster_22 {
color=blue
94 [label="Enter block"];
95 [label="Function call: this@R|/AutoCloseable|.R|/AutoCloseable.close|()"];
95 [label="Function call: this@R|/closeFinally|.R|/AutoCloseable.close|()"];
96 [label="Exit block"];
}
97 [label="Exit when branch result"];
@@ -250,11 +250,11 @@ digraph complex_kt {
==(this@R|/closeFinally|, Null(null)) -> {
}
==(R|<local>/cause|, Null(null)) -> {
this@R|/AutoCloseable|.R|/AutoCloseable.close|()
this@R|/closeFinally|.R|/AutoCloseable.close|()
}
else -> {
try {
this@R|/AutoCloseable|.R|/AutoCloseable.close|()
this@R|/closeFinally|.R|/AutoCloseable.close|()
}
catch (closeException: R|kotlin/Throwable|) {
R|<local>/cause|.R|kotlin/addSuppressed|(R|<local>/closeException|)
+2 -2
View File
@@ -24,11 +24,11 @@ FILE: complex.kt
==(this@R|/closeFinally|, Null(null)) -> {
}
==(R|<local>/cause|, Null(null)) -> {
this@R|/AutoCloseable|.R|/AutoCloseable.close|()
this@R|/closeFinally|.R|/AutoCloseable.close|()
}
else -> {
try {
this@R|/AutoCloseable|.R|/AutoCloseable.close|()
this@R|/closeFinally|.R|/AutoCloseable.close|()
}
catch (closeException: R|kotlin/Throwable|) {
R|<local>/cause|.R|kotlin/addSuppressed|(R|<local>/closeException|)
@@ -25,7 +25,7 @@ FILE: access.kt
public get(): R|kotlin/String|
public final fun R|Foo|.abc(): R|kotlin/Int| {
^abc this@R|/Foo|.R|/Foo.x|
^abc this@R|/Bar.abc|.R|/Foo.x|
}
public final fun bar(): R|Bar| {
@@ -37,7 +37,7 @@ FILE: access.kt
}
public final fun R|Foo|.check(): <ERROR TYPE REF: Inapplicable(INAPPLICABLE): [kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus]> {
^check this@R|/Foo|.R|/Foo.abc|().<Inapplicable(INAPPLICABLE): [kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus]>#(this@R|/Bar|.R|/Bar.bar|())
^check this@R|/Bar.check|.R|/Foo.abc|().<Inapplicable(INAPPLICABLE): [kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus]>#(this@R|/Bar|.R|/Bar.bar|())
}
public final fun R|Foo|.check2(): R|kotlin/String| {
@@ -46,7 +46,7 @@ FILE: access.kt
}
public final fun R|Foo|.ext(): R|kotlin/Int| {
^ext this@R|/Foo|.R|/Foo.x|
^ext this@R|/ext|.R|/Foo.x|
}
public final fun bar(): R|kotlin/Unit| {
}
@@ -18,7 +18,7 @@ FILE: companion.kt
}
public final fun bar(): R|kotlin/Unit| {
this@R|/A.Companion|.R|/A.Companion.foo|()
R|/A.Companion.foo|()
}
}
@@ -15,7 +15,7 @@ FILE: companionExtension.kt
}
public final fun test(): R|kotlin/Unit| {
(this@R|/My.Companion|, this@R|/My|).R|/My.Companion.foo|()
this@R|/My|.R|/My.Companion.foo|()
}
}
@@ -11,10 +11,10 @@ FILE: extensionPropertyInLambda.kt
}
public final var <T> R|C<T>|.y: R|T|
public get(): R|T| {
^ this@R|/C|.R|FakeOverride</C.x: R|T|>|
^ this@R|/y|.R|FakeOverride</C.x: R|T|>|
}
public set(v: R|T|): R|kotlin/Unit| {
this@R|/C|.R|FakeOverride</C.x: R|T|>| = R|<local>/v|
this@R|/y|.R|FakeOverride</C.x: R|T|>| = R|<local>/v|
}
public final fun use(f: R|() -> kotlin/String|): R|kotlin/Unit| {
}
@@ -5,7 +5,7 @@ FILE: test.kt
}
public final override fun getLookupString(): R|kotlin/String| {
^getLookupString this@R|/Decorator|.R|/Decorator.delegate|.R|/LookupElement.lookupString|
^getLookupString this@R|/MyDecorator|.R|/Decorator.delegate|.R|/LookupElement.lookupString|
}
}
@@ -16,7 +16,7 @@ FILE: genericPropertyAccess.kt
}
public final override fun foo(): R|T| {
^foo this@R|/Base|.R|FakeOverride</Base.x: R|T|>|
^foo this@R|/Derived|.R|FakeOverride</Base.x: R|T|>|
}
}
@@ -26,10 +26,10 @@ FILE: importedReceiver.kt
public final fun test(): R|kotlin/Unit| {
Int(42).R|/foo|<R|kotlin/Int|>()
String().R|/foo|<R|kotlin/String|>()
(this@R|/My|, Int(42)).R|/My.bar|<R|kotlin/Int|>()
(this@R|/My|, String()).R|/My.bar|<R|kotlin/String|>()
this@R|/My|.R|/My.baz|()
(this@R|/My|, Boolean(true)).R|/My.gau|()
this@R|/Your|.R|/Your.wat|()
(this@R|/Your|, Boolean(false)).R|FakeOverride</Your.watwat: R|kotlin/Unit|>|<R|kotlin/Boolean|>()
Int(42).R|/My.bar|<R|kotlin/Int|>()
String().R|/My.bar|<R|kotlin/String|>()
R|/My.baz|()
Boolean(true).R|/My.gau|()
R|/Your.wat|()
Boolean(false).R|FakeOverride</Your.watwat: R|kotlin/Unit|>|<R|kotlin/Boolean|>()
}
@@ -13,19 +13,19 @@ FILE: lambdaWithReceiver.kt
}
public final fun test_1(): R|kotlin/Unit| {
R|/withA|(<L> = withA@fun R|A|.<anonymous>(): R|kotlin/Unit| {
this@R|/A|.R|/A.foo|()
this@R|special/anonymous|.R|/A.foo|()
}
)
}
public final fun test_2(a: R|A|): R|kotlin/Unit| {
R|/myWith|<R|A|>(R|<local>/a|, <L> = myWith@fun R|A|.<anonymous>(): R|kotlin/Unit| {
this@R|/A|.R|/A.foo|()
this@R|special/anonymous|.R|/A.foo|()
}
)
}
public final fun test_3(a: R|A|): R|kotlin/Unit| {
R|<local>/a|.R|/myApply|<R|A|>(<L> = myApply@fun R|A|.<anonymous>(): R|kotlin/Unit| {
this@R|/A|.R|/A.foo|()
this@R|special/anonymous|.R|/A.foo|()
}
)
}
@@ -33,7 +33,7 @@ FILE: lambdaWithReceiver.kt
}
public final fun test_4(): R|kotlin/Unit| {
R|/complexLambda|(<L> = complexLambda@fun R|kotlin/Int|.<anonymous>(it: R|kotlin/String|): R|kotlin/Unit| {
this@R|kotlin/Int|.R|kotlin/Int.inc|()
this@R|special/anonymous|.R|kotlin/Int.inc|()
this@R|special/anonymous|.R|kotlin/Int.inc|()
R|<local>/it|.R|kotlin/String.length|
}
@@ -8,7 +8,7 @@ FILE: localInnerClass.kt
}
public final fun foo(): R|Foo| {
^foo R|/<anonymous>.Derived.Derived|(Int(42))
^foo this@R|/anonymous|.R|/<anonymous>.Derived.Derived|(Int(42))
}
local final inner class Derived : R|Foo| {
@@ -10,11 +10,11 @@ FILE: foo.kt
private set(value: R|kotlin/Boolean|): R|kotlin/Unit|
public final fun bar(): R|kotlin/Boolean| {
^bar R|/anonymous.result|.R|kotlin/Boolean.not|()
^bar this@R|/anonymous|.R|/anonymous.result|.R|kotlin/Boolean.not|()
}
public final override fun result(): R|kotlin/Boolean| {
^result R|/anonymous.result|
^result this@R|/anonymous|.R|/anonymous.result|
}
}
@@ -15,11 +15,11 @@ FILE: outerObject.kt
super<R|kotlin/Any|>()
}
public final val y: R|kotlin/Int| = this@R|/Outer|.R|/Outer.x|
public final val y: R|kotlin/Int| = R|/Outer.x|
public get(): R|kotlin/Int|
public final fun test(): R|kotlin/Unit| {
(this@R|/Outer|, this@R|/Outer.Nested|).R|/Outer.foo|()
this@R|/Outer.Nested|.R|/Outer.foo|()
}
}
@@ -11,8 +11,8 @@ FILE: first.kt
public final fun baz(): R|kotlin/Unit| {
this@R|/Private|.R|/Private.bar|()
R|/Private.Nested.Nested|()
this@R|/Private.Companion|.R|/Private.Companion.fromCompanion|()
this@R|/Private|.R|/Private.Nested.Nested|()
R|/Private.Companion.fromCompanion|()
Q|Private.NotCompanion|.<Inapplicable(HIDDEN): [/Private.NotCompanion.foo]>#()
}
@@ -23,7 +23,7 @@ FILE: first.kt
public final fun foo(): R|kotlin/Unit| {
this@R|/Private|.R|/Private.bar|()
this@R|/Private.Companion|.R|/Private.Companion.fromCompanion|()
R|/Private.Companion.fromCompanion|()
Q|Private.NotCompanion|.<Inapplicable(HIDDEN): [/Private.NotCompanion.foo]>#()
}
@@ -35,7 +35,7 @@ FILE: first.kt
}
public final fun foo(): R|kotlin/Unit| {
this@R|/Private.Companion|.R|/Private.Companion.fromCompanion|()
R|/Private.Companion.fromCompanion|()
Q|Private.NotCompanion|.<Inapplicable(HIDDEN): [/Private.NotCompanion.foo]>#()
}
@@ -72,7 +72,7 @@ FILE: first.kt
public final fun baz(): R|kotlin/Unit| {
R|/Local.bar|()
R|/Local.Inner.Inner|()
this@R|/Local|.R|/Local.Inner.Inner|()
}
local final inner class Inner : R|kotlin/Any| {
@@ -9,7 +9,7 @@ FILE: protectedVisibility.kt
public final fun baz(): R|kotlin/Unit| {
this@R|/Protected|.R|/Protected.bar|()
R|/Protected.Nested.Nested|().R|/Protected.Nested.foo|()
this@R|/Protected|.R|/Protected.Nested.Nested|().R|/Protected.Nested.foo|()
}
public final inner class Inner : R|kotlin/Any| {
@@ -57,10 +57,10 @@ FILE: protectedVisibility.kt
}
public final fun foo(): R|kotlin/Unit| {
this@R|/Protected|.R|/Protected.bar|()
R|/Protected.Nested.Nested|().R|/Protected.Nested.foo|()
R|/Protected.Nested.Nested|().<Inapplicable(HIDDEN): [/Protected.Nested.bar]>#()
this@R|/Protected.Companion|.R|/Protected.Companion.fromCompanion|()
this@R|/Derived|.R|/Protected.bar|()
this@R|/Derived|.R|/Protected.Nested.Nested|().R|/Protected.Nested.foo|()
this@R|/Derived|.R|/Protected.Nested.Nested|().<Inapplicable(HIDDEN): [/Protected.Nested.bar]>#()
R|/Protected.Companion.fromCompanion|()
<Inapplicable(HIDDEN): [/Protected.Companion.protectedFromCompanion]>#()
}
@@ -70,7 +70,7 @@ FILE: protectedVisibility.kt
}
public final fun use(): R|kotlin/Unit| {
this@R|/Protected.Nested|.R|/Protected.Nested.bar|()
this@R|/Derived.NestedDerived|.R|/Protected.Nested.bar|()
}
}
@@ -6,7 +6,7 @@ class C {
class Nested {
fun test() {
<!UNRESOLVED_REFERENCE!>err<!>()
err()
}
}
}
@@ -18,7 +18,7 @@ FILE: receiverConsistency.kt
}
public final fun test(): R|kotlin/Unit| {
<Unresolved name: err>#()
R|/C.err|()
}
}
@@ -76,7 +76,7 @@ FILE: enums.kt
}
public final val g: R|kotlin/Double| = this@R|/Planet.Companion|.R|/Planet.Companion.G|.R|kotlin/Double.times|(R|<local>/m|).R|kotlin/Double.div|(R|<local>/r|.R|kotlin/Double.times|(R|<local>/r|))
public final val g: R|kotlin/Double| = R|/Planet.Companion.G|.R|kotlin/Double.times|(R|<local>/m|).R|kotlin/Double.div|(R|<local>/r|.R|kotlin/Double.times|(R|<local>/r|))
public get(): R|kotlin/Double|
public abstract fun sayHello(): R|kotlin/Unit|
@@ -30,7 +30,7 @@ FILE: genericConstructors.kt
}
public final fun bar(): R|kotlin/Unit| {
this@R|/B|.R|FakeOverride</B.a: R|A<kotlin/String>|>|.R|FakeOverride</A.foo: R|kotlin/Unit|>|(String())
this@R|/C|.R|FakeOverride</B.a: R|A<kotlin/String>|>|.R|FakeOverride</A.foo: R|kotlin/Unit|>|(String())
}
}
+1 -1
View File
@@ -45,7 +45,7 @@ FILE: localObject.kt
}
this@R|/TestProperty|.F|/TestProperty.x| = R|<local>/value|
F|/TestProperty.x| = R|<local>/value|
}
public final val y: R|kotlin/Int|
@@ -10,5 +10,5 @@ FILE: a.kt
}
FILE: b.kt
public final fun bar(): R|kotlin/Unit| {
this@R|a/A|.R|a/A.foo|()
R|a/A.foo|()
}
+1 -1
View File
@@ -10,7 +10,7 @@ FILE: inner.kt
}
public final fun bar(): R|kotlin/Unit| {
lval i: R|Owner.Inner| = R|/Owner.Inner.Inner|()
lval i: R|Owner.Inner| = this@R|/Owner|.R|/Owner.Inner.Inner|()
R|<local>/i|.R|/Owner.Inner.baz|()
}
+1 -1
View File
@@ -22,7 +22,7 @@ class Owner {
}
fun err() {
<!UNRESOLVED_REFERENCE!>foo<!>()
foo()
this.<!UNRESOLVED_REFERENCE!>foo<!>()
}
}
+2 -2
View File
@@ -10,7 +10,7 @@ FILE: simple.kt
}
public final fun bar(): R|kotlin/Unit| {
lval n: R|Owner.Nested| = R|/Owner.Nested.Nested|()
lval n: R|Owner.Nested| = this@R|/Owner|.R|/Owner.Nested.Nested|()
R|<local>/n|.R|/Owner.Nested.baz|()
}
@@ -30,7 +30,7 @@ FILE: simple.kt
}
public final fun err(): R|kotlin/Unit| {
<Unresolved name: foo>#()
R|/Owner.foo|()
this@R|/Owner.Nested|.<Unresolved name: foo>#()
}
@@ -40,12 +40,12 @@ FILE: nestedClassNameClash.kt
}
public final fun test_5(): R|kotlin/Unit| {
lval result: R|Foo.Result| = R|/Foo.Result.Result|()
lval result: R|Foo.Result| = this@R|/Foo|.R|/Foo.Result.Result|()
this@R|/Foo|.R|/Foo.saveResult|(R|<local>/result|)
}
private final fun getResult(): R|Foo.Result| {
^getResult R|/Foo.Result.Result|()
^getResult this@R|/Foo|.R|/Foo.Result.Result|()
}
private final fun saveResults(results: R|kotlin/collections/List<Foo.Result>|): R|kotlin/Unit| {
+1 -1
View File
@@ -12,7 +12,7 @@ FILE: nestedReturnType.kt
}
public final fun foo(): R|Some.Nested| {
^foo R|/Some.Nested.Nested|()
^foo this@R|/Some|.R|/Some.Nested.Nested|()
}
}
@@ -18,7 +18,7 @@ FILE: protobufExt.kt
}
public final fun <M : R|Message<M>|, T> R|Message<M>|.extF(e: R|Ext<M, T>|): R|T| {
^extF this@R|/Message|.R|FakeOverride</Message.ext: R|T|>|<R|T|>(R|<local>/e|)
^extF this@R|/extF|.R|FakeOverride</Message.ext: R|T|>|<R|T|>(R|<local>/e|)
}
public final fun foo(m: R|MyMessage|, e: R|MyExt|): R|kotlin/Unit| {
R|<local>/m|.R|FakeOverride</Message.ext: R|T|>|<R|kotlin/String|>(R|<local>/e|)
@@ -21,7 +21,7 @@ FILE: simpleFakeOverride.kt
}
public final fun test(): R|kotlin/Unit| {
this@R|/A|.R|FakeOverride</A.foo: R|Some|>|(R|/Some.Some|())
this@R|/B|.R|FakeOverride</A.foo: R|Some|>|(R|/Some.Some|())
}
}
+5 -5
View File
@@ -19,8 +19,8 @@ FILE: three.kt
}
public final fun bar(): R|kotlin/Unit| {
this@R|/A|.R|/A.foo|()
this@R|/Y|.R|/Y.baz|()
this@R|/B|.R|/A.foo|()
this@R|/B|.R|/Y.baz|()
}
}
@@ -30,9 +30,9 @@ FILE: three.kt
}
public final fun test(): R|kotlin/Unit| {
this@R|/A|.R|/A.foo|()
this@R|/B|.R|/B.bar|()
this@R|/Y|.R|/Y.baz|()
this@R|/C|.R|/A.foo|()
this@R|/C|.R|/B.bar|()
this@R|/C|.R|/Y.baz|()
}
}
@@ -10,7 +10,7 @@ FILE: localFunctionsHiding.kt
}
local final fun R|A|.transform(): R|kotlin/Int| {
^transform this@R|/A|.R|/A.x|.<Inapplicable(WRONG_RECEIVER): [<local>/transform]>#()
^transform this@R|<local>/transform|.R|/A.x|.<Inapplicable(WRONG_RECEIVER): [<local>/transform]>#()
}
lval y: R|kotlin/Int| = Int(1)
@@ -22,7 +22,7 @@ FILE: localFunctionsHiding.kt
}
local final fun R|A|.transformX(): R|kotlin/Int| {
^transformX this@R|/A|.R|/A.x|.R|<local>/transform|()
^transformX this@R|<local>/transformX|.R|/A.x|.R|<local>/transform|()
}
lval y: R|kotlin/Int| = Int(1)
@@ -10,7 +10,7 @@ FILE: nestedClassContructor.kt
}
public final fun copy(): R|A.B| {
^copy R|/A.B.B|()
^copy this@R|/A.B|.R|/A.B.B|()
}
}
@@ -46,7 +46,7 @@ FILE: nestedClassContructor.kt
public final fun foo(): R|kotlin/Unit| {
lval a: R|A| = R|/A.A|()
lval c: R|A.C| = R|/A.C.C|()
lval c: R|A.C| = this@R|/E|.R|/A.C.C|()
}
}
@@ -33,7 +33,7 @@ FILE: recursiveCallOnWhenWithSealedClass.kt
throw R|java/lang/Exception.Exception|(String())
}
($subj$ is R|Maybe.Yeah|) -> {
this@R|/Maybe.Yeah|.R|/Maybe.Yeah.meat|
this@R|/Maybe|.R|/Maybe.Yeah.meat|
}
}
@@ -14,7 +14,7 @@ FILE: superMember.kt
}
public final fun bar(): R|kotlin/Unit| {
this@R|/A|.R|/A.foo|()
this@R|/B|.R|/A.foo|()
}
}
@@ -59,7 +59,7 @@ digraph implicitReceiverAsWhenSubject_kt {
this@R|/test_1|.R|kotlin/collections/List.size|
}
($subj$ is R|kotlin/String|) -> {
this@R|kotlin/String|.R|kotlin/String.length|
this@R|/test_1|.R|kotlin/String.length|
}
else -> {
Int(0)
@@ -165,7 +165,7 @@ digraph implicitReceiverAsWhenSubject_kt {
}
($subj$ is R|kotlin/String|) -> {
R|<local>/x|.R|kotlin/String.length|
this@R|kotlin/String|.R|kotlin/String.length|
this@R|/test_2|.R|kotlin/String.length|
}
else -> {
Int(0)
@@ -5,7 +5,7 @@ FILE: implicitReceiverAsWhenSubject.kt
this@R|/test_1|.R|kotlin/collections/List.size|
}
($subj$ is R|kotlin/String|) -> {
this@R|kotlin/String|.R|kotlin/String.length|
this@R|/test_1|.R|kotlin/String.length|
}
else -> {
Int(0)
@@ -21,7 +21,7 @@ FILE: implicitReceiverAsWhenSubject.kt
}
($subj$ is R|kotlin/String|) -> {
R|<local>/x|.R|kotlin/String.length|
this@R|kotlin/String|.R|kotlin/String.length|
this@R|/test_2|.R|kotlin/String.length|
}
else -> {
Int(0)
@@ -77,7 +77,7 @@ digraph implicitReceivers_kt {
26 [label="Enter block"];
27 [label="Access variable this@R|/test_1|"];
28 [label="Function call: this@R|/test_1|.R|/A.foo|()"];
29 [label="Function call: this@R|/A|.R|/A.foo|()"];
29 [label="Function call: this@R|/test_1|.R|/A.foo|()"];
30 [label="Exit block"];
}
31 [label="Exit when branch result"];
@@ -140,7 +140,7 @@ digraph implicitReceivers_kt {
46 [label="Enter block"];
47 [label="Access variable this@R|/test_2|"];
48 [label="Function call: this@R|/test_2|.R|/A.foo|()"];
49 [label="Function call: this@R|/A|.R|/A.foo|()"];
49 [label="Function call: this@R|/test_2|.R|/A.foo|()"];
50 [label="Exit block"];
}
51 [label="Exit when branch result"];
@@ -208,29 +208,29 @@ digraph implicitReceivers_kt {
72 [label="Type operator: this@wb as A"];
73 [label="Access variable this@R|special/anonymous|"];
74 [label="Function call: this@R|special/anonymous|.R|/A.foo|()"];
75 [label="Function call: this@R|/A|.R|/A.foo|()"];
75 [label="Function call: this@R|special/anonymous|.R|/A.foo|()"];
76 [label="Exit function anonymousFunction"];
}
77 [label="Function call: R|kotlin/with|<R|kotlin/Any|, R|kotlin/Unit|>(R|<local>/c|, <L> = wc@fun R|kotlin/Any|.<anonymous>(): R|kotlin/Unit| <kind=EXACTLY_ONCE> {
(this@R|special/anonymous| as R|A|)
this@R|special/anonymous|.R|/A.foo|()
this@R|/A|.R|/A.foo|()
this@R|special/anonymous|.R|/A.foo|()
}
)"];
78 [label="Access variable this@R|special/anonymous|"];
79 [label="Function call: this@R|special/anonymous|.R|/A.foo|()"];
80 [label="Function call: this@R|/A|.R|/A.foo|()"];
80 [label="Function call: this@R|special/anonymous|.R|/A.foo|()"];
81 [label="Exit function anonymousFunction"];
}
82 [label="Function call: R|kotlin/with|<R|kotlin/Any|, R|kotlin/Unit|>(R|<local>/b|, <L> = wb@fun R|kotlin/Any|.<anonymous>(): R|kotlin/Unit| <kind=EXACTLY_ONCE> {
R|kotlin/with|<R|kotlin/Any|, R|kotlin/Unit|>(R|<local>/c|, <L> = wc@fun R|kotlin/Any|.<anonymous>(): R|kotlin/Unit| <kind=EXACTLY_ONCE> {
(this@R|special/anonymous| as R|A|)
this@R|special/anonymous|.R|/A.foo|()
this@R|/A|.R|/A.foo|()
this@R|special/anonymous|.R|/A.foo|()
}
)
this@R|special/anonymous|.R|/A.foo|()
this@R|/A|.R|/A.foo|()
this@R|special/anonymous|.R|/A.foo|()
}
)"];
83 [label="Exit function anonymousFunction"];
@@ -240,11 +240,11 @@ digraph implicitReceivers_kt {
R|kotlin/with|<R|kotlin/Any|, R|kotlin/Unit|>(R|<local>/c|, <L> = wc@fun R|kotlin/Any|.<anonymous>(): R|kotlin/Unit| <kind=EXACTLY_ONCE> {
(this@R|special/anonymous| as R|A|)
this@R|special/anonymous|.R|/A.foo|()
this@R|/A|.R|/A.foo|()
this@R|special/anonymous|.R|/A.foo|()
}
)
this@R|special/anonymous|.R|/A.foo|()
this@R|/A|.R|/A.foo|()
this@R|special/anonymous|.R|/A.foo|()
}
)
}
@@ -317,10 +317,10 @@ digraph implicitReceivers_kt {
104 [label="Enter block"];
105 [label="Access variable this@R|/test_4|"];
106 [label="Function call: this@R|/test_4|.R|/A.foo|()"];
107 [label="Function call: this@R|/A|.R|/A.foo|()"];
107 [label="Function call: this@R|/test_4|.R|/A.foo|()"];
108 [label="Access variable this@R|/test_4|"];
109 [label="Function call: this@R|/test_4|.R|/B.bar|()"];
110 [label="Function call: this@R|/B|.R|/B.bar|()"];
110 [label="Function call: this@R|/test_4|.R|/B.bar|()"];
111 [label="Exit block"];
}
112 [label="Exit when branch result"];
@@ -333,7 +333,7 @@ digraph implicitReceivers_kt {
117 [label="Function call: <Unresolved name: bar>#()"];
118 [label="Access variable this@R|/test_4|"];
119 [label="Function call: this@R|/test_4|.R|/A.foo|()"];
120 [label="Function call: this@R|/A|.R|/A.foo|()"];
120 [label="Function call: this@R|/test_4|.R|/A.foo|()"];
121 [label="Exit block"];
}
122 [label="Exit when branch result"];
@@ -477,10 +477,10 @@ digraph implicitReceivers_kt {
}
172 [label="Jump: ^test_5 when () {
(this@R|/test_5| is R|kotlin/collections/List<*>|) -> {
this@R|kotlin/collections/List|.R|kotlin/collections/List.size|
this@R|/test_5|.R|kotlin/collections/List.size|
}
(this@R|/test_5| is R|kotlin/String|) -> {
this@R|kotlin/String|.R|kotlin/String.length|
this@R|/test_5|.R|kotlin/String.length|
}
else -> {
Int(0)
@@ -23,7 +23,7 @@ FILE: implicitReceivers.kt
when () {
(this@R|/test_1| is R|A|) -> {
this@R|/test_1|.R|/A.foo|()
this@R|/A|.R|/A.foo|()
this@R|/test_1|.R|/A.foo|()
}
else -> {
this@R|/test_1|.<Unresolved name: foo>#()
@@ -42,7 +42,7 @@ FILE: implicitReceivers.kt
}
else -> {
this@R|/test_2|.R|/A.foo|()
this@R|/A|.R|/A.foo|()
this@R|/test_2|.R|/A.foo|()
}
}
@@ -55,11 +55,11 @@ FILE: implicitReceivers.kt
R|kotlin/with|<R|kotlin/Any|, R|kotlin/Unit|>(R|<local>/c|, <L> = wc@fun R|kotlin/Any|.<anonymous>(): R|kotlin/Unit| <kind=EXACTLY_ONCE> {
(this@R|special/anonymous| as R|A|)
this@R|special/anonymous|.R|/A.foo|()
this@R|/A|.R|/A.foo|()
this@R|special/anonymous|.R|/A.foo|()
}
)
this@R|special/anonymous|.R|/A.foo|()
this@R|/A|.R|/A.foo|()
this@R|special/anonymous|.R|/A.foo|()
}
)
}
@@ -79,13 +79,13 @@ FILE: implicitReceivers.kt
this@R|/test_4|.<Unresolved name: bar>#()
<Unresolved name: bar>#()
this@R|/test_4|.R|/A.foo|()
this@R|/A|.R|/A.foo|()
this@R|/test_4|.R|/A.foo|()
}
else -> {
this@R|/test_4|.R|/A.foo|()
this@R|/A|.R|/A.foo|()
this@R|/test_4|.R|/A.foo|()
this@R|/test_4|.R|/B.bar|()
this@R|/test_4|.R|/B.bar|()
this@R|/B|.R|/B.bar|()
}
}
@@ -100,10 +100,10 @@ FILE: implicitReceivers.kt
public final fun R|kotlin/Any|.test_5(): R|kotlin/Int| {
^test_5 when () {
(this@R|/test_5| is R|kotlin/collections/List<*>|) -> {
this@R|kotlin/collections/List|.R|kotlin/collections/List.size|
this@R|/test_5|.R|kotlin/collections/List.size|
}
(this@R|/test_5| is R|kotlin/String|) -> {
this@R|kotlin/String|.R|kotlin/String.length|
this@R|/test_5|.R|kotlin/String.length|
}
else -> {
Int(0)
@@ -113,7 +113,7 @@ FILE: implicitReceivers.kt
}
public final fun R|kotlin/Any|.test_6(): R|kotlin/Unit| {
(this@R|/test_6| as R|kotlin/collections/List<*>|)
this@R|kotlin/collections/List|.R|kotlin/collections/List.size|
this@R|/test_6|.R|kotlin/collections/List.size|
(this@R|/test_6| as R|kotlin/String|)
this@R|kotlin/String|.R|kotlin/String.length|
this@R|/test_6|.R|kotlin/String.length|
}
@@ -2,7 +2,7 @@ FILE: addAllOnJavaCollection.kt
public final fun foo(): R|kotlin/Unit| {
lval y: R|kotlin/collections/List<kotlin/String>| = R|kotlin/collections/listOf|<R|kotlin/String|>(String(Alpha), String(Beta))
lval x: R|java/util/LinkedHashSet<kotlin/String>| = R|java/util/LinkedHashSet.LinkedHashSet|<R|kotlin/String|>().R|kotlin/apply|<R|java/util/LinkedHashSet<kotlin/String>|>(<L> = apply@fun R|java/util/LinkedHashSet<kotlin/String>|.<anonymous>(): R|kotlin/Unit| <kind=EXACTLY_ONCE> {
this@R|java/util/AbstractCollection|.R|FakeOverride<java/util/AbstractCollection.addAll: R|kotlin/Boolean|>|(R|<local>/y|)
this@R|special/anonymous|.R|FakeOverride<java/util/AbstractCollection.addAll: R|kotlin/Boolean|>|(R|<local>/y|)
}
)
lval z: R|java/util/ArrayList<kotlin/String>| = R|java/util/ArrayList.ArrayList|<R|kotlin/String|>()
@@ -15,7 +15,7 @@ FILE: hashTableWithForEach.kt
R|/DEBUG| -> {
^ Q|java/util/Collections|.R|java/util/Collections.unmodifiableSet|<R|kotlin/collections/MutableMap.MutableEntry<K, V>|>(R|kotlin/collections/mutableSetOf|<R|kotlin/collections/MutableMap.MutableEntry<K, V>|>().R|kotlin/apply|<R|kotlin/collections/MutableSet<kotlin/collections/MutableMap.MutableEntry<K, V>>|>(<L> = apply@fun R|kotlin/collections/MutableSet<kotlin/collections/MutableMap.MutableEntry<K, V>>|.<anonymous>(): R|kotlin/Unit| <kind=EXACTLY_ONCE> {
this@R|/SomeHashTable|.R|FakeOverride</SomeHashTable.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|K|, value: R|V|): R|kotlin/Unit| {
this@R|kotlin/collections/MutableSet|.R|FakeOverride<kotlin/collections/MutableSet.add: R|kotlin/Boolean|>|(R|/SomeHashTable.Entry.Entry|<R|K|, R|V|>(R|<local>/key|, R|<local>/value|))
this@R|special/anonymous|.R|FakeOverride<kotlin/collections/MutableSet.add: R|kotlin/Boolean|>|(this@R|/SomeHashTable|.R|/SomeHashTable.Entry.Entry|<R|K|, R|V|>(R|<local>/key|, R|<local>/value|))
}
)
}
@@ -30,16 +30,16 @@ FILE: implicitReceiverOrder.kt
public final fun test(a: R|A|, b: R|B|): R|kotlin/Unit| {
R|kotlin/with|<R|B|, R|kotlin/Int|>(R|<local>/b|, <L> = with@fun R|B|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
R|kotlin/with|<R|A|, R|kotlin/Int|>(R|<local>/a|, <L> = with@fun R|A|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
this@R|/A|.R|/A.foo|()
(this@R|/B|, this@R|special/anonymous|).R|/B.bar|()
this@R|special/anonymous|.R|/A.foo|()
this@R|special/anonymous|.R|/B.bar|()
}
)
}
)
R|kotlin/with|<R|A|, R|kotlin/Int|>(R|<local>/a|, <L> = with@fun R|A|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
R|kotlin/with|<R|B|, R|kotlin/Int|>(R|<local>/b|, <L> = with@fun R|B|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
this@R|/B|.R|/B.foo|()
(this@R|/A|, this@R|special/anonymous|).R|/A.bar|()
this@R|special/anonymous|.R|/B.foo|()
this@R|special/anonymous|.R|/A.bar|()
}
)
}
@@ -5,7 +5,7 @@ FILE: Derived.kt
}
public final fun test(): R|kotlin/Unit| {
this@R|/JavaClass|.R|/JavaClass.myHost|.R|kotlin/String.length|
this@R|/Derived|.R|/JavaClass.myHost|.R|kotlin/String.length|
}
}
@@ -30,7 +30,7 @@ FILE: k.kt
public final val p2: R|kotlin/Int| = Q|j/JavaProtected|.R|j/JavaProtected.javaPProtectedStatic|
public get(): R|kotlin/Int|
public final val p3: R|kotlin/Int| = this@R|j/JavaProtected|.R|j/JavaProtected.javaPProtectedPackage|
public final val p3: R|kotlin/Int| = this@R|k/B|.R|j/JavaProtected.javaPProtectedPackage|
public get(): R|kotlin/Int|
public final fun test(): R|kotlin/Unit| {
@@ -5,10 +5,10 @@ FILE: K1.kt
}
public final fun bar(): R|kotlin/Unit| {
this@R|/KFirst|.R|/KFirst.foo|()
this@R|/J1|.R|/J1.baz|()
this@R|/SuperClass|.R|/SuperClass.superClass|()
this@R|/SuperI|.R|/SuperI.superI|()
this@R|/K2|.R|/KFirst.foo|()
this@R|/K2|.R|/J1.baz|()
this@R|/K2|.R|/SuperClass.superClass|()
this@R|/K2|.R|/SuperI.superI|()
}
}
@@ -15,8 +15,8 @@ FILE: K2.kt
}
public final fun bar(): R|kotlin/Unit| {
this@R|/KFirst|.R|/KFirst.foo|()
this@R|/J1|.R|/J1.baz|()
this@R|/K2|.R|/KFirst.foo|()
this@R|/K2|.R|/J1.baz|()
}
}
@@ -16,8 +16,8 @@ FILE: K2.kt
}
public final fun bar(): R|kotlin/Unit| {
this@R|/KFirst|.R|FakeOverride</KFirst.foo: R|kotlin/Int|>|(Int(1))
this@R|/J1|.R|/J1.baz|()
this@R|/K2|.R|FakeOverride</KFirst.foo: R|kotlin/Int|>|(Int(1))
this@R|/K2|.R|/J1.baz|()
}
}
@@ -1,8 +1,8 @@
FILE: test.kt
public abstract interface UseIterable : R|MyIterable<kotlin/String>| {
public open fun test(): R|kotlin/Unit| {
lval it: R|kotlin/collections/MutableIterator<kotlin/String>| = this@R|kotlin/collections/MutableIterable|.R|FakeOverride<kotlin/collections/MutableIterable.iterator: R|kotlin/collections/MutableIterator<kotlin/String>|>|()
lval split: R|java/util/Spliterator<kotlin/String>| = this@R|java/lang/Iterable|.R|FakeOverride<java/lang/Iterable.spliterator: R|java/util/Spliterator<kotlin/String>|>|()
lval it: R|kotlin/collections/MutableIterator<kotlin/String>| = this@R|/UseIterable|.R|FakeOverride<kotlin/collections/MutableIterable.iterator: R|kotlin/collections/MutableIterator<kotlin/String>|>|()
lval split: R|java/util/Spliterator<kotlin/String>| = this@R|/UseIterable|.R|FakeOverride<java/lang/Iterable.spliterator: R|java/util/Spliterator<kotlin/String>|>|()
}
}
@@ -5,7 +5,7 @@ FILE: User.kt
}
public final fun foo(): R|kotlin/Unit| {
lval sc: R|AbstractClass.StaticClass| = R|/AbstractClass.StaticClass.StaticClass|()
lval sc: R|AbstractClass.StaticClass| = this@R|/User|.R|/AbstractClass.StaticClass.StaticClass|()
}
}
@@ -1,11 +1,11 @@
FILE: test.kt
public final fun <D : R|kotlin/Any|> R|Call<D>|.testForEach(): R|kotlin/Unit| {
this@R|/Call|.R|/Call.arguments|.R|FakeOverride<java/util/Map.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|ft<kotlin/String, kotlin/String?>!|, value: R|ft<kotlin/String, kotlin/String?>!|): R|kotlin/Unit| {
this@R|/testForEach|.R|/Call.arguments|.R|FakeOverride<java/util/Map.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|ft<kotlin/String, kotlin/String?>!|, value: R|ft<kotlin/String, kotlin/String?>!|): R|kotlin/Unit| {
R|<local>/key|.R|kotlin/String.length|
R|<local>/value|.R|kotlin/String.length|
}
)
this@R|/Call|.R|/Call.arguments|.R|kotlin/collections/forEach|<R|ft<kotlin/String, kotlin/String?>!|, R|ft<kotlin/String, kotlin/String?>!|>(<L> = forEach@fun <anonymous>(it: R|kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>!, ft<kotlin/String, kotlin/String?>!>|): R|kotlin/Unit| <kind=UNKNOWN> {
this@R|/testForEach|.R|/Call.arguments|.R|kotlin/collections/forEach|<R|ft<kotlin/String, kotlin/String?>!|, R|ft<kotlin/String, kotlin/String?>!|>(<L> = forEach@fun <anonymous>(it: R|kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>!, ft<kotlin/String, kotlin/String?>!>|): R|kotlin/Unit| <kind=UNKNOWN> {
R|<local>/it|.R|FakeOverride<kotlin/collections/Map.Entry.key: R|ft<kotlin/String, kotlin/String?>!|>|.R|kotlin/String.length|
R|<local>/it|.R|FakeOverride<kotlin/collections/Map.Entry.value: R|ft<kotlin/String, kotlin/String?>!|>|.R|kotlin/String.length|
}
@@ -25,8 +25,8 @@ FILE: K2.kt
}
public final fun main(): R|kotlin/Unit| {
this@R|/KotlinOuter|.R|/KotlinOuter.bar|()
this@R|/J1|.R|/J1.baz|()
this@R|/K2|.R|/KotlinOuter.bar|()
this@R|/K2|.R|/J1.baz|()
}
public final inner class K3 : R|J1.J2| {
@@ -35,10 +35,10 @@ FILE: K2.kt
}
public final fun main(): R|kotlin/Unit| {
this@R|/KotlinOuter.KotlinInner|.R|/KotlinOuter.KotlinInner.foo|()
this@R|/J1.J2|.R|/J1.J2.bazbaz|()
this@R|/KotlinOuter|.R|/KotlinOuter.bar|()
this@R|/J1|.R|/J1.baz|()
this@R|/K2.K3|.R|/KotlinOuter.KotlinInner.foo|()
this@R|/K2.K3|.R|/J1.J2.bazbaz|()
this@R|/K2|.R|/KotlinOuter.bar|()
this@R|/K2|.R|/J1.baz|()
}
}
+1 -1
View File
@@ -7,7 +7,7 @@ FILE: mapList.kt
)
R|<local>/u|.R|/applyX|<R|kotlin/collections/List<kotlin/Int>|>(<L> = applyX@fun R|kotlin/collections/List<kotlin/Int>|.<anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
this@R|special/anonymous|.R|FakeOverride<kotlin/collections/List.contains: R|kotlin/Boolean|>|(Int(1))
this@R|kotlin/collections/List|.R|FakeOverride<kotlin/collections/List.contains: R|kotlin/Boolean|>|(Int(1))
this@R|special/anonymous|.R|FakeOverride<kotlin/collections/List.contains: R|kotlin/Boolean|>|(Int(1))
}
)
}
@@ -27,9 +27,9 @@ FILE: multipleImplicitReceivers.kt
public final fun test(fooImpl: R|IFoo|, invokeImpl: R|IInvoke|): R|kotlin/Unit| {
R|kotlin/with|<R|A|, R|kotlin/Int|>(Q|A|, <L> = with@fun R|A|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
R|kotlin/with|<R|IFoo|, R|kotlin/Int|>(R|<local>/fooImpl|, <L> = with@fun R|IFoo|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
(this@R|/IFoo|, this@R|special/anonymous|).R|/IFoo.foo|
this@R|special/anonymous|.R|/IFoo.foo|
R|kotlin/with|<R|IInvoke|, R|kotlin/Int|>(R|<local>/invokeImpl|, <L> = with@fun R|IInvoke|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
(this@R|/IInvoke|, (this@R|/IFoo|, this@R|special/anonymous|).R|/IFoo.foo|).R|/IInvoke.invoke|()
(this@R|special/anonymous|, this@R|special/anonymous|.R|/IFoo.foo|).R|/IInvoke.invoke|()
}
)
}
+1 -1
View File
@@ -10,7 +10,7 @@ FILE: problems.kt
public get(): R|kotlin/String|
public final fun test(): R|kotlin/Unit| {
R|/anonymous.name|
this@R|/anonymous|.R|/anonymous.name|
}
}
@@ -45,7 +45,7 @@ FILE: topLevelResolve.kt
}
public final fun testWith(): R|kotlin/Unit| {
lval length: R|kotlin/Int| = R|kotlin/with|<R|kotlin/String|, R|kotlin/Int|>(String(), <L> = with@fun R|kotlin/String|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
this@R|kotlin/String|.R|kotlin/String.length|
this@R|special/anonymous|.R|kotlin/String.length|
}
)
lval indices: R|kotlin/ranges/IntRange| = R|kotlin/with|<R|kotlin/String|, R|kotlin/ranges/IntRange|>(String(), <L> = with@fun R|kotlin/String|.<anonymous>(): R|kotlin/ranges/IntRange| <kind=EXACTLY_ONCE> {
@@ -1,10 +1,10 @@
FILE: typeParameterDerived.kt
public final inline fun <K, V, VA : R|V|> R|kotlin/collections/MutableMap<K, V>|.getOrPut(key: R|K|, defaultValue: R|(K) -> VA|, postCompute: R|(VA) -> kotlin/Unit|): R|V| {
lval value: R|V?| = this@R|kotlin/collections/Map|.R|FakeOverride<kotlin/collections/Map.get: R|V?|>|(R|<local>/key|)
lval value: R|V?| = this@R|/getOrPut|.R|FakeOverride<kotlin/collections/Map.get: R|V?|>|(R|<local>/key|)
^getOrPut when () {
==(R|<local>/value|, Null(null)) -> {
lval answer: R|VA| = R|<local>/defaultValue|.R|FakeOverride<kotlin/Function1.invoke: R|VA|>|(R|<local>/key|)
this@R|kotlin/collections/MutableMap|.R|FakeOverride<kotlin/collections/MutableMap.put: R|V?|>|(R|<local>/key|, R|<local>/answer|)
this@R|/getOrPut|.R|FakeOverride<kotlin/collections/MutableMap.put: R|V?|>|(R|<local>/key|, R|<local>/answer|)
R|<local>/postCompute|.R|FakeOverride<kotlin/Function1.invoke: R|kotlin/Unit|>|(R|<local>/answer|)
R|<local>/answer|
}
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
interface Expr {
public fun ttFun() : Int = 12
}
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
class Test {
class Nested {
val value = "OK"
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
class A {
fun foo() = "OK"
}
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
open class A
class B : A() {
@@ -4,6 +4,6 @@ class A() {
val x = 1
companion object {
val y = <!UNRESOLVED_REFERENCE!>x<!>
val y = x
}
}
@@ -4,6 +4,6 @@ class Test {
fun test(): Int = 12
companion object {
val a = <!UNRESOLVED_REFERENCE!>test<!>() // Check if resolver will be able to infer type of a variable
val a = test() // Check if resolver will be able to infer type of a variable
}
}
@@ -8,7 +8,7 @@ class My {
companion object {
val y = <!UNRESOLVED_REFERENCE!>foo<!>()
val y = foo()
val u = bar()
@@ -7,7 +7,7 @@ public class Z {
class Local {
public inline fun a() {
<!UNRESOLVED_REFERENCE!>privateProperty<!>
privateProperty
}
}
@@ -1,6 +1,6 @@
enum class E {
E1 {
override fun foo() = <!UNRESOLVED_REFERENCE!>outerFun<!>() + super.<!UNRESOLVED_REFERENCE!>outerFun<!>()
override fun foo() = outerFun() <!AMBIGUITY!>+<!> super.<!UNRESOLVED_REFERENCE!>outerFun<!>()
},
E2 {
override fun foo() = E1.foo()
@@ -12,8 +12,8 @@ class Test {
fun more(): InnerClass {
val b = InnerClass()
val testVal = <!UNRESOLVED_REFERENCE!>inClass<!>
<!UNRESOLVED_REFERENCE!>foo<!>()
val testVal = inClass
foo()
return b
}
@@ -12,8 +12,8 @@ class Test {
fun more(): InnerClass {
val b = InnerClass()
val testVal = <!UNRESOLVED_REFERENCE!>inClass<!>
<!UNRESOLVED_REFERENCE!>foo<!>()
val testVal = inClass
foo()
return b
}
@@ -3,10 +3,10 @@ class Outer {
if (outerState > 0) return outerState
class Local {
val localState = <!UNRESOLVED_REFERENCE!>outerState<!>
val localState = outerState
inner class LocalInner {
val o = <!UNRESOLVED_REFERENCE!>outerState<!>
val o = outerState
val l = localState
}
}
@@ -2,7 +2,7 @@ class Outer {
class Nested {
fun foo() {
class Local {
val state = <!UNRESOLVED_REFERENCE!>outerState<!>
val state = outerState
}
}
}
@@ -5,8 +5,8 @@ class Outer {
val property = ""
class Nested {
fun f() = <!UNRESOLVED_REFERENCE!>function<!>()
fun g() = <!UNRESOLVED_REFERENCE!>property<!>
fun f() = function()
fun g() = property
fun h() = this@Outer.function()
fun i() = this@Outer.property
}
@@ -4,6 +4,6 @@ open class Base {
class Derived : Base() {
class Nested {
fun bar() = <!UNRESOLVED_REFERENCE!>foo<!>()
fun bar() = foo()
}
}
@@ -2,7 +2,7 @@
// KT-5362 Compiler crashes on access to extension method from nested class
class Outer {
class Nested{
fun foo(s: String) = s.<!UNRESOLVED_REFERENCE!>extension<!>()
fun foo(s: String) = s.extension()
}
private fun String.extension(): String = this
@@ -29,8 +29,8 @@ open class A<T> : J() {
fun test() {
foo()
bar()
val a: Int = <!UNRESOLVED_REFERENCE!>baz<!>()
val b: T = <!UNRESOLVED_REFERENCE!>baz<!>()
val a: Int = baz()
val b: T = baz()
}
}
@@ -29,8 +29,8 @@ open class A<T> : J() {
fun test() {
foo()
bar()
val a: Int = <!UNRESOLVED_REFERENCE!>baz<!>()
val b: T = <!UNRESOLVED_REFERENCE!>baz<!>()
val a: Int = baz()
val b: T = baz()
}
}
@@ -14,20 +14,20 @@ class A {
init {
foo()
bar()
<!UNRESOLVED_REFERENCE!>baz<!>()
baz()
}
fun test1() {
foo()
bar()
<!UNRESOLVED_REFERENCE!>baz<!>()
baz()
}
object O {
fun test() {
foo()
bar()
<!UNRESOLVED_REFERENCE!>baz<!>()
baz()
}
}
@@ -14,20 +14,20 @@ class A {
init {
foo()
bar()
<!UNRESOLVED_REFERENCE!>baz<!>()
baz()
}
fun test1() {
foo()
bar()
<!UNRESOLVED_REFERENCE!>baz<!>()
baz()
}
object O {
fun test() {
foo()
bar()
<!UNRESOLVED_REFERENCE!>baz<!>()
baz()
}
}
@@ -5,7 +5,7 @@ open class VeryBase {
open class Base {
protected fun foo() {
bar() // Ok
<!UNRESOLVED_REFERENCE!>baz<!>() // Ok
<!INAPPLICABLE_CANDIDATE!>baz<!>() // Ok
}
inner class Inner {
@@ -13,7 +13,7 @@ open class Base {
foo() // Ok
bar() // Ok
gav() // Ok
<!UNRESOLVED_REFERENCE!>baz<!>() // Ok
<!INAPPLICABLE_CANDIDATE!>baz<!>() // Ok
}
}
@@ -22,7 +22,7 @@ open class Base {
foo() // Ok
bar() // Ok
gav() // Ok
<!UNRESOLVED_REFERENCE!>baz<!>() // Ok
<!INAPPLICABLE_CANDIDATE!>baz<!>() // Ok
}
}
@@ -48,7 +48,7 @@ class Derived : Base() {
foo() // Ok
<!INAPPLICABLE_CANDIDATE!>gav<!>() // Ok
<!INAPPLICABLE_CANDIDATE!>bar<!>()
<!UNRESOLVED_REFERENCE!>baz<!>()
<!INAPPLICABLE_CANDIDATE!>baz<!>()
prop = 0
}
@@ -57,7 +57,7 @@ class Derived : Base() {
foo() // Ok
<!INAPPLICABLE_CANDIDATE!>gav<!>() // Ok
<!INAPPLICABLE_CANDIDATE!>bar<!>()
<!UNRESOLVED_REFERENCE!>baz<!>()
<!INAPPLICABLE_CANDIDATE!>baz<!>()
prop = 0
}
}
@@ -66,7 +66,7 @@ class Derived : Base() {
fun test2() {
<!INAPPLICABLE_CANDIDATE!>gav<!>() // Ok
<!INAPPLICABLE_CANDIDATE!>bar<!>()
<!UNRESOLVED_REFERENCE!>baz<!>()
<!INAPPLICABLE_CANDIDATE!>baz<!>()
prop = 0
}
}
@@ -20,8 +20,8 @@ typealias CStr = JHost.Consumer<String>
typealias CStrList = JHost.Consumer<List<String>>
typealias C2<T> = JHost.Consumer2<T, T>
val test1 = <!UNRESOLVED_REFERENCE!>R<!> { }
val test2 = <!UNRESOLVED_REFERENCE!>C<!><String> { s -> <!AMBIGUITY!>println<!>(s.<!UNRESOLVED_REFERENCE!>length<!>) }
val test3 = <!UNRESOLVED_REFERENCE!>CStr<!> { s -> <!AMBIGUITY!>println<!>(s.<!UNRESOLVED_REFERENCE!>length<!>) }
val test4 = <!UNRESOLVED_REFERENCE!>CStrList<!> { ss -> <!AMBIGUITY, UNRESOLVED_REFERENCE, UNRESOLVED_REFERENCE!>for (s in ss) { <!AMBIGUITY!>println<!>(s.<!UNRESOLVED_REFERENCE!>length<!>) }<!> }
val test5 = <!UNRESOLVED_REFERENCE!>C2<!><Int> { a, b -> val x: Int = a <!AMBIGUITY!>+<!> b; println(x)}
val test1 = R { }
val test2 = C<String> { s -> println(s.length) }
val test3 = CStr { s -> <!AMBIGUITY!>println<!>(s.<!UNRESOLVED_REFERENCE!>length<!>) }
val test4 = CStrList { ss -> <!UNRESOLVED_REFERENCE, UNRESOLVED_REFERENCE, UNRESOLVED_REFERENCE!>for (s in ss) { <!AMBIGUITY!>println<!>(s.<!UNRESOLVED_REFERENCE!>length<!>) }<!> }
val test5 = C2<Int> { a, b -> val x: Int = a <!AMBIGUITY!>+<!> b; println(x)}
+1 -1
View File
@@ -484,7 +484,7 @@ FILE fqName:<root> fileName:/enum.kt
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:z type:kotlin.Int visibility:private [final]' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.TestEnum4.TEST2 declared in <root>.TestEnum4.TEST2' type=<root>.TestEnum4.TEST2 origin=null
value: CALL 'public final fun <get-x> (): kotlin.Int declared in <root>.TestEnum4' type=kotlin.Int origin=null
$this: GET_VAR '<this>: <root>.TestEnum4 declared in <root>.TestEnum4' type=<root>.TestEnum4 origin=null
$this: GET_VAR '<this>: <root>.TestEnum4.TEST2 declared in <root>.TestEnum4.TEST2' type=<root>.TestEnum4.TEST2 origin=null
FUN name:foo visibility:public modality:FINAL <> ($this:<root>.TestEnum4.TEST2) returnType:kotlin.Unit
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum4.TEST2
BLOCK_BODY
-3
View File
@@ -140,7 +140,6 @@ FILE fqName:<root> fileName:/initVar.kt
VALUE_PARAMETER name:value index:0 type:kotlin.Int
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.TestInitVarWithCustomSetter declared in <root>.TestInitVarWithCustomSetter' type=<root>.TestInitVarWithCustomSetter origin=null
value: GET_VAR 'value: kotlin.Int declared in <root>.TestInitVarWithCustomSetter.<set-x>' type=kotlin.Int origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
@@ -172,7 +171,6 @@ FILE fqName:<root> fileName:/initVar.kt
VALUE_PARAMETER name:value index:0 type:kotlin.Int
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.TestInitVarWithCustomSetterWithExplicitCtor declared in <root>.TestInitVarWithCustomSetterWithExplicitCtor' type=<root>.TestInitVarWithCustomSetterWithExplicitCtor origin=null
value: GET_VAR 'value: kotlin.Int declared in <root>.TestInitVarWithCustomSetterWithExplicitCtor.<set-x>' type=kotlin.Int origin=null
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
@@ -213,7 +211,6 @@ FILE fqName:<root> fileName:/initVar.kt
VALUE_PARAMETER name:value index:0 type:kotlin.Int
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.TestInitVarWithCustomSetterInCtor declared in <root>.TestInitVarWithCustomSetterInCtor' type=<root>.TestInitVarWithCustomSetterInCtor origin=null
value: GET_VAR 'value: kotlin.Int declared in <root>.TestInitVarWithCustomSetterInCtor.<set-x>' type=kotlin.Int origin=null
CONSTRUCTOR visibility:public <> () returnType:<root>.TestInitVarWithCustomSetterInCtor
BLOCK_BODY
@@ -37,7 +37,7 @@ FILE fqName:<root> fileName:/outerClassAccess.kt
$receiver: VALUE_PARAMETER name:<this> type:<root>.Outer
BLOCK_BODY
CALL 'public final fun foo (): kotlin.Unit declared in <root>.Outer' type=kotlin.Unit origin=null
$this: GET_VAR '<this>: <root>.Outer declared in <root>.Outer' type=<root>.Outer origin=null
$this: GET_VAR '<this>: <root>.Outer declared in <root>.Outer.Inner.Inner2.test3' type=<root>.Outer origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -59,7 +59,6 @@ FILE fqName:<root> fileName:/classLevelProperties.kt
VALUE_PARAMETER name:value index:0 type:kotlin.Int
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test4 type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.C declared in <root>.C' type=<root>.C origin=null
value: GET_VAR 'value: kotlin.Int declared in <root>.C.<set-test4>' type=kotlin.Int origin=null
PROPERTY name:test5 visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:test5 type:kotlin.Int visibility:private
@@ -1,28 +0,0 @@
FILE fqName:<root> fileName:/suppressedNonPublicCall.kt
CLASS CLASS name:C modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.C
CONSTRUCTOR visibility:public <> () returnType:<root>.C [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:C modality:FINAL visibility:public superTypes:[kotlin.Any]'
FUN name:bar visibility:internal modality:FINAL <> ($this:<root>.C) returnType:kotlin.Unit
$this: VALUE_PARAMETER name:<this> type:<root>.C
BLOCK_BODY
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:foo visibility:public modality:FINAL <> ($receiver:<root>.C) returnType:kotlin.Unit [inline]
$receiver: VALUE_PARAMETER name:<this> type:<root>.C
BLOCK_BODY
CALL 'internal final fun bar (): kotlin.Unit declared in <root>.C' type=kotlin.Unit origin=null
$this: GET_VAR '<this>: <root>.C declared in <root>.C' type=<root>.C origin=null
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
class C {
internal fun bar() {}
}
@@ -242,6 +242,6 @@ FILE fqName:<root> fileName:/complexAugmentedAssignment.kt
VALUE_PARAMETER name:v index:0 type:<root>.B
BLOCK_BODY
CALL 'public final fun plusAssign (b: <root>.B): kotlin.Unit [operator] declared in <root>.Host' type=kotlin.Unit origin=null
$this: GET_VAR '<this>: <root>.Host declared in <root>.Host' type=<root>.Host origin=null
$this: GET_VAR '<this>: <root>.Host declared in <root>.test3' type=<root>.Host origin=null
b: CONSTRUCTOR_CALL 'public constructor <init> (s: kotlin.Int) [primary] declared in <root>.B' type=<root>.B origin=null
s: CONST Int type=kotlin.Int value=1000
@@ -151,7 +151,7 @@ FILE fqName:<root> fileName:/floatingPointCompareTo.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test1fr (x: kotlin.Float): kotlin.Int declared in <root>'
CALL 'public open fun compareTo (other: kotlin.Float): kotlin.Int [operator] declared in kotlin.Float' type=kotlin.Int origin=null
$this: GET_VAR '<this>: kotlin.Float declared in kotlin.Float' type=kotlin.Float origin=null
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test1fr' type=kotlin.Float origin=null
other: GET_VAR 'x: kotlin.Float declared in <root>.test1fr' type=kotlin.Float origin=null
FUN name:test2fr visibility:public modality:FINAL <> ($receiver:kotlin.Float, x:kotlin.Any) returnType:kotlin.Boolean
$receiver: VALUE_PARAMETER name:<this> type:kotlin.Float
@@ -164,7 +164,7 @@ FILE fqName:<root> fileName:/floatingPointCompareTo.kt
GET_VAR 'x: kotlin.Any declared in <root>.test2fr' type=kotlin.Any origin=null
then: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
arg0: CALL 'public open fun compareTo (other: kotlin.Float): kotlin.Int [operator] declared in kotlin.Float' type=kotlin.Int origin=null
$this: GET_VAR '<this>: kotlin.Float declared in kotlin.Float' type=kotlin.Float origin=null
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test2fr' type=kotlin.Float origin=null
other: GET_VAR 'x: kotlin.Any declared in <root>.test2fr' type=kotlin.Float origin=null
arg1: CONST Int type=kotlin.Int value=0
BRANCH
@@ -181,7 +181,7 @@ FILE fqName:<root> fileName:/floatingPointCompareTo.kt
GET_VAR 'x: kotlin.Any declared in <root>.test3fr' type=kotlin.Any origin=null
then: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
arg0: CALL 'public final fun compareTo (other: kotlin.Double): kotlin.Int [operator] declared in kotlin.Float' type=kotlin.Int origin=null
$this: GET_VAR '<this>: kotlin.Float declared in kotlin.Float' type=kotlin.Float origin=null
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test3fr' type=kotlin.Float origin=null
other: GET_VAR 'x: kotlin.Any declared in <root>.test3fr' type=kotlin.Double origin=null
arg1: CONST Int type=kotlin.Int value=0
BRANCH
@@ -187,7 +187,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test1fr (x: kotlin.Float): kotlin.Boolean declared in <root>'
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
$this: GET_VAR '<this>: kotlin.Any declared in kotlin.Any' type=kotlin.Any origin=null
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test1fr' type=kotlin.Float origin=null
other: GET_VAR 'x: kotlin.Float declared in <root>.test1fr' type=kotlin.Float origin=null
FUN name:test2fr visibility:public modality:FINAL <> ($receiver:kotlin.Float, x:kotlin.Float?) returnType:kotlin.Boolean
$receiver: VALUE_PARAMETER name:<this> type:kotlin.Float
@@ -195,7 +195,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test2fr (x: kotlin.Float?): kotlin.Boolean declared in <root>'
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
$this: GET_VAR '<this>: kotlin.Any declared in kotlin.Any' type=kotlin.Any origin=null
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test2fr' type=kotlin.Float origin=null
other: GET_VAR 'x: kotlin.Float? declared in <root>.test2fr' type=kotlin.Float? origin=null
FUN name:test3fr visibility:public modality:FINAL <> ($receiver:kotlin.Float, x:kotlin.Any) returnType:kotlin.Boolean
$receiver: VALUE_PARAMETER name:<this> type:kotlin.Float
@@ -203,7 +203,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test3fr (x: kotlin.Any): kotlin.Boolean declared in <root>'
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
$this: GET_VAR '<this>: kotlin.Any declared in kotlin.Any' type=kotlin.Any origin=null
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test3fr' type=kotlin.Float origin=null
other: GET_VAR 'x: kotlin.Any declared in <root>.test3fr' type=kotlin.Any origin=null
FUN name:test4fr visibility:public modality:FINAL <> ($receiver:kotlin.Float, x:kotlin.Number) returnType:kotlin.Boolean
$receiver: VALUE_PARAMETER name:<this> type:kotlin.Float
@@ -211,7 +211,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test4fr (x: kotlin.Number): kotlin.Boolean declared in <root>'
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
$this: GET_VAR '<this>: kotlin.Any declared in kotlin.Any' type=kotlin.Any origin=null
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test4fr' type=kotlin.Float origin=null
other: GET_VAR 'x: kotlin.Number declared in <root>.test4fr' type=kotlin.Number origin=null
FUN name:test5fr visibility:public modality:FINAL <> ($receiver:kotlin.Float, x:kotlin.Any) returnType:kotlin.Boolean
$receiver: VALUE_PARAMETER name:<this> type:kotlin.Float
@@ -223,7 +223,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=kotlin.Float
GET_VAR 'x: kotlin.Any declared in <root>.test5fr' type=kotlin.Any origin=null
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
$this: GET_VAR '<this>: kotlin.Any declared in kotlin.Any' type=kotlin.Any origin=null
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test5fr' type=kotlin.Float origin=null
other: GET_VAR 'x: kotlin.Any declared in <root>.test5fr' type=kotlin.Float origin=null
BRANCH
if: CONST Boolean type=kotlin.Boolean value=true
@@ -238,7 +238,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=kotlin.Double
GET_VAR 'x: kotlin.Any declared in <root>.test6fr' type=kotlin.Any origin=null
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
$this: GET_VAR '<this>: kotlin.Any declared in kotlin.Any' type=kotlin.Any origin=null
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test6fr' type=kotlin.Float origin=null
other: GET_VAR 'x: kotlin.Any declared in <root>.test6fr' type=kotlin.Double origin=null
BRANCH
if: CONST Boolean type=kotlin.Boolean value=true
@@ -73,7 +73,7 @@ FILE fqName:<root> fileName:/forWithImplicitReceivers.kt
RETURN type=kotlin.Nothing from='public open fun hasNext (): kotlin.Boolean [operator] declared in <root>.IReceiver'
CALL 'public final fun greater (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=GT
arg0: CALL 'public final fun <get-value> (): kotlin.Int declared in <root>.IntCell' type=kotlin.Int origin=null
$this: GET_VAR '<this>: <root>.IntCell declared in <root>.IntCell' type=<root>.IntCell origin=null
$this: GET_VAR '<this>: <root>.IntCell declared in <root>.IReceiver.hasNext' type=<root>.IntCell origin=null
arg1: CONST Int type=kotlin.Int value=0
FUN name:next visibility:public modality:OPEN <> ($this:<root>.IReceiver, $receiver:<root>.IntCell) returnType:kotlin.Int [operator]
$this: VALUE_PARAMETER name:<this> type:<root>.IReceiver
@@ -83,9 +83,9 @@ FILE fqName:<root> fileName:/forWithImplicitReceivers.kt
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:kotlin.Int [val]
CALL 'public final fun <get-value> (): kotlin.Int declared in <root>.IntCell' type=kotlin.Int origin=null
$this: GET_VAR '<this>: <root>.IntCell declared in <root>.IntCell' type=<root>.IntCell origin=null
$this: GET_VAR '<this>: <root>.IntCell declared in <root>.IReceiver.next' type=<root>.IntCell origin=null
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.IntCell declared in <root>.IntCell' type=<root>.IntCell origin=null
receiver: GET_VAR '<this>: <root>.IntCell declared in <root>.IReceiver.next' type=<root>.IntCell origin=null
value: CALL 'public final fun dec (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_0: kotlin.Int [val] declared in <root>.IReceiver.next' type=kotlin.Int origin=null
GET_VAR 'val tmp_0: kotlin.Int [val] declared in <root>.IReceiver.next' type=kotlin.Int origin=null
@@ -109,13 +109,13 @@ FILE fqName:<root> fileName:/forWithImplicitReceivers.kt
GET_OBJECT 'CLASS OBJECT name:FiveTimes modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.FiveTimes
VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:<root>.IntCell [val]
CALL 'public open fun iterator (): <root>.IntCell [operator] declared in <root>.IReceiver' type=<root>.IntCell origin=null
$this: GET_VAR '<this>: <root>.IReceiver declared in <root>.IReceiver' type=<root>.IReceiver origin=null
$this: GET_VAR '<this>: <root>.IReceiver declared in <root>.test' type=<root>.IReceiver origin=null
WHILE label=null origin=FOR_LOOP_INNER_WHILE
condition: CALL 'public open fun hasNext (): kotlin.Boolean [operator] declared in <root>.IReceiver' type=kotlin.Boolean origin=null
$this: GET_VAR '<this>: <root>.IReceiver declared in <root>.IReceiver' type=<root>.IReceiver origin=null
$this: GET_VAR '<this>: <root>.IReceiver declared in <root>.test' type=<root>.IReceiver origin=null
body: BLOCK type=kotlin.Unit origin=null
VAR name:i type:kotlin.Int [val]
CALL 'public open fun next (): kotlin.Int [operator] declared in <root>.IReceiver' type=kotlin.Int origin=null
$this: GET_VAR '<this>: <root>.IReceiver declared in <root>.IReceiver' type=<root>.IReceiver origin=null
$this: GET_VAR '<this>: <root>.IReceiver declared in <root>.test' type=<root>.IReceiver origin=null
CALL 'public final fun println (message: kotlin.Int): kotlin.Unit [inline] declared in kotlin.io' type=kotlin.Unit origin=null
message: GET_VAR 'val i: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
@@ -55,7 +55,7 @@ FILE fqName:<root> fileName:/implicitCastToTypeParameter.kt
TYPE_OP type=T of <root>.Bar origin=CAST typeOperand=T of <root>.Bar
GET_VAR 'arg: kotlin.Any declared in <root>.Bar.test' type=kotlin.Any origin=null
CALL 'public final fun useT (t: T of <root>.Bar): kotlin.Unit declared in <root>.Bar' type=kotlin.Unit origin=null
$this: GET_VAR '<this>: <root>.Bar declared in <root>.Bar' type=<root>.Bar<*> origin=null
$this: GET_VAR '<this>: <root>.Bar declared in <root>.Bar' type=<root>.Bar<T of <root>.Bar> origin=null
t: GET_VAR 'arg: kotlin.Any declared in <root>.Bar.test' type=T of <root>.Bar origin=null
FUN name:useT visibility:public modality:FINAL <> ($this:<root>.Bar, t:T of <root>.Bar) returnType:kotlin.Unit
$this: VALUE_PARAMETER name:<this> type:<root>.Bar
@@ -8,14 +8,14 @@ FILE fqName:<root> fileName:/Derived.kt
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
SET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:kotlin.Int visibility:public' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.Base declared in <root>.Base' type=<root>.Base origin=null
receiver: GET_VAR '<this>: <root>.Derived declared in <root>.Derived' type=<root>.Derived origin=null
value: CONST Int type=kotlin.Int value=0
FUN name:getValue visibility:public modality:FINAL <> ($this:<root>.Derived) returnType:kotlin.Int
$this: VALUE_PARAMETER name:<this> type:<root>.Derived
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun getValue (): kotlin.Int declared in <root>.Derived'
GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:kotlin.Int visibility:public' type=kotlin.Int origin=GET_PROPERTY
receiver: GET_VAR '<this>: <root>.Base declared in <root>.Base' type=<root>.Base origin=null
receiver: GET_VAR '<this>: <root>.Derived declared in <root>.Derived' type=<root>.Derived origin=null
FUN name:setValue visibility:public modality:FINAL <> ($this:<root>.Derived, value:kotlin.Int) returnType:kotlin.Unit
$this: VALUE_PARAMETER name:<this> type:<root>.Derived
VALUE_PARAMETER name:value index:0 type:kotlin.Int
+3 -3
View File
@@ -77,12 +77,12 @@ FILE fqName:<root> fileName:/kt16904.kt
BLOCK_BODY
CALL 'public final fun plusAssign (x: kotlin.Int): kotlin.Unit [operator] declared in <root>.B' type=kotlin.Unit origin=null
$this: CALL 'public final fun <get-x> (): <root>.B declared in <root>.A' type=<root>.B origin=null
$this: GET_VAR '<this>: <root>.A declared in <root>.A' type=<root>.A origin=null
$this: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1' type=<root>.Test1 origin=null
x: CONST Int type=kotlin.Int value=42
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:y type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
value: CALL 'public final fun plus (other: kotlin.Int): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-y> (): kotlin.Int declared in <root>.A' type=kotlin.Int origin=null
$this: GET_VAR '<this>: <root>.A declared in <root>.A' type=<root>.A origin=null
$this: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1' type=<root>.Test1 origin=null
other: CONST Int type=kotlin.Int value=42
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test1 modality:FINAL visibility:public superTypes:[<root>.A]'
@@ -126,7 +126,7 @@ FILE fqName:<root> fileName:/kt16904.kt
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
SET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:field type:kotlin.Int visibility:public' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.J declared in <root>.J' type=<root>.J origin=null
receiver: GET_VAR '<this>: <root>.Test2 declared in <root>.Test2' type=<root>.Test2 origin=null
value: CONST Int type=kotlin.Int value=42
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
@@ -85,7 +85,7 @@ FILE fqName:<root> fileName:/multipleThisReferences.kt
EXPRESSION_BODY
CALL 'public final fun plus (other: kotlin.Int): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-x> (): kotlin.Int declared in <root>.Outer.Inner' type=kotlin.Int origin=null
$this: GET_VAR '<this>: <root>.Outer.Inner declared in <root>.Outer.Inner' type=<root>.Outer.Inner origin=null
$this: GET_VAR '<this>: <uninitialized parent>.<anonymous> declared in <no parent>.<anonymous>' type=<uninitialized parent>.<anonymous> origin=null
other: GET_VAR 'y: kotlin.Int declared in <root>.Host.<init>' type=kotlin.Int origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-xx> visibility:public modality:FINAL <> ($this:<root>.Host.test.<no name provided>) returnType:kotlin.Int
correspondingProperty: PROPERTY name:xx visibility:public modality:FINAL [val]
+2 -2
View File
@@ -46,7 +46,7 @@ FILE fqName:<root> fileName:/safeCalls.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun extLength (): kotlin.Int declared in <root>.IHost'
CALL 'public open fun <get-length> (): kotlin.Int declared in kotlin.String' type=kotlin.Int origin=null
$this: GET_VAR '<this>: kotlin.String declared in kotlin.String' type=kotlin.String origin=null
$this: GET_VAR '<this>: kotlin.String declared in <root>.IHost.extLength' type=kotlin.String origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
@@ -92,7 +92,7 @@ FILE fqName:<root> fileName:/safeCalls.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test5 (s: kotlin.String?): kotlin.Int? declared in <root>'
CALL 'public open fun extLength (): kotlin.Int declared in <root>.IHost' type=kotlin.Int? origin=null
$this: GET_VAR '<this>: <root>.IHost declared in <root>.IHost' type=<root>.IHost origin=null
$this: GET_VAR '<this>: <root>.IHost declared in <root>.test5' type=<root>.IHost origin=null
FUN name:foo visibility:public modality:FINAL <> ($receiver:kotlin.Int) returnType:kotlin.Int
$receiver: VALUE_PARAMETER name:<this> type:kotlin.Int
BLOCK_BODY
@@ -6,7 +6,7 @@ FILE fqName:<root> fileName:/samConversions.kt
CALL 'public open fun runStatic (r: java.lang.Runnable?): kotlin.Unit [operator] declared in <root>.J' type=kotlin.Unit origin=null
r: GET_VAR 'a: java.lang.Runnable declared in <root>.test0' type=java.lang.Runnable origin=null
CALL 'public open fun runIt (r: java.lang.Runnable?): kotlin.Unit [operator] declared in <root>.J' type=kotlin.Unit origin=null
$this: GET_VAR '<this>: <root>.J declared in <root>.J' type=<root>.J origin=null
$this: GET_VAR '<this>: <root>.J declared in <root>.test0' type=<root>.J origin=null
r: GET_VAR 'a: java.lang.Runnable declared in <root>.test0' type=java.lang.Runnable origin=null
FUN name:test1 visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
@@ -19,7 +19,7 @@ FILE fqName:<root> fileName:/samConversions.kt
$receiver: VALUE_PARAMETER name:<this> type:<root>.J
BLOCK_BODY
CALL 'public open fun runIt (r: java.lang.Runnable?): kotlin.Unit [operator] declared in <root>.J' type=kotlin.Unit origin=null
$this: GET_VAR '<this>: <root>.J declared in <root>.J' type=<root>.J origin=null
$this: GET_VAR '<this>: <root>.J declared in <root>.test2' type=<root>.J origin=null
r: FUN_EXPR type=kotlin.Function0<kotlin.Unit> origin=LAMBDA
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
@@ -29,7 +29,7 @@ FILE fqName:<root> fileName:/samConversions.kt
VALUE_PARAMETER name:a index:0 type:kotlin.Function0<kotlin.Unit>
BLOCK_BODY
CALL 'public open fun run2 (r1: java.lang.Runnable?, r2: java.lang.Runnable?): kotlin.Unit [operator] declared in <root>.J' type=kotlin.Unit origin=null
$this: GET_VAR '<this>: <root>.J declared in <root>.J' type=<root>.J origin=null
$this: GET_VAR '<this>: <root>.J declared in <root>.test3' type=<root>.J origin=null
r1: GET_VAR 'a: kotlin.Function0<kotlin.Unit> declared in <root>.test3' type=kotlin.Function0<kotlin.Unit> origin=null
r2: GET_VAR 'a: kotlin.Function0<kotlin.Unit> declared in <root>.test3' type=kotlin.Function0<kotlin.Unit> origin=null
FUN name:test4 visibility:public modality:FINAL <> ($receiver:<root>.J, a:kotlin.Function0<kotlin.Unit>, b:kotlin.Function0<kotlin.Unit>, flag:kotlin.Boolean) returnType:kotlin.Unit
@@ -39,7 +39,7 @@ FILE fqName:<root> fileName:/samConversions.kt
VALUE_PARAMETER name:flag index:2 type:kotlin.Boolean
BLOCK_BODY
CALL 'public open fun runIt (r: java.lang.Runnable?): kotlin.Unit [operator] declared in <root>.J' type=kotlin.Unit origin=null
$this: GET_VAR '<this>: <root>.J declared in <root>.J' type=<root>.J origin=null
$this: GET_VAR '<this>: <root>.J declared in <root>.test4' type=<root>.J origin=null
r: WHEN type=kotlin.Function0<kotlin.Unit> origin=IF
BRANCH
if: GET_VAR 'flag: kotlin.Boolean declared in <root>.test4' type=kotlin.Boolean origin=null
@@ -15,7 +15,7 @@ FILE fqName:<root> fileName:/Derived.kt
GET_VAR 'v: kotlin.Any declared in <root>.Derived.setValue' type=kotlin.Any origin=null
then: BLOCK type=kotlin.Unit origin=null
SET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:kotlin.String? visibility:public' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.Base declared in <root>.Base' type=<root>.Base origin=null
receiver: GET_VAR '<this>: <root>.Derived declared in <root>.Derived' type=<root>.Derived origin=null
value: GET_VAR 'v: kotlin.Any declared in <root>.Derived.setValue' type=kotlin.String origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
@@ -79,9 +79,9 @@ FILE fqName:<root> fileName:/thisOfGenericOuterClass.kt
EXPRESSION_BODY
CALL 'public final fun plus (other: kotlin.Int): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-x> (): kotlin.Int declared in <root>.Outer' type=kotlin.Int origin=null
$this: GET_VAR '<this>: <root>.Outer declared in <root>.Outer' type=<root>.Outer<*> origin=null
$this: GET_VAR '<this>: <root>.Outer<kotlin.Int> declared in <root>.test' type=<root>.Outer<kotlin.Int> origin=null
other: CALL 'public final fun <get-y> (): kotlin.Int declared in <root>.Outer.Inner' type=kotlin.Int origin=null
$this: GET_VAR '<this>: <root>.Outer.Inner declared in <root>.Outer.Inner' type=<root>.Outer.Inner origin=null
$this: GET_VAR '<this>: <uninitialized parent>.<anonymous> declared in <no parent>.<anonymous>' type=<uninitialized parent>.<anonymous> origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-xx> visibility:public modality:FINAL <> ($this:<root>.test.<no name provided>) returnType:kotlin.Int
correspondingProperty: PROPERTY name:xx visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.test.<no name provided>
@@ -16,7 +16,7 @@ FILE fqName:<root> fileName:/genericClassInDifferentModule_m2.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun foo <Y> (y: Y of <root>.Derived1.foo): T of <root>.Derived1 declared in <root>.Derived1'
CALL 'public final fun <get-x> (): T of <root>.Derived1 declared in <root>.Base' type=T of <root>.Derived1 origin=null
$this: GET_VAR '<this>: <root>.Base declared in <root>.Base' type=<root>.Base<*> origin=null
$this: GET_VAR '<this>: <root>.Derived1 declared in <root>.Derived1' type=<root>.Derived1<T of <root>.Derived1> origin=null
PROPERTY name:bar visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:bar type:T of <root>.Derived1 visibility:private
EXPRESSION_BODY

Some files were not shown because too many files have changed in this diff Show More