[FIR2IR] Populate overridden symbols even for !isOverride

Before this commit we considered !isOverride as a sign that
function / field / accessor has no overridden symbols.
However, it's false for deserialized, because isOverride
is always false there.

This commit fixes 68 BB tests but breaks 25 BB tests (not yet muted)
This commit is contained in:
Mikhail Glukhikh
2020-05-13 11:53:47 +03:00
parent ac1e96500a
commit e7e80be34a
74 changed files with 20 additions and 79 deletions
@@ -10,10 +10,8 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns.*
import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter
import org.jetbrains.kotlin.fir.declarations.impl.FirPropertyAccessorImpl
import org.jetbrains.kotlin.fir.descriptors.FirBuiltInsPackageFragment import org.jetbrains.kotlin.fir.descriptors.FirBuiltInsPackageFragment
import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor
import org.jetbrains.kotlin.fir.descriptors.FirPackageFragmentDescriptor import org.jetbrains.kotlin.fir.descriptors.FirPackageFragmentDescriptor
@@ -455,7 +453,7 @@ class Fir2IrDeclarationStorage(
created.overriddenSymbols += getIrFunctionSymbol(it) as IrSimpleFunctionSymbol created.overriddenSymbols += getIrFunctionSymbol(it) as IrSimpleFunctionSymbol
} }
} }
if (!created.isFakeOverride && simpleFunction?.isOverride == true && thisReceiverOwner != null) { if (!created.isFakeOverride && thisReceiverOwner != null) {
created.populateOverriddenSymbols(thisReceiverOwner) created.populateOverriddenSymbols(thisReceiverOwner)
} }
functionCache[function] = created functionCache[function] = created
@@ -573,12 +571,7 @@ class Fir2IrDeclarationStorage(
parent = irParent parent = irParent
} }
correspondingPropertySymbol = correspondingProperty.symbol correspondingPropertySymbol = correspondingProperty.symbol
val isOverride = when (propertyAccessor) { if (!isFakeOverride && thisReceiverOwner != null) {
is FirDefaultPropertyAccessor -> property.isOverride
is FirPropertyAccessorImpl -> propertyAccessor.status.isOverride
else -> false
}
if (!isFakeOverride && isOverride && thisReceiverOwner != null) {
populateOverriddenSymbols(thisReceiverOwner) populateOverriddenSymbols(thisReceiverOwner)
} }
} }
@@ -608,7 +601,7 @@ class Fir2IrDeclarationStorage(
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE
).also { ).also {
it.correspondingPropertySymbol = this@createBackingField.symbol it.correspondingPropertySymbol = this@createBackingField.symbol
if (!isFakeOverride && property.isOverride && thisReceiverOwner != null) { if (!isFakeOverride && thisReceiverOwner != null) {
it.populateOverriddenSymbols(thisReceiverOwner) it.populateOverriddenSymbols(thisReceiverOwner)
} }
} }
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,5 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
interface A { interface A {
val result: Any get() = "Fail" val result: Any get() = "Fail"
} }
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
import java.util.AbstractList import java.util.AbstractList
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME // WITH_RUNTIME
class Container { class Container {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// FILE: J.java // FILE: J.java
@@ -1,5 +1,4 @@
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME // WITH_RUNTIME
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// WITH_RUNTIME // WITH_RUNTIME
// !LANGUAGE: +NewInference // !LANGUAGE: +NewInference
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JS, JS_IR // IGNORE_BACKEND: JS, JS_IR
// WITH_RUNTIME // WITH_RUNTIME
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_COROUTINES // WITH_COROUTINES
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME // WITH_RUNTIME
// WITH_COROUTINES // WITH_COROUTINES
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME // WITH_RUNTIME
// WITH_COROUTINES // WITH_COROUTINES
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME // WITH_RUNTIME
// WITH_COROUTINES // WITH_COROUTINES
// COMMON_COROUTINES_TEST // COMMON_COROUTINES_TEST
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME // WITH_RUNTIME
// WITH_COROUTINES // WITH_COROUTINES
// COMMON_COROUTINES_TEST // COMMON_COROUTINES_TEST
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME // WITH_RUNTIME
// WITH_COROUTINES // WITH_COROUTINES
@@ -1,5 +1,4 @@
// !LANGUAGE: +ReleaseCoroutines // !LANGUAGE: +ReleaseCoroutines
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: NATIVE // IGNORE_BACKEND: NATIVE
// WITH_RUNTIME // WITH_RUNTIME
// WITH_COROUTINES // WITH_COROUTINES
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME // WITH_RUNTIME
// WITH_COROUTINES // WITH_COROUTINES
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME // WITH_RUNTIME
// WITH_COROUTINES // WITH_COROUTINES
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME // WITH_RUNTIME
// WITH_COROUTINES // WITH_COROUTINES
@@ -1,5 +1,4 @@
// !LANGUAGE: -ProhibitDataClassesOverridingCopy // !LANGUAGE: -ProhibitDataClassesOverridingCopy
// IGNORE_BACKEND_FIR: JVM_IR
fun box(): String { fun box(): String {
val a: A = B(1) val a: A = B(1)
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
import java.util.IdentityHashMap import java.util.IdentityHashMap
@@ -1,5 +1,4 @@
// !LANGUAGE: +NewInference // !LANGUAGE: +NewInference
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME // WITH_RUNTIME
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
var result = "" var result = ""
interface A { interface A {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
fun box(): String { fun box(): String {
val l: Long = 1 val l: Long = 1
val l2: Long = 2 val l2: Long = 2
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
fun box(): String { fun box(): String {
val list = ArrayList<IntRange>() val list = ArrayList<IntRange>()
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
fun box(): String { fun box(): String {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
fun box() : String { fun box() : String {
@@ -1,5 +1,4 @@
// !JVM_DEFAULT_MODE: all-compatibility // !JVM_DEFAULT_MODE: all-compatibility
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// JVM_TARGET: 1.8 // JVM_TARGET: 1.8
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,5 +1,4 @@
// !JVM_DEFAULT_MODE: all-compatibility // !JVM_DEFAULT_MODE: all-compatibility
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// IGNORE_BACKEND: ANDROID // IGNORE_BACKEND: ANDROID
// JVM_TARGET: 1.8 // JVM_TARGET: 1.8
@@ -1,5 +1,4 @@
// !JVM_DEFAULT_MODE: all-compatibility // !JVM_DEFAULT_MODE: all-compatibility
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// FILE: Simple.java // FILE: Simple.java
@@ -1,5 +1,4 @@
// !JVM_DEFAULT_MODE: all-compatibility // !JVM_DEFAULT_MODE: all-compatibility
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// FILE: Simple.java // FILE: Simple.java
@@ -1,5 +1,4 @@
// !JVM_DEFAULT_MODE: enable // !JVM_DEFAULT_MODE: enable
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// JVM_TARGET: 1.8 // JVM_TARGET: 1.8
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,5 +1,4 @@
// !JVM_DEFAULT_MODE: compatibility // !JVM_DEFAULT_MODE: compatibility
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// FILE: Simple.java // FILE: Simple.java
@@ -1,5 +1,4 @@
// !JVM_DEFAULT_MODE: compatibility // !JVM_DEFAULT_MODE: compatibility
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// FILE: Simple.java // FILE: Simple.java
@@ -1,5 +1,4 @@
// !JVM_DEFAULT_MODE: all // !JVM_DEFAULT_MODE: all
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// JVM_TARGET: 1.8 // JVM_TARGET: 1.8
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,5 +1,4 @@
// !JVM_DEFAULT_MODE: all // !JVM_DEFAULT_MODE: all
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// IGNORE_BACKEND: ANDROID // IGNORE_BACKEND: ANDROID
// JVM_TARGET: 1.8 // JVM_TARGET: 1.8
@@ -1,5 +1,4 @@
// !JVM_DEFAULT_MODE: all // !JVM_DEFAULT_MODE: all
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// FILE: Simple.java // FILE: Simple.java
@@ -1,5 +1,4 @@
// !JVM_DEFAULT_MODE: all // !JVM_DEFAULT_MODE: all
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// FILE: Simple.java // FILE: Simple.java
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME // WITH_RUNTIME
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
@@ -1,6 +1,5 @@
// !LANGUAGE: +StrictJavaNullabilityAssertions // !LANGUAGE: +StrictJavaNullabilityAssertions
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME // WITH_RUNTIME
// FULL_JDK // FULL_JDK
@@ -1,6 +1,5 @@
// !LANGUAGE: +StrictJavaNullabilityAssertions // !LANGUAGE: +StrictJavaNullabilityAssertions
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME // WITH_RUNTIME
// FULL_JDK // FULL_JDK
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JS or not // TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE // IGNORE_BACKEND: JS, NATIVE
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR
// WITH_REFLECT // WITH_REFLECT
// IGNORE_BACKEND: JS, NATIVE // IGNORE_BACKEND: JS, NATIVE
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_REFLECT // WITH_REFLECT
// IGNORE_BACKEND: JS_IR, JS, NATIVE // IGNORE_BACKEND: JS_IR, JS, NATIVE
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// WITH_REFLECT // WITH_REFLECT
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JS or not // TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE // IGNORE_BACKEND: JS, NATIVE
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TODO: investigate should it be ran for JS or not // TODO: investigate should it be ran for JS or not
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR
// TODO: investigate should it be ran for JS or not // TODO: investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE // IGNORE_BACKEND: JS, NATIVE
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JS or not // TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE // IGNORE_BACKEND: JS, NATIVE
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JS // IGNORE_BACKEND: JS
private object NotEmptyMap : MutableMap<Any, Int> { private object NotEmptyMap : MutableMap<Any, Int> {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
class A1 : MutableCollection<String> { class A1 : MutableCollection<String> {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JS // IGNORE_BACKEND: JS
private object NotEmptyList : MutableList<Any> { private object NotEmptyList : MutableList<Any> {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JS // IGNORE_BACKEND: JS
private object NotEmptyMap : MutableMap<Any, Any> { private object NotEmptyMap : MutableMap<Any, Any> {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME // WITH_RUNTIME
// FULL_JDK // FULL_JDK
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME // WITH_RUNTIME
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME // WITH_RUNTIME
@@ -155,6 +155,8 @@ FILE fqName:<root> fileName:/delegatedImplementation.kt
PROPERTY name:z1 visibility:public modality:FINAL [val] PROPERTY name:z1 visibility:public modality:FINAL [val]
FUN name:<get-z1> visibility:public modality:FINAL <> ($this:<root>.otherImpl.<no name provided>, $receiver:kotlin.Byte) returnType:kotlin.Int FUN name:<get-z1> visibility:public modality:FINAL <> ($this:<root>.otherImpl.<no name provided>, $receiver:kotlin.Byte) returnType:kotlin.Int
correspondingProperty: PROPERTY name:z1 visibility:public modality:FINAL [val] correspondingProperty: PROPERTY name:z1 visibility:public modality:FINAL [val]
overridden:
public abstract fun <get-z1> (): kotlin.Int declared in <root>.IOther
$this: VALUE_PARAMETER name:<this> type:<root>.otherImpl.<no name provided> $this: VALUE_PARAMETER name:<this> type:<root>.otherImpl.<no name provided>
$receiver: VALUE_PARAMETER name:<this> type:kotlin.Byte $receiver: VALUE_PARAMETER name:<this> type:kotlin.Byte
BLOCK_BODY BLOCK_BODY
@@ -163,6 +165,8 @@ FILE fqName:<root> fileName:/delegatedImplementation.kt
PROPERTY name:z2 visibility:public modality:FINAL [var] PROPERTY name:z2 visibility:public modality:FINAL [var]
FUN name:<get-z2> visibility:public modality:FINAL <> ($this:<root>.otherImpl.<no name provided>, $receiver:kotlin.Byte) returnType:kotlin.Int FUN name:<get-z2> visibility:public modality:FINAL <> ($this:<root>.otherImpl.<no name provided>, $receiver:kotlin.Byte) returnType:kotlin.Int
correspondingProperty: PROPERTY name:z2 visibility:public modality:FINAL [var] correspondingProperty: PROPERTY name:z2 visibility:public modality:FINAL [var]
overridden:
public abstract fun <get-z2> (): kotlin.Int declared in <root>.IOther
$this: VALUE_PARAMETER name:<this> type:<root>.otherImpl.<no name provided> $this: VALUE_PARAMETER name:<this> type:<root>.otherImpl.<no name provided>
$receiver: VALUE_PARAMETER name:<this> type:kotlin.Byte $receiver: VALUE_PARAMETER name:<this> type:kotlin.Byte
BLOCK_BODY BLOCK_BODY
@@ -170,6 +174,8 @@ FILE fqName:<root> fileName:/delegatedImplementation.kt
CONST Int type=kotlin.Int value=2 CONST Int type=kotlin.Int value=2
FUN name:<set-z2> visibility:public modality:FINAL <> ($this:<root>.otherImpl.<no name provided>, $receiver:kotlin.Byte, value:kotlin.Int) returnType:kotlin.Unit FUN name:<set-z2> visibility:public modality:FINAL <> ($this:<root>.otherImpl.<no name provided>, $receiver:kotlin.Byte, value:kotlin.Int) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:z2 visibility:public modality:FINAL [var] correspondingProperty: PROPERTY name:z2 visibility:public modality:FINAL [var]
overridden:
public abstract fun <set-z2> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.IOther
$this: VALUE_PARAMETER name:<this> type:<root>.otherImpl.<no name provided> $this: VALUE_PARAMETER name:<this> type:<root>.otherImpl.<no name provided>
$receiver: VALUE_PARAMETER name:<this> type:kotlin.Byte $receiver: VALUE_PARAMETER name:<this> type:kotlin.Byte
VALUE_PARAMETER name:value index:0 type:kotlin.Int VALUE_PARAMETER name:value index:0 type:kotlin.Int
@@ -68,6 +68,9 @@ FILE fqName:<root> fileName:/qualifiedSuperCalls.kt
PROPERTY name:bar visibility:public modality:FINAL [val] PROPERTY name:bar visibility:public modality:FINAL [val]
FUN name:<get-bar> visibility:public modality:FINAL <> ($this:<root>.CBoth) returnType:kotlin.Int FUN name:<get-bar> visibility:public modality:FINAL <> ($this:<root>.CBoth) returnType:kotlin.Int
correspondingProperty: PROPERTY name:bar visibility:public modality:FINAL [val] correspondingProperty: PROPERTY name:bar visibility:public modality:FINAL [val]
overridden:
public open fun <get-bar> (): kotlin.Int declared in <root>.ILeft
public open fun <get-bar> (): kotlin.Int declared in <root>.IRight
$this: VALUE_PARAMETER name:<this> type:<root>.CBoth $this: VALUE_PARAMETER name:<this> type:<root>.CBoth
BLOCK_BODY BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-bar> (): kotlin.Int declared in <root>.CBoth' RETURN type=kotlin.Nothing from='public final fun <get-bar> (): kotlin.Int declared in <root>.CBoth'
@@ -50,6 +50,8 @@ FILE fqName:<root> fileName:/superCalls.kt
PROPERTY name:bar visibility:public modality:FINAL [val] PROPERTY name:bar visibility:public modality:FINAL [val]
FUN name:<get-bar> visibility:public modality:FINAL <> ($this:<root>.Derived) returnType:kotlin.String FUN name:<get-bar> visibility:public modality:FINAL <> ($this:<root>.Derived) returnType:kotlin.String
correspondingProperty: PROPERTY name:bar visibility:public modality:FINAL [val] correspondingProperty: PROPERTY name:bar visibility:public modality:FINAL [val]
overridden:
public open fun <get-bar> (): kotlin.String declared in <root>.Base
$this: VALUE_PARAMETER name:<this> type:<root>.Derived $this: VALUE_PARAMETER name:<this> type:<root>.Derived
BLOCK_BODY BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-bar> (): kotlin.String declared in <root>.Derived' RETURN type=kotlin.Nothing from='public final fun <get-bar> (): kotlin.String declared in <root>.Derived'
@@ -45,6 +45,8 @@ FILE fqName:<root> fileName:/genericClassInDifferentModule_m2.kt
PROPERTY name:exn visibility:public modality:FINAL [var] PROPERTY name:exn visibility:public modality:FINAL [var]
FUN name:<get-exn> visibility:public modality:FINAL <Z> ($this:<root>.Derived1<T of <root>.Derived1>, $receiver:Z of <root>.Derived1.<get-exn>) returnType:T of <root>.Derived1 FUN name:<get-exn> visibility:public modality:FINAL <Z> ($this:<root>.Derived1<T of <root>.Derived1>, $receiver:Z of <root>.Derived1.<get-exn>) returnType:T of <root>.Derived1
correspondingProperty: PROPERTY name:exn visibility:public modality:FINAL [var] correspondingProperty: PROPERTY name:exn visibility:public modality:FINAL [var]
overridden:
public abstract fun <get-exn> <Z> (): T of <root>.Base declared in <root>.Base
TYPE_PARAMETER name:Z index:0 variance: superTypes:[kotlin.Any?] TYPE_PARAMETER name:Z index:0 variance: superTypes:[kotlin.Any?]
$this: VALUE_PARAMETER name:<this> type:<root>.Derived1<T of <root>.Derived1> $this: VALUE_PARAMETER name:<this> type:<root>.Derived1<T of <root>.Derived1>
$receiver: VALUE_PARAMETER name:<this> type:Z of <root>.Derived1.<get-exn> $receiver: VALUE_PARAMETER name:<this> type:Z of <root>.Derived1.<get-exn>
@@ -54,6 +56,8 @@ FILE fqName:<root> fileName:/genericClassInDifferentModule_m2.kt
$this: GET_VAR '<this>: <root>.Derived1<T of <root>.Derived1> declared in <root>.Derived1.<get-exn>' type=<root>.Derived1<T of <root>.Derived1> origin=null $this: GET_VAR '<this>: <root>.Derived1<T of <root>.Derived1> declared in <root>.Derived1.<get-exn>' type=<root>.Derived1<T of <root>.Derived1> origin=null
FUN name:<set-exn> visibility:public modality:FINAL <Z> ($this:<root>.Derived1<T of <root>.Derived1>, $receiver:Z of <root>.Derived1.<set-exn>, value:T of <root>.Derived1) returnType:kotlin.Unit FUN name:<set-exn> visibility:public modality:FINAL <Z> ($this:<root>.Derived1<T of <root>.Derived1>, $receiver:Z of <root>.Derived1.<set-exn>, value:T of <root>.Derived1) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:exn visibility:public modality:FINAL [var] correspondingProperty: PROPERTY name:exn visibility:public modality:FINAL [var]
overridden:
public abstract fun <set-exn> <Z> (<set-?>: T of <root>.Base): kotlin.Unit declared in <root>.Base
TYPE_PARAMETER name:Z index:0 variance: superTypes:[kotlin.Any?] TYPE_PARAMETER name:Z index:0 variance: superTypes:[kotlin.Any?]
$this: VALUE_PARAMETER name:<this> type:<root>.Derived1<T of <root>.Derived1> $this: VALUE_PARAMETER name:<this> type:<root>.Derived1<T of <root>.Derived1>
$receiver: VALUE_PARAMETER name:<this> type:Z of <root>.Derived1.<set-exn> $receiver: VALUE_PARAMETER name:<this> type:Z of <root>.Derived1.<set-exn>
@@ -11,6 +11,8 @@ FILE fqName:<root> fileName:/implicitNotNullOnPlatformType.kt
PROPERTY name:size visibility:public modality:FINAL [val] PROPERTY name:size visibility:public modality:FINAL [val]
FUN name:<get-size> visibility:public modality:FINAL <> ($this:<root>.MySet) returnType:kotlin.Int FUN name:<get-size> visibility:public modality:FINAL <> ($this:<root>.MySet) returnType:kotlin.Int
correspondingProperty: PROPERTY name:size visibility:public modality:FINAL [val] correspondingProperty: PROPERTY name:size visibility:public modality:FINAL [val]
overridden:
public abstract fun <get-size> (): kotlin.Int declared in kotlin.collections.Set
$this: VALUE_PARAMETER name:<this> type:<root>.MySet $this: VALUE_PARAMETER name:<this> type:<root>.MySet
BLOCK_BODY BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-size> (): kotlin.Int declared in <root>.MySet' RETURN type=kotlin.Nothing from='public final fun <get-size> (): kotlin.Int declared in <root>.MySet'