[FIR2IR] Rework reordering condition to better handle synthetic class delegation fields

^KT-60243

Merge-request: KT-MR-11125
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
This commit is contained in:
Vladimir Sukharev
2023-07-19 09:59:53 +00:00
committed by Space Team
parent 66bbb9582c
commit f7269eb384
20 changed files with 2407 additions and 2 deletions
@@ -0,0 +1,204 @@
FILE fqName:foo fileName:/delegationEvaluationOrder1.kt
CLASS INTERFACE name:Base modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Base
FUN name:foo visibility:public modality:ABSTRACT <> ($this:foo.Base, x:kotlin.String) returnType:kotlin.String
$this: VALUE_PARAMETER name:<this> type:foo.Base
VALUE_PARAMETER name:x index:0 type:kotlin.String
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 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
CLASS CLASS name:BaseImpl modality:FINAL visibility:public superTypes:[foo.Base]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.BaseImpl
CONSTRUCTOR visibility:public <> (s:kotlin.String) returnType:foo.BaseImpl [primary]
VALUE_PARAMETER name:s index:0 type:kotlin.String
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:BaseImpl modality:FINAL visibility:public superTypes:[foo.Base]'
PROPERTY name:s visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]
EXPRESSION_BODY
GET_VAR 's: kotlin.String declared in foo.BaseImpl.<init>' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-s> visibility:public modality:FINAL <> ($this:foo.BaseImpl) returnType:kotlin.String
correspondingProperty: PROPERTY name:s visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:foo.BaseImpl
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-s> (): kotlin.String declared in foo.BaseImpl'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: foo.BaseImpl declared in foo.BaseImpl.<get-s>' type=foo.BaseImpl origin=null
FUN name:foo visibility:public modality:OPEN <> ($this:foo.BaseImpl, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base
$this: VALUE_PARAMETER name:<this> type:foo.BaseImpl
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.BaseImpl'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Base: "
CALL 'public final fun <get-s> (): kotlin.String declared in foo.BaseImpl' type=kotlin.String origin=GET_PROPERTY
$this: GET_VAR '<this>: foo.BaseImpl declared in foo.BaseImpl.foo' type=foo.BaseImpl origin=null
CONST String type=kotlin.String value=":"
GET_VAR 'x: kotlin.String declared in foo.BaseImpl.foo' 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 declared in foo.Base
$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 foo.Base
$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 foo.Base
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
PROPERTY name:global visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:global type:kotlin.String visibility:private [static]
EXPRESSION_BODY
CONST String type=kotlin.String value=""
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-global> visibility:public modality:FINAL <> () returnType:kotlin.String
correspondingProperty: PROPERTY name:global visibility:public modality:FINAL [var]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-global> (): kotlin.String declared in foo'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:global type:kotlin.String visibility:private [static]' type=kotlin.String origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-global> visibility:public modality:FINAL <> (<set-?>:kotlin.String) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:global visibility:public modality:FINAL [var]
VALUE_PARAMETER name:<set-?> index:0 type:kotlin.String
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:global type:kotlin.String visibility:private [static]' type=kotlin.Unit origin=null
value: GET_VAR '<set-?>: kotlin.String declared in foo.<set-global>' type=kotlin.String origin=null
CLASS CLASS name:DerivedBase modality:OPEN visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.DerivedBase
CONSTRUCTOR visibility:public <> () returnType:foo.DerivedBase [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:DerivedBase modality:OPEN visibility:public superTypes:[kotlin.Any]'
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=EQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=null
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=GET_PROPERTY
other: CONST String type=kotlin.String value=":DerivedBase"
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 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:newBase visibility:public modality:FINAL <> () returnType:foo.Base
BLOCK_BODY
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=EQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=null
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=GET_PROPERTY
other: CONST String type=kotlin.String value=":newBase"
RETURN type=kotlin.Nothing from='public final fun newBase (): foo.Base declared in foo'
CONSTRUCTOR_CALL 'public constructor <init> (s: kotlin.String) declared in foo.BaseImpl' type=foo.BaseImpl origin=null
s: CONST String type=kotlin.String value="test"
CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[foo.DerivedBase; foo.Base]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Derived
CONSTRUCTOR visibility:public <> () returnType:foo.Derived [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.DerivedBase'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[foo.DerivedBase; foo.Base]'
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:foo.Derived, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base
$this: VALUE_PARAMETER name:<this> type:foo.Derived
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.Derived'
CALL 'public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]' type=foo.Base origin=null
receiver: GET_VAR '<this>: foo.Derived declared in foo.Derived.foo' type=foo.Derived origin=null
x: GET_VAR 'x: kotlin.String declared in foo.Derived.foo' type=kotlin.String origin=null
FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun newBase (): foo.Base declared in foo' type=foo.Base origin=null
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=EQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=null
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=GET_PROPERTY
other: CONST String type=kotlin.String value=":Derived"
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 declared in foo.DerivedBase
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.Base
$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 foo.DerivedBase
public open fun hashCode (): kotlin.Int declared in foo.Base
$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 foo.DerivedBase
public open fun toString (): kotlin.String declared in foo.Base
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:Derived1 modality:FINAL visibility:public superTypes:[foo.Base; foo.DerivedBase]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Derived1
CONSTRUCTOR visibility:public <> () returnType:foo.Derived1 [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.DerivedBase'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Derived1 modality:FINAL visibility:public superTypes:[foo.Base; foo.DerivedBase]'
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:foo.Derived1, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base
$this: VALUE_PARAMETER name:<this> type:foo.Derived1
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.Derived1'
CALL 'public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]' type=foo.Base origin=null
receiver: GET_VAR '<this>: foo.Derived1 declared in foo.Derived1.foo' type=foo.Derived1 origin=null
x: GET_VAR 'x: kotlin.String declared in foo.Derived1.foo' type=kotlin.String origin=null
FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun newBase (): foo.Base declared in foo' type=foo.Base origin=null
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=EQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=null
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=GET_PROPERTY
other: CONST String type=kotlin.String value=":Derived"
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 declared in foo.Base
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.DerivedBase
$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 foo.Base
public open fun hashCode (): kotlin.Int declared in foo.DerivedBase
$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 foo.Base
public open fun toString (): kotlin.String declared in foo.DerivedBase
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String
BLOCK_BODY
VAR name:d type:foo.Derived [var]
CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.Derived' type=foo.Derived origin=null
VAR name:d1 type:foo.Derived1 [var]
CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.Derived1' type=foo.Derived1 origin=null
RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in foo'
CONST String type=kotlin.String value="OK"
@@ -0,0 +1,89 @@
package foo
interface Base {
abstract fun foo(x: String): String
}
class BaseImpl : Base {
constructor(s: String) /* primary */ {
super/*Any*/()
/* <init>() */
}
val s: String
field = s
get
override fun foo(x: String): String {
return "Base: " + <this>.<get-s>() + ":" + x
}
}
var global: String
field = ""
get
set
open class DerivedBase {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
init {
<set-global>(<set-?> = <get-global>().plus(other = ":DerivedBase"))
}
}
fun newBase(): Base {
<set-global>(<set-?> = <get-global>().plus(other = ":newBase"))
return BaseImpl(s = "test")
}
class Derived : DerivedBase, Base {
constructor() /* primary */ {
super/*DerivedBase*/()
/* <init>() */
}
override fun foo(x: String): String {
return <this>.#$$delegate_0.foo(x = x)
}
private /* final field */ val $$delegate_0: Base = newBase()
init {
<set-global>(<set-?> = <get-global>().plus(other = ":Derived"))
}
}
class Derived1 : Base, DerivedBase {
constructor() /* primary */ {
super/*DerivedBase*/()
/* <init>() */
}
override fun foo(x: String): String {
return <this>.#$$delegate_0.foo(x = x)
}
private /* final field */ val $$delegate_0: Base = newBase()
init {
<set-global>(<set-?> = <get-global>().plus(other = ":Derived"))
}
}
fun box(): String {
var d: Derived = Derived()
var d1: Derived1 = Derived1()
return "OK"
}
@@ -0,0 +1,208 @@
FILE fqName:foo fileName:/delegationEvaluationOrder1.kt
CLASS INTERFACE name:Base modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Base
FUN name:foo visibility:public modality:ABSTRACT <> ($this:foo.Base, x:kotlin.String) returnType:kotlin.String
$this: VALUE_PARAMETER name:<this> type:foo.Base
VALUE_PARAMETER name:x index:0 type:kotlin.String
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 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
CLASS CLASS name:BaseImpl modality:FINAL visibility:public superTypes:[foo.Base]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.BaseImpl
CONSTRUCTOR visibility:public <> (s:kotlin.String) returnType:foo.BaseImpl [primary]
VALUE_PARAMETER name:s index:0 type:kotlin.String
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:BaseImpl modality:FINAL visibility:public superTypes:[foo.Base]'
PROPERTY name:s visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]
EXPRESSION_BODY
GET_VAR 's: kotlin.String declared in foo.BaseImpl.<init>' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-s> visibility:public modality:FINAL <> ($this:foo.BaseImpl) returnType:kotlin.String
correspondingProperty: PROPERTY name:s visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:foo.BaseImpl
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-s> (): kotlin.String declared in foo.BaseImpl'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: foo.BaseImpl declared in foo.BaseImpl.<get-s>' type=foo.BaseImpl origin=null
FUN name:foo visibility:public modality:OPEN <> ($this:foo.BaseImpl, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base
$this: VALUE_PARAMETER name:<this> type:foo.BaseImpl
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.BaseImpl'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Base: "
CALL 'public final fun <get-s> (): kotlin.String declared in foo.BaseImpl' type=kotlin.String origin=GET_PROPERTY
$this: GET_VAR '<this>: foo.BaseImpl declared in foo.BaseImpl.foo' type=foo.BaseImpl origin=null
CONST String type=kotlin.String value=":"
GET_VAR 'x: kotlin.String declared in foo.BaseImpl.foo' 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 declared in foo.Base
$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 foo.Base
$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 foo.Base
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
PROPERTY name:global visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:global type:kotlin.String visibility:private [static]
EXPRESSION_BODY
CONST String type=kotlin.String value=""
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-global> visibility:public modality:FINAL <> () returnType:kotlin.String
correspondingProperty: PROPERTY name:global visibility:public modality:FINAL [var]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-global> (): kotlin.String declared in foo'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:global type:kotlin.String visibility:private [static]' type=kotlin.String origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-global> visibility:public modality:FINAL <> (<set-?>:kotlin.String) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:global visibility:public modality:FINAL [var]
VALUE_PARAMETER name:<set-?> index:0 type:kotlin.String
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:global type:kotlin.String visibility:private [static]' type=kotlin.Unit origin=null
value: GET_VAR '<set-?>: kotlin.String declared in foo.<set-global>' type=kotlin.String origin=null
CLASS CLASS name:DerivedBase modality:OPEN visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.DerivedBase
CONSTRUCTOR visibility:public <> () returnType:foo.DerivedBase [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:DerivedBase modality:OPEN visibility:public superTypes:[kotlin.Any]'
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
BLOCK type=kotlin.Unit origin=PLUSEQ
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=PLUSEQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUSEQ
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=PLUSEQ
other: CONST String type=kotlin.String value=":DerivedBase"
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 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:newBase visibility:public modality:FINAL <> () returnType:foo.Base
BLOCK_BODY
BLOCK type=kotlin.Unit origin=PLUSEQ
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=PLUSEQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUSEQ
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=PLUSEQ
other: CONST String type=kotlin.String value=":newBase"
RETURN type=kotlin.Nothing from='public final fun newBase (): foo.Base declared in foo'
CONSTRUCTOR_CALL 'public constructor <init> (s: kotlin.String) declared in foo.BaseImpl' type=foo.BaseImpl origin=null
s: CONST String type=kotlin.String value="test"
CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[foo.DerivedBase; foo.Base]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Derived
CONSTRUCTOR visibility:public <> () returnType:foo.Derived [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.DerivedBase'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[foo.DerivedBase; foo.Base]'
FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun newBase (): foo.Base declared in foo' type=foo.Base origin=null
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:foo.Derived, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base
$this: VALUE_PARAMETER name:<this> type:foo.Derived
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.Derived'
CALL 'public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]' type=foo.Base origin=null
receiver: GET_VAR '<this>: foo.Derived declared in foo.Derived.foo' type=foo.Derived origin=null
x: GET_VAR 'x: kotlin.String declared in foo.Derived.foo' type=kotlin.String origin=null
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
BLOCK type=kotlin.Unit origin=PLUSEQ
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=PLUSEQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUSEQ
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=PLUSEQ
other: CONST String type=kotlin.String value=":Derived"
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 declared in foo.DerivedBase
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.Base
$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 foo.DerivedBase
public open fun hashCode (): kotlin.Int declared in foo.Base
$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 foo.DerivedBase
public open fun toString (): kotlin.String declared in foo.Base
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:Derived1 modality:FINAL visibility:public superTypes:[foo.Base; foo.DerivedBase]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Derived1
CONSTRUCTOR visibility:public <> () returnType:foo.Derived1 [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.DerivedBase'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Derived1 modality:FINAL visibility:public superTypes:[foo.Base; foo.DerivedBase]'
FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun newBase (): foo.Base declared in foo' type=foo.Base origin=null
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:foo.Derived1, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base
$this: VALUE_PARAMETER name:<this> type:foo.Derived1
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.Derived1'
CALL 'public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]' type=foo.Base origin=null
receiver: GET_VAR '<this>: foo.Derived1 declared in foo.Derived1.foo' type=foo.Derived1 origin=null
x: GET_VAR 'x: kotlin.String declared in foo.Derived1.foo' type=kotlin.String origin=null
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
BLOCK type=kotlin.Unit origin=PLUSEQ
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=PLUSEQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUSEQ
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=PLUSEQ
other: CONST String type=kotlin.String value=":Derived"
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 declared in foo.Base
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.DerivedBase
$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 foo.Base
public open fun hashCode (): kotlin.Int declared in foo.DerivedBase
$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 foo.Base
public open fun toString (): kotlin.String declared in foo.DerivedBase
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String
BLOCK_BODY
VAR name:d type:foo.Derived [var]
CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.Derived' type=foo.Derived origin=null
VAR name:d1 type:foo.Derived1 [var]
CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.Derived1' type=foo.Derived1 origin=null
RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in foo'
CONST String type=kotlin.String value="OK"
@@ -0,0 +1,41 @@
package foo
interface Base {
abstract fun foo(x: String): String
}
class BaseImpl(val s: String) : Base {
override fun foo(x: String): String = "Base: ${s}:${x}"
}
var global = ""
open class DerivedBase() {
init {
global += ":DerivedBase"
}
}
fun newBase(): Base {
global += ":newBase"
return BaseImpl("test")
}
class Derived() : DerivedBase(), Base by newBase() {
init {
global += ":Derived"
}
}
class Derived1() : Base by newBase(), DerivedBase() {
init {
global += ":Derived"
}
}
fun box(): String {
var d = Derived()
var d1 = Derived1()
return "OK"
}
@@ -0,0 +1,96 @@
package foo
interface Base {
abstract fun foo(x: String): String
}
class BaseImpl : Base {
constructor(s: String) /* primary */ {
super/*Any*/()
/* <init>() */
}
val s: String
field = s
get
override fun foo(x: String): String {
return "Base: " + <this>.<get-s>() + ":" + x
}
}
var global: String
field = ""
get
set
open class DerivedBase {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
init {
{ // BLOCK
<set-global>(<set-?> = <get-global>().plus(other = ":DerivedBase"))
}
}
}
fun newBase(): Base {
{ // BLOCK
<set-global>(<set-?> = <get-global>().plus(other = ":newBase"))
}
return BaseImpl(s = "test")
}
class Derived : DerivedBase, Base {
constructor() /* primary */ {
super/*DerivedBase*/()
/* <init>() */
}
private /* final field */ val $$delegate_0: Base = newBase()
override fun foo(x: String): String {
return <this>.#$$delegate_0.foo(x = x)
}
init {
{ // BLOCK
<set-global>(<set-?> = <get-global>().plus(other = ":Derived"))
}
}
}
class Derived1 : Base, DerivedBase {
constructor() /* primary */ {
super/*DerivedBase*/()
/* <init>() */
}
private /* final field */ val $$delegate_0: Base = newBase()
override fun foo(x: String): String {
return <this>.#$$delegate_0.foo(x = x)
}
init {
{ // BLOCK
<set-global>(<set-?> = <get-global>().plus(other = ":Derived"))
}
}
}
fun box(): String {
var d: Derived = Derived()
var d1: Derived1 = Derived1()
return "OK"
}
@@ -0,0 +1,168 @@
package foo
// CHECK:
// Mangled name: foo{}global
// Public signature: foo/global|4288684431328455501[0]
// Public signature debug description: {}global
var global: String
// CHECK JVM_IR:
// Mangled name: foo#<get-global>(){}kotlin.String
// Public signature: foo/global.<get-global>|-6997244913903542523[0]
// Public signature debug description: <get-global>(){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo#<get-global>(){}
// Public signature: foo/global.<get-global>|7627852862574367240[0]
// Public signature debug description: <get-global>(){}
get
// CHECK:
// Mangled name: foo#<set-global>(kotlin.String){}
// Public signature: foo/global.<set-global>|5315586845372819266[0]
// Public signature debug description: <set-global>(kotlin.String){}
set
// CHECK:
// Mangled name: foo.BaseImpl
// Public signature: foo/BaseImpl|null[0]
class BaseImpl : Base {
// CHECK:
// Mangled name: foo.BaseImpl{}s
// Public signature: foo/BaseImpl.s|7217541905509134881[0]
// Public signature debug description: {}s
val s: String
// CHECK JVM_IR:
// Mangled name: foo.BaseImpl#<get-s>(){}kotlin.String
// Public signature: foo/BaseImpl.s.<get-s>|4142379646177092803[0]
// Public signature debug description: <get-s>(){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo.BaseImpl#<get-s>(){}
// Public signature: foo/BaseImpl.s.<get-s>|-1662172381559511151[0]
// Public signature debug description: <get-s>(){}
get
// CHECK:
// Mangled name: foo.BaseImpl#<init>(kotlin.String){}
// Public signature: foo/BaseImpl.<init>|1280618353163213788[0]
// Public signature debug description: <init>(kotlin.String){}
constructor(s: String) /* primary */
// CHECK JVM_IR:
// Mangled name: foo.BaseImpl#foo(kotlin.String){}kotlin.String
// Public signature: foo/BaseImpl.foo|-5534735991146511619[0]
// Public signature debug description: foo(kotlin.String){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo.BaseImpl#foo(kotlin.String){}
// Public signature: foo/BaseImpl.foo|1351044947738582195[0]
// Public signature debug description: foo(kotlin.String){}
override fun foo(x: String): String
}
// CHECK:
// Mangled name: foo.Derived
// Public signature: foo/Derived|null[0]
class Derived : DerivedBase, Base {
// CHECK:
// Mangled name: foo.Derived#<init>(){}
// Public signature: foo/Derived.<init>|-5645683436151566731[0]
// Public signature debug description: <init>(){}
constructor() /* primary */
// CHECK JVM_IR:
// Mangled name: foo.Derived.$$delegate_0
// Public signature: foo/Derived.$$delegate_0|-7286425919675154353[0]
// Public signature debug description:
// CHECK JS_IR NATIVE:
// Mangled name: foo.Derived.$$delegate_0
// Public signature: foo/Derived.$$delegate_0|-7286425919675154353[0]
// Public signature debug description:
private /* final field */ val $$delegate_0: Base
// CHECK JVM_IR:
// Mangled name: foo.Derived#foo(kotlin.String){}kotlin.String
// Public signature: foo/Derived.foo|-5534735991146511619[0]
// Public signature debug description: foo(kotlin.String){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo.Derived#foo(kotlin.String){}
// Public signature: foo/Derived.foo|1351044947738582195[0]
// Public signature debug description: foo(kotlin.String){}
override fun foo(x: String): String
}
// CHECK:
// Mangled name: foo.Derived1
// Public signature: foo/Derived1|null[0]
class Derived1 : DerivedBase, Base {
// CHECK:
// Mangled name: foo.Derived1#<init>(){}
// Public signature: foo/Derived1.<init>|-5645683436151566731[0]
// Public signature debug description: <init>(){}
constructor() /* primary */
// CHECK JVM_IR:
// Mangled name: foo.Derived1.$$delegate_0
// Public signature: foo/Derived1.$$delegate_0|-7286425919675154353[0]
// Public signature debug description:
// CHECK JS_IR NATIVE:
// Mangled name: foo.Derived1.$$delegate_0
// Public signature: foo/Derived1.$$delegate_0|-7286425919675154353[0]
// Public signature debug description:
private /* final field */ val $$delegate_0: Base
// CHECK JVM_IR:
// Mangled name: foo.Derived1#foo(kotlin.String){}kotlin.String
// Public signature: foo/Derived1.foo|-5534735991146511619[0]
// Public signature debug description: foo(kotlin.String){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo.Derived1#foo(kotlin.String){}
// Public signature: foo/Derived1.foo|1351044947738582195[0]
// Public signature debug description: foo(kotlin.String){}
override fun foo(x: String): String
}
// CHECK:
// Mangled name: foo.DerivedBase
// Public signature: foo/DerivedBase|null[0]
open class DerivedBase {
// CHECK:
// Mangled name: foo.DerivedBase#<init>(){}
// Public signature: foo/DerivedBase.<init>|-5645683436151566731[0]
// Public signature debug description: <init>(){}
constructor() /* primary */
}
// CHECK:
// Mangled name: foo.Base
// Public signature: foo/Base|null[0]
interface Base {
// CHECK JVM_IR:
// Mangled name: foo.Base#foo(kotlin.String){}kotlin.String
// Public signature: foo/Base.foo|-5534735991146511619[0]
// Public signature debug description: foo(kotlin.String){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo.Base#foo(kotlin.String){}
// Public signature: foo/Base.foo|1351044947738582195[0]
// Public signature debug description: foo(kotlin.String){}
abstract fun foo(x: String): String
}
// CHECK JVM_IR:
// Mangled name: foo#box(){}kotlin.String
// Public signature: foo/box|-9347091776561469[0]
// Public signature debug description: box(){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo#box(){}
// Public signature: foo/box|2173511048851971368[0]
// Public signature debug description: box(){}
fun box(): String
// CHECK JVM_IR:
// Mangled name: foo#newBase(){}foo.Base
// Public signature: foo/newBase|4074800280318487147[0]
// Public signature debug description: newBase(){}foo.Base
// CHECK JS_IR NATIVE:
// Mangled name: foo#newBase(){}
// Public signature: foo/newBase|-6094796879594303932[0]
// Public signature debug description: newBase(){}
fun newBase(): Base
@@ -0,0 +1,370 @@
FILE fqName:foo fileName:/delegationEvaluationOrder2.kt
CLASS INTERFACE name:Base modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Base
FUN name:foo visibility:public modality:ABSTRACT <> ($this:foo.Base, x:kotlin.String) returnType:kotlin.String
$this: VALUE_PARAMETER name:<this> type:foo.Base
VALUE_PARAMETER name:x index:0 type:kotlin.String
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 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
CLASS CLASS name:BaseImpl modality:FINAL visibility:public superTypes:[foo.Base]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.BaseImpl
CONSTRUCTOR visibility:public <> (s:kotlin.String) returnType:foo.BaseImpl [primary]
VALUE_PARAMETER name:s index:0 type:kotlin.String
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:BaseImpl modality:FINAL visibility:public superTypes:[foo.Base]'
PROPERTY name:s visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]
EXPRESSION_BODY
GET_VAR 's: kotlin.String declared in foo.BaseImpl.<init>' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-s> visibility:public modality:FINAL <> ($this:foo.BaseImpl) returnType:kotlin.String
correspondingProperty: PROPERTY name:s visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:foo.BaseImpl
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-s> (): kotlin.String declared in foo.BaseImpl'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: foo.BaseImpl declared in foo.BaseImpl.<get-s>' type=foo.BaseImpl origin=null
FUN name:foo visibility:public modality:OPEN <> ($this:foo.BaseImpl, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base
$this: VALUE_PARAMETER name:<this> type:foo.BaseImpl
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.BaseImpl'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Base: "
CALL 'public final fun <get-s> (): kotlin.String declared in foo.BaseImpl' type=kotlin.String origin=GET_PROPERTY
$this: GET_VAR '<this>: foo.BaseImpl declared in foo.BaseImpl.foo' type=foo.BaseImpl origin=null
CONST String type=kotlin.String value=":"
GET_VAR 'x: kotlin.String declared in foo.BaseImpl.foo' 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 declared in foo.Base
$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 foo.Base
$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 foo.Base
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS INTERFACE name:Base2 modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Base2
FUN name:bar visibility:public modality:ABSTRACT <> ($this:foo.Base2, x:kotlin.String) returnType:kotlin.String
$this: VALUE_PARAMETER name:<this> type:foo.Base2
VALUE_PARAMETER name:x index:0 type:kotlin.String
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 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
CLASS CLASS name:Base2Impl modality:FINAL visibility:public superTypes:[foo.Base2]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Base2Impl
CONSTRUCTOR visibility:public <> (s:kotlin.String) returnType:foo.Base2Impl [primary]
VALUE_PARAMETER name:s index:0 type:kotlin.String
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Base2Impl modality:FINAL visibility:public superTypes:[foo.Base2]'
PROPERTY name:s visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]
EXPRESSION_BODY
GET_VAR 's: kotlin.String declared in foo.Base2Impl.<init>' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-s> visibility:public modality:FINAL <> ($this:foo.Base2Impl) returnType:kotlin.String
correspondingProperty: PROPERTY name:s visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:foo.Base2Impl
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-s> (): kotlin.String declared in foo.Base2Impl'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: foo.Base2Impl declared in foo.Base2Impl.<get-s>' type=foo.Base2Impl origin=null
FUN name:bar visibility:public modality:OPEN <> ($this:foo.Base2Impl, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2
$this: VALUE_PARAMETER name:<this> type:foo.Base2Impl
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun bar (x: kotlin.String): kotlin.String declared in foo.Base2Impl'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Base2: "
CALL 'public final fun <get-s> (): kotlin.String declared in foo.Base2Impl' type=kotlin.String origin=GET_PROPERTY
$this: GET_VAR '<this>: foo.Base2Impl declared in foo.Base2Impl.bar' type=foo.Base2Impl origin=null
CONST String type=kotlin.String value=":"
GET_VAR 'x: kotlin.String declared in foo.Base2Impl.bar' 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 declared in foo.Base2
$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 foo.Base2
$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 foo.Base2
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
PROPERTY name:global visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:global type:kotlin.String visibility:private [static]
EXPRESSION_BODY
CONST String type=kotlin.String value=""
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-global> visibility:public modality:FINAL <> () returnType:kotlin.String
correspondingProperty: PROPERTY name:global visibility:public modality:FINAL [var]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-global> (): kotlin.String declared in foo'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:global type:kotlin.String visibility:private [static]' type=kotlin.String origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-global> visibility:public modality:FINAL <> (<set-?>:kotlin.String) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:global visibility:public modality:FINAL [var]
VALUE_PARAMETER name:<set-?> index:0 type:kotlin.String
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:global type:kotlin.String visibility:private [static]' type=kotlin.Unit origin=null
value: GET_VAR '<set-?>: kotlin.String declared in foo.<set-global>' type=kotlin.String origin=null
CLASS CLASS name:DerivedBase modality:OPEN visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.DerivedBase
CONSTRUCTOR visibility:public <> () returnType:foo.DerivedBase [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:DerivedBase modality:OPEN visibility:public superTypes:[kotlin.Any]'
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=EQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=null
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=GET_PROPERTY
other: CONST String type=kotlin.String value=":DerivedBase"
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 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:newBase visibility:public modality:FINAL <> () returnType:foo.Base
BLOCK_BODY
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=EQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=null
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=GET_PROPERTY
other: CONST String type=kotlin.String value=":newBase"
RETURN type=kotlin.Nothing from='public final fun newBase (): foo.Base declared in foo'
CONSTRUCTOR_CALL 'public constructor <init> (s: kotlin.String) declared in foo.BaseImpl' type=foo.BaseImpl origin=null
s: CONST String type=kotlin.String value="test"
FUN name:newBase2 visibility:public modality:FINAL <> () returnType:foo.Base2
BLOCK_BODY
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=EQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=null
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=GET_PROPERTY
other: CONST String type=kotlin.String value=":newBase2"
RETURN type=kotlin.Nothing from='public final fun newBase2 (): foo.Base2 declared in foo'
CONSTRUCTOR_CALL 'public constructor <init> (s: kotlin.String) declared in foo.Base2Impl' type=foo.Base2Impl origin=null
s: CONST String type=kotlin.String value="test"
CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[foo.DerivedBase; foo.Base; foo.Base2]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Derived
CONSTRUCTOR visibility:public <> () returnType:foo.Derived [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.DerivedBase'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[foo.DerivedBase; foo.Base; foo.Base2]'
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:foo.Derived, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base
$this: VALUE_PARAMETER name:<this> type:foo.Derived
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.Derived'
CALL 'public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]' type=foo.Base origin=null
receiver: GET_VAR '<this>: foo.Derived declared in foo.Derived.foo' type=foo.Derived origin=null
x: GET_VAR 'x: kotlin.String declared in foo.Derived.foo' type=kotlin.String origin=null
FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun newBase (): foo.Base declared in foo' type=foo.Base origin=null
FUN DELEGATED_MEMBER name:bar visibility:public modality:OPEN <> ($this:foo.Derived, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2
$this: VALUE_PARAMETER name:<this> type:foo.Derived
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun bar (x: kotlin.String): kotlin.String declared in foo.Derived'
CALL 'public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final]' type=foo.Base2 origin=null
receiver: GET_VAR '<this>: foo.Derived declared in foo.Derived.bar' type=foo.Derived origin=null
x: GET_VAR 'x: kotlin.String declared in foo.Derived.bar' type=kotlin.String origin=null
FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun newBase2 (): foo.Base2 declared in foo' type=foo.Base2 origin=null
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=EQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=null
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=GET_PROPERTY
other: CONST String type=kotlin.String value=":Derived"
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 declared in foo.DerivedBase
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.Base
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.Base2
$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 foo.DerivedBase
public open fun hashCode (): kotlin.Int declared in foo.Base
public open fun hashCode (): kotlin.Int declared in foo.Base2
$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 foo.DerivedBase
public open fun toString (): kotlin.String declared in foo.Base
public open fun toString (): kotlin.String declared in foo.Base2
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:Derived1 modality:FINAL visibility:public superTypes:[foo.Base; foo.DerivedBase; foo.Base2]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Derived1
CONSTRUCTOR visibility:public <> () returnType:foo.Derived1 [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.DerivedBase'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Derived1 modality:FINAL visibility:public superTypes:[foo.Base; foo.DerivedBase; foo.Base2]'
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:foo.Derived1, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base
$this: VALUE_PARAMETER name:<this> type:foo.Derived1
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.Derived1'
CALL 'public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]' type=foo.Base origin=null
receiver: GET_VAR '<this>: foo.Derived1 declared in foo.Derived1.foo' type=foo.Derived1 origin=null
x: GET_VAR 'x: kotlin.String declared in foo.Derived1.foo' type=kotlin.String origin=null
FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun newBase (): foo.Base declared in foo' type=foo.Base origin=null
FUN DELEGATED_MEMBER name:bar visibility:public modality:OPEN <> ($this:foo.Derived1, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2
$this: VALUE_PARAMETER name:<this> type:foo.Derived1
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun bar (x: kotlin.String): kotlin.String declared in foo.Derived1'
CALL 'public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final]' type=foo.Base2 origin=null
receiver: GET_VAR '<this>: foo.Derived1 declared in foo.Derived1.bar' type=foo.Derived1 origin=null
x: GET_VAR 'x: kotlin.String declared in foo.Derived1.bar' type=kotlin.String origin=null
FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun newBase2 (): foo.Base2 declared in foo' type=foo.Base2 origin=null
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=EQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=null
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=GET_PROPERTY
other: CONST String type=kotlin.String value=":Derived"
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 declared in foo.Base
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.DerivedBase
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.Base2
$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 foo.Base
public open fun hashCode (): kotlin.Int declared in foo.DerivedBase
public open fun hashCode (): kotlin.Int declared in foo.Base2
$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 foo.Base
public open fun toString (): kotlin.String declared in foo.DerivedBase
public open fun toString (): kotlin.String declared in foo.Base2
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:Derived2 modality:FINAL visibility:public superTypes:[foo.Base; foo.Base2; foo.DerivedBase]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Derived2
CONSTRUCTOR visibility:public <> () returnType:foo.Derived2 [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.DerivedBase'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Derived2 modality:FINAL visibility:public superTypes:[foo.Base; foo.Base2; foo.DerivedBase]'
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:foo.Derived2, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base
$this: VALUE_PARAMETER name:<this> type:foo.Derived2
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.Derived2'
CALL 'public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]' type=foo.Base origin=null
receiver: GET_VAR '<this>: foo.Derived2 declared in foo.Derived2.foo' type=foo.Derived2 origin=null
x: GET_VAR 'x: kotlin.String declared in foo.Derived2.foo' type=kotlin.String origin=null
FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun newBase (): foo.Base declared in foo' type=foo.Base origin=null
FUN DELEGATED_MEMBER name:bar visibility:public modality:OPEN <> ($this:foo.Derived2, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2
$this: VALUE_PARAMETER name:<this> type:foo.Derived2
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun bar (x: kotlin.String): kotlin.String declared in foo.Derived2'
CALL 'public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final]' type=foo.Base2 origin=null
receiver: GET_VAR '<this>: foo.Derived2 declared in foo.Derived2.bar' type=foo.Derived2 origin=null
x: GET_VAR 'x: kotlin.String declared in foo.Derived2.bar' type=kotlin.String origin=null
FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun newBase2 (): foo.Base2 declared in foo' type=foo.Base2 origin=null
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=EQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=null
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=GET_PROPERTY
other: CONST String type=kotlin.String value=":Derived"
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 declared in foo.Base
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.Base2
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.DerivedBase
$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 foo.Base
public open fun hashCode (): kotlin.Int declared in foo.Base2
public open fun hashCode (): kotlin.Int declared in foo.DerivedBase
$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 foo.Base
public open fun toString (): kotlin.String declared in foo.Base2
public open fun toString (): kotlin.String declared in foo.DerivedBase
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String
BLOCK_BODY
VAR name:d type:foo.Derived [var]
CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.Derived' type=foo.Derived origin=null
VAR name:d1 type:foo.Derived1 [var]
CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.Derived1' type=foo.Derived1 origin=null
VAR name:d2 type:foo.Derived2 [var]
CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.Derived2' type=foo.Derived2 origin=null
RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in foo'
CONST String type=kotlin.String value="OK"
@@ -0,0 +1,150 @@
package foo
interface Base {
abstract fun foo(x: String): String
}
class BaseImpl : Base {
constructor(s: String) /* primary */ {
super/*Any*/()
/* <init>() */
}
val s: String
field = s
get
override fun foo(x: String): String {
return "Base: " + <this>.<get-s>() + ":" + x
}
}
interface Base2 {
abstract fun bar(x: String): String
}
class Base2Impl : Base2 {
constructor(s: String) /* primary */ {
super/*Any*/()
/* <init>() */
}
val s: String
field = s
get
override fun bar(x: String): String {
return "Base2: " + <this>.<get-s>() + ":" + x
}
}
var global: String
field = ""
get
set
open class DerivedBase {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
init {
<set-global>(<set-?> = <get-global>().plus(other = ":DerivedBase"))
}
}
fun newBase(): Base {
<set-global>(<set-?> = <get-global>().plus(other = ":newBase"))
return BaseImpl(s = "test")
}
fun newBase2(): Base2 {
<set-global>(<set-?> = <get-global>().plus(other = ":newBase2"))
return Base2Impl(s = "test")
}
class Derived : DerivedBase, Base, Base2 {
constructor() /* primary */ {
super/*DerivedBase*/()
/* <init>() */
}
override fun foo(x: String): String {
return <this>.#$$delegate_0.foo(x = x)
}
private /* final field */ val $$delegate_0: Base = newBase()
override fun bar(x: String): String {
return <this>.#$$delegate_1.bar(x = x)
}
private /* final field */ val $$delegate_1: Base2 = newBase2()
init {
<set-global>(<set-?> = <get-global>().plus(other = ":Derived"))
}
}
class Derived1 : Base, DerivedBase, Base2 {
constructor() /* primary */ {
super/*DerivedBase*/()
/* <init>() */
}
override fun foo(x: String): String {
return <this>.#$$delegate_0.foo(x = x)
}
private /* final field */ val $$delegate_0: Base = newBase()
override fun bar(x: String): String {
return <this>.#$$delegate_1.bar(x = x)
}
private /* final field */ val $$delegate_1: Base2 = newBase2()
init {
<set-global>(<set-?> = <get-global>().plus(other = ":Derived"))
}
}
class Derived2 : Base, Base2, DerivedBase {
constructor() /* primary */ {
super/*DerivedBase*/()
/* <init>() */
}
override fun foo(x: String): String {
return <this>.#$$delegate_0.foo(x = x)
}
private /* final field */ val $$delegate_0: Base = newBase()
override fun bar(x: String): String {
return <this>.#$$delegate_1.bar(x = x)
}
private /* final field */ val $$delegate_1: Base2 = newBase2()
init {
<set-global>(<set-?> = <get-global>().plus(other = ":Derived"))
}
}
fun box(): String {
var d: Derived = Derived()
var d1: Derived1 = Derived1()
var d2: Derived2 = Derived2()
return "OK"
}
@@ -0,0 +1,376 @@
FILE fqName:foo fileName:/delegationEvaluationOrder2.kt
CLASS INTERFACE name:Base modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Base
FUN name:foo visibility:public modality:ABSTRACT <> ($this:foo.Base, x:kotlin.String) returnType:kotlin.String
$this: VALUE_PARAMETER name:<this> type:foo.Base
VALUE_PARAMETER name:x index:0 type:kotlin.String
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 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
CLASS CLASS name:BaseImpl modality:FINAL visibility:public superTypes:[foo.Base]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.BaseImpl
CONSTRUCTOR visibility:public <> (s:kotlin.String) returnType:foo.BaseImpl [primary]
VALUE_PARAMETER name:s index:0 type:kotlin.String
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:BaseImpl modality:FINAL visibility:public superTypes:[foo.Base]'
PROPERTY name:s visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]
EXPRESSION_BODY
GET_VAR 's: kotlin.String declared in foo.BaseImpl.<init>' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-s> visibility:public modality:FINAL <> ($this:foo.BaseImpl) returnType:kotlin.String
correspondingProperty: PROPERTY name:s visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:foo.BaseImpl
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-s> (): kotlin.String declared in foo.BaseImpl'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: foo.BaseImpl declared in foo.BaseImpl.<get-s>' type=foo.BaseImpl origin=null
FUN name:foo visibility:public modality:OPEN <> ($this:foo.BaseImpl, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base
$this: VALUE_PARAMETER name:<this> type:foo.BaseImpl
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.BaseImpl'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Base: "
CALL 'public final fun <get-s> (): kotlin.String declared in foo.BaseImpl' type=kotlin.String origin=GET_PROPERTY
$this: GET_VAR '<this>: foo.BaseImpl declared in foo.BaseImpl.foo' type=foo.BaseImpl origin=null
CONST String type=kotlin.String value=":"
GET_VAR 'x: kotlin.String declared in foo.BaseImpl.foo' 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 declared in foo.Base
$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 foo.Base
$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 foo.Base
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS INTERFACE name:Base2 modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Base2
FUN name:bar visibility:public modality:ABSTRACT <> ($this:foo.Base2, x:kotlin.String) returnType:kotlin.String
$this: VALUE_PARAMETER name:<this> type:foo.Base2
VALUE_PARAMETER name:x index:0 type:kotlin.String
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 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
CLASS CLASS name:Base2Impl modality:FINAL visibility:public superTypes:[foo.Base2]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Base2Impl
CONSTRUCTOR visibility:public <> (s:kotlin.String) returnType:foo.Base2Impl [primary]
VALUE_PARAMETER name:s index:0 type:kotlin.String
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Base2Impl modality:FINAL visibility:public superTypes:[foo.Base2]'
PROPERTY name:s visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]
EXPRESSION_BODY
GET_VAR 's: kotlin.String declared in foo.Base2Impl.<init>' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-s> visibility:public modality:FINAL <> ($this:foo.Base2Impl) returnType:kotlin.String
correspondingProperty: PROPERTY name:s visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:foo.Base2Impl
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-s> (): kotlin.String declared in foo.Base2Impl'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: foo.Base2Impl declared in foo.Base2Impl.<get-s>' type=foo.Base2Impl origin=null
FUN name:bar visibility:public modality:OPEN <> ($this:foo.Base2Impl, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2
$this: VALUE_PARAMETER name:<this> type:foo.Base2Impl
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun bar (x: kotlin.String): kotlin.String declared in foo.Base2Impl'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Base2: "
CALL 'public final fun <get-s> (): kotlin.String declared in foo.Base2Impl' type=kotlin.String origin=GET_PROPERTY
$this: GET_VAR '<this>: foo.Base2Impl declared in foo.Base2Impl.bar' type=foo.Base2Impl origin=null
CONST String type=kotlin.String value=":"
GET_VAR 'x: kotlin.String declared in foo.Base2Impl.bar' 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 declared in foo.Base2
$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 foo.Base2
$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 foo.Base2
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
PROPERTY name:global visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:global type:kotlin.String visibility:private [static]
EXPRESSION_BODY
CONST String type=kotlin.String value=""
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-global> visibility:public modality:FINAL <> () returnType:kotlin.String
correspondingProperty: PROPERTY name:global visibility:public modality:FINAL [var]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-global> (): kotlin.String declared in foo'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:global type:kotlin.String visibility:private [static]' type=kotlin.String origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-global> visibility:public modality:FINAL <> (<set-?>:kotlin.String) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:global visibility:public modality:FINAL [var]
VALUE_PARAMETER name:<set-?> index:0 type:kotlin.String
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:global type:kotlin.String visibility:private [static]' type=kotlin.Unit origin=null
value: GET_VAR '<set-?>: kotlin.String declared in foo.<set-global>' type=kotlin.String origin=null
CLASS CLASS name:DerivedBase modality:OPEN visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.DerivedBase
CONSTRUCTOR visibility:public <> () returnType:foo.DerivedBase [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:DerivedBase modality:OPEN visibility:public superTypes:[kotlin.Any]'
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
BLOCK type=kotlin.Unit origin=PLUSEQ
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=PLUSEQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUSEQ
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=PLUSEQ
other: CONST String type=kotlin.String value=":DerivedBase"
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 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:newBase visibility:public modality:FINAL <> () returnType:foo.Base
BLOCK_BODY
BLOCK type=kotlin.Unit origin=PLUSEQ
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=PLUSEQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUSEQ
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=PLUSEQ
other: CONST String type=kotlin.String value=":newBase"
RETURN type=kotlin.Nothing from='public final fun newBase (): foo.Base declared in foo'
CONSTRUCTOR_CALL 'public constructor <init> (s: kotlin.String) declared in foo.BaseImpl' type=foo.BaseImpl origin=null
s: CONST String type=kotlin.String value="test"
FUN name:newBase2 visibility:public modality:FINAL <> () returnType:foo.Base2
BLOCK_BODY
BLOCK type=kotlin.Unit origin=PLUSEQ
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=PLUSEQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUSEQ
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=PLUSEQ
other: CONST String type=kotlin.String value=":newBase2"
RETURN type=kotlin.Nothing from='public final fun newBase2 (): foo.Base2 declared in foo'
CONSTRUCTOR_CALL 'public constructor <init> (s: kotlin.String) declared in foo.Base2Impl' type=foo.Base2Impl origin=null
s: CONST String type=kotlin.String value="test"
CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[foo.DerivedBase; foo.Base; foo.Base2]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Derived
CONSTRUCTOR visibility:public <> () returnType:foo.Derived [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.DerivedBase'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[foo.DerivedBase; foo.Base; foo.Base2]'
FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun newBase (): foo.Base declared in foo' type=foo.Base origin=null
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:foo.Derived, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base
$this: VALUE_PARAMETER name:<this> type:foo.Derived
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.Derived'
CALL 'public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]' type=foo.Base origin=null
receiver: GET_VAR '<this>: foo.Derived declared in foo.Derived.foo' type=foo.Derived origin=null
x: GET_VAR 'x: kotlin.String declared in foo.Derived.foo' type=kotlin.String origin=null
FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun newBase2 (): foo.Base2 declared in foo' type=foo.Base2 origin=null
FUN DELEGATED_MEMBER name:bar visibility:public modality:OPEN <> ($this:foo.Derived, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2
$this: VALUE_PARAMETER name:<this> type:foo.Derived
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun bar (x: kotlin.String): kotlin.String declared in foo.Derived'
CALL 'public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final]' type=foo.Base2 origin=null
receiver: GET_VAR '<this>: foo.Derived declared in foo.Derived.bar' type=foo.Derived origin=null
x: GET_VAR 'x: kotlin.String declared in foo.Derived.bar' type=kotlin.String origin=null
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
BLOCK type=kotlin.Unit origin=PLUSEQ
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=PLUSEQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUSEQ
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=PLUSEQ
other: CONST String type=kotlin.String value=":Derived"
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 declared in foo.DerivedBase
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.Base
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.Base2
$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 foo.DerivedBase
public open fun hashCode (): kotlin.Int declared in foo.Base
public open fun hashCode (): kotlin.Int declared in foo.Base2
$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 foo.DerivedBase
public open fun toString (): kotlin.String declared in foo.Base
public open fun toString (): kotlin.String declared in foo.Base2
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:Derived1 modality:FINAL visibility:public superTypes:[foo.Base; foo.DerivedBase; foo.Base2]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Derived1
CONSTRUCTOR visibility:public <> () returnType:foo.Derived1 [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.DerivedBase'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Derived1 modality:FINAL visibility:public superTypes:[foo.Base; foo.DerivedBase; foo.Base2]'
FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun newBase (): foo.Base declared in foo' type=foo.Base origin=null
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:foo.Derived1, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base
$this: VALUE_PARAMETER name:<this> type:foo.Derived1
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.Derived1'
CALL 'public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]' type=foo.Base origin=null
receiver: GET_VAR '<this>: foo.Derived1 declared in foo.Derived1.foo' type=foo.Derived1 origin=null
x: GET_VAR 'x: kotlin.String declared in foo.Derived1.foo' type=kotlin.String origin=null
FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun newBase2 (): foo.Base2 declared in foo' type=foo.Base2 origin=null
FUN DELEGATED_MEMBER name:bar visibility:public modality:OPEN <> ($this:foo.Derived1, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2
$this: VALUE_PARAMETER name:<this> type:foo.Derived1
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun bar (x: kotlin.String): kotlin.String declared in foo.Derived1'
CALL 'public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final]' type=foo.Base2 origin=null
receiver: GET_VAR '<this>: foo.Derived1 declared in foo.Derived1.bar' type=foo.Derived1 origin=null
x: GET_VAR 'x: kotlin.String declared in foo.Derived1.bar' type=kotlin.String origin=null
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
BLOCK type=kotlin.Unit origin=PLUSEQ
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=PLUSEQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUSEQ
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=PLUSEQ
other: CONST String type=kotlin.String value=":Derived"
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 declared in foo.Base
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.DerivedBase
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.Base2
$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 foo.Base
public open fun hashCode (): kotlin.Int declared in foo.DerivedBase
public open fun hashCode (): kotlin.Int declared in foo.Base2
$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 foo.Base
public open fun toString (): kotlin.String declared in foo.DerivedBase
public open fun toString (): kotlin.String declared in foo.Base2
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:Derived2 modality:FINAL visibility:public superTypes:[foo.Base; foo.Base2; foo.DerivedBase]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.Derived2
CONSTRUCTOR visibility:public <> () returnType:foo.Derived2 [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.DerivedBase'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Derived2 modality:FINAL visibility:public superTypes:[foo.Base; foo.Base2; foo.DerivedBase]'
FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun newBase (): foo.Base declared in foo' type=foo.Base origin=null
FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN <> ($this:foo.Derived2, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base
$this: VALUE_PARAMETER name:<this> type:foo.Derived2
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun foo (x: kotlin.String): kotlin.String declared in foo.Derived2'
CALL 'public abstract fun foo (x: kotlin.String): kotlin.String declared in foo.Base' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:foo.Base visibility:private [final]' type=foo.Base origin=null
receiver: GET_VAR '<this>: foo.Derived2 declared in foo.Derived2.foo' type=foo.Derived2 origin=null
x: GET_VAR 'x: kotlin.String declared in foo.Derived2.foo' type=kotlin.String origin=null
FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun newBase2 (): foo.Base2 declared in foo' type=foo.Base2 origin=null
FUN DELEGATED_MEMBER name:bar visibility:public modality:OPEN <> ($this:foo.Derived2, x:kotlin.String) returnType:kotlin.String
overridden:
public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2
$this: VALUE_PARAMETER name:<this> type:foo.Derived2
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun bar (x: kotlin.String): kotlin.String declared in foo.Derived2'
CALL 'public abstract fun bar (x: kotlin.String): kotlin.String declared in foo.Base2' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_1 type:foo.Base2 visibility:private [final]' type=foo.Base2 origin=null
receiver: GET_VAR '<this>: foo.Derived2 declared in foo.Derived2.bar' type=foo.Derived2 origin=null
x: GET_VAR 'x: kotlin.String declared in foo.Derived2.bar' type=kotlin.String origin=null
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
BLOCK type=kotlin.Unit origin=PLUSEQ
CALL 'public final fun <set-global> (<set-?>: kotlin.String): kotlin.Unit declared in foo' type=kotlin.Unit origin=PLUSEQ
<set-?>: CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUSEQ
$this: CALL 'public final fun <get-global> (): kotlin.String declared in foo' type=kotlin.String origin=PLUSEQ
other: CONST String type=kotlin.String value=":Derived"
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 declared in foo.Base
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.Base2
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in foo.DerivedBase
$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 foo.Base
public open fun hashCode (): kotlin.Int declared in foo.Base2
public open fun hashCode (): kotlin.Int declared in foo.DerivedBase
$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 foo.Base
public open fun toString (): kotlin.String declared in foo.Base2
public open fun toString (): kotlin.String declared in foo.DerivedBase
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String
BLOCK_BODY
VAR name:d type:foo.Derived [var]
CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.Derived' type=foo.Derived origin=null
VAR name:d1 type:foo.Derived1 [var]
CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.Derived1' type=foo.Derived1 origin=null
VAR name:d2 type:foo.Derived2 [var]
CONSTRUCTOR_CALL 'public constructor <init> () declared in foo.Derived2' type=foo.Derived2 origin=null
RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in foo'
CONST String type=kotlin.String value="OK"
@@ -0,0 +1,61 @@
package foo
interface Base {
abstract fun foo(x: String): String
}
class BaseImpl(val s: String) : Base {
override fun foo(x: String): String = "Base: ${s}:${x}"
}
interface Base2 {
abstract fun bar(x: String): String
}
class Base2Impl(val s: String) : Base2 {
override fun bar(x: String): String = "Base2: ${s}:${x}"
}
var global = ""
open class DerivedBase() {
init {
global += ":DerivedBase"
}
}
fun newBase(): Base {
global += ":newBase"
return BaseImpl("test")
}
fun newBase2(): Base2 {
global += ":newBase2"
return Base2Impl("test")
}
class Derived() : DerivedBase(), Base by newBase(), Base2 by newBase2() {
init {
global += ":Derived"
}
}
class Derived1() : Base by newBase(), DerivedBase(), Base2 by newBase2() {
init {
global += ":Derived"
}
}
class Derived2() : Base by newBase(), Base2 by newBase2(), DerivedBase() {
init {
global += ":Derived"
}
}
fun box(): String {
var d = Derived()
var d1 = Derived1()
var d2 = Derived2()
return "OK"
}
@@ -0,0 +1,161 @@
package foo
interface Base {
abstract fun foo(x: String): String
}
class BaseImpl : Base {
constructor(s: String) /* primary */ {
super/*Any*/()
/* <init>() */
}
val s: String
field = s
get
override fun foo(x: String): String {
return "Base: " + <this>.<get-s>() + ":" + x
}
}
interface Base2 {
abstract fun bar(x: String): String
}
class Base2Impl : Base2 {
constructor(s: String) /* primary */ {
super/*Any*/()
/* <init>() */
}
val s: String
field = s
get
override fun bar(x: String): String {
return "Base2: " + <this>.<get-s>() + ":" + x
}
}
var global: String
field = ""
get
set
open class DerivedBase {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
init {
{ // BLOCK
<set-global>(<set-?> = <get-global>().plus(other = ":DerivedBase"))
}
}
}
fun newBase(): Base {
{ // BLOCK
<set-global>(<set-?> = <get-global>().plus(other = ":newBase"))
}
return BaseImpl(s = "test")
}
fun newBase2(): Base2 {
{ // BLOCK
<set-global>(<set-?> = <get-global>().plus(other = ":newBase2"))
}
return Base2Impl(s = "test")
}
class Derived : DerivedBase, Base, Base2 {
constructor() /* primary */ {
super/*DerivedBase*/()
/* <init>() */
}
private /* final field */ val $$delegate_0: Base = newBase()
override fun foo(x: String): String {
return <this>.#$$delegate_0.foo(x = x)
}
private /* final field */ val $$delegate_1: Base2 = newBase2()
override fun bar(x: String): String {
return <this>.#$$delegate_1.bar(x = x)
}
init {
{ // BLOCK
<set-global>(<set-?> = <get-global>().plus(other = ":Derived"))
}
}
}
class Derived1 : Base, DerivedBase, Base2 {
constructor() /* primary */ {
super/*DerivedBase*/()
/* <init>() */
}
private /* final field */ val $$delegate_0: Base = newBase()
override fun foo(x: String): String {
return <this>.#$$delegate_0.foo(x = x)
}
private /* final field */ val $$delegate_1: Base2 = newBase2()
override fun bar(x: String): String {
return <this>.#$$delegate_1.bar(x = x)
}
init {
{ // BLOCK
<set-global>(<set-?> = <get-global>().plus(other = ":Derived"))
}
}
}
class Derived2 : Base, Base2, DerivedBase {
constructor() /* primary */ {
super/*DerivedBase*/()
/* <init>() */
}
private /* final field */ val $$delegate_0: Base = newBase()
override fun foo(x: String): String {
return <this>.#$$delegate_0.foo(x = x)
}
private /* final field */ val $$delegate_1: Base2 = newBase2()
override fun bar(x: String): String {
return <this>.#$$delegate_1.bar(x = x)
}
init {
{ // BLOCK
<set-global>(<set-?> = <get-global>().plus(other = ":Derived"))
}
}
}
fun box(): String {
var d: Derived = Derived()
var d1: Derived1 = Derived1()
var d2: Derived2 = Derived2()
return "OK"
}
@@ -0,0 +1,319 @@
package foo
// CHECK:
// Mangled name: foo{}global
// Public signature: foo/global|4288684431328455501[0]
// Public signature debug description: {}global
var global: String
// CHECK JVM_IR:
// Mangled name: foo#<get-global>(){}kotlin.String
// Public signature: foo/global.<get-global>|-6997244913903542523[0]
// Public signature debug description: <get-global>(){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo#<get-global>(){}
// Public signature: foo/global.<get-global>|7627852862574367240[0]
// Public signature debug description: <get-global>(){}
get
// CHECK:
// Mangled name: foo#<set-global>(kotlin.String){}
// Public signature: foo/global.<set-global>|5315586845372819266[0]
// Public signature debug description: <set-global>(kotlin.String){}
set
// CHECK:
// Mangled name: foo.Base2Impl
// Public signature: foo/Base2Impl|null[0]
class Base2Impl : Base2 {
// CHECK:
// Mangled name: foo.Base2Impl{}s
// Public signature: foo/Base2Impl.s|7217541905509134881[0]
// Public signature debug description: {}s
val s: String
// CHECK JVM_IR:
// Mangled name: foo.Base2Impl#<get-s>(){}kotlin.String
// Public signature: foo/Base2Impl.s.<get-s>|4142379646177092803[0]
// Public signature debug description: <get-s>(){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo.Base2Impl#<get-s>(){}
// Public signature: foo/Base2Impl.s.<get-s>|-1662172381559511151[0]
// Public signature debug description: <get-s>(){}
get
// CHECK:
// Mangled name: foo.Base2Impl#<init>(kotlin.String){}
// Public signature: foo/Base2Impl.<init>|1280618353163213788[0]
// Public signature debug description: <init>(kotlin.String){}
constructor(s: String) /* primary */
// CHECK JVM_IR:
// Mangled name: foo.Base2Impl#bar(kotlin.String){}kotlin.String
// Public signature: foo/Base2Impl.bar|2000415168157940991[0]
// Public signature debug description: bar(kotlin.String){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo.Base2Impl#bar(kotlin.String){}
// Public signature: foo/Base2Impl.bar|5132770888056479978[0]
// Public signature debug description: bar(kotlin.String){}
override fun bar(x: String): String
}
// CHECK:
// Mangled name: foo.BaseImpl
// Public signature: foo/BaseImpl|null[0]
class BaseImpl : Base {
// CHECK:
// Mangled name: foo.BaseImpl{}s
// Public signature: foo/BaseImpl.s|7217541905509134881[0]
// Public signature debug description: {}s
val s: String
// CHECK JVM_IR:
// Mangled name: foo.BaseImpl#<get-s>(){}kotlin.String
// Public signature: foo/BaseImpl.s.<get-s>|4142379646177092803[0]
// Public signature debug description: <get-s>(){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo.BaseImpl#<get-s>(){}
// Public signature: foo/BaseImpl.s.<get-s>|-1662172381559511151[0]
// Public signature debug description: <get-s>(){}
get
// CHECK:
// Mangled name: foo.BaseImpl#<init>(kotlin.String){}
// Public signature: foo/BaseImpl.<init>|1280618353163213788[0]
// Public signature debug description: <init>(kotlin.String){}
constructor(s: String) /* primary */
// CHECK JVM_IR:
// Mangled name: foo.BaseImpl#foo(kotlin.String){}kotlin.String
// Public signature: foo/BaseImpl.foo|-5534735991146511619[0]
// Public signature debug description: foo(kotlin.String){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo.BaseImpl#foo(kotlin.String){}
// Public signature: foo/BaseImpl.foo|1351044947738582195[0]
// Public signature debug description: foo(kotlin.String){}
override fun foo(x: String): String
}
// CHECK:
// Mangled name: foo.Derived
// Public signature: foo/Derived|null[0]
class Derived : DerivedBase, Base, Base2 {
// CHECK:
// Mangled name: foo.Derived#<init>(){}
// Public signature: foo/Derived.<init>|-5645683436151566731[0]
// Public signature debug description: <init>(){}
constructor() /* primary */
// CHECK JVM_IR:
// Mangled name: foo.Derived.$$delegate_0
// Public signature: foo/Derived.$$delegate_0|-7286425919675154353[0]
// Public signature debug description:
// CHECK JS_IR NATIVE:
// Mangled name: foo.Derived.$$delegate_0
// Public signature: foo/Derived.$$delegate_0|-7286425919675154353[0]
// Public signature debug description:
private /* final field */ val $$delegate_0: Base
// CHECK JVM_IR:
// Mangled name: foo.Derived.$$delegate_1
// Public signature: foo/Derived.$$delegate_1|-7286425919675154353[0]
// Public signature debug description:
// CHECK JS_IR NATIVE:
// Mangled name: foo.Derived.$$delegate_1
// Public signature: foo/Derived.$$delegate_1|-7286425919675154353[0]
// Public signature debug description:
private /* final field */ val $$delegate_1: Base2
// CHECK JVM_IR:
// Mangled name: foo.Derived#bar(kotlin.String){}kotlin.String
// Public signature: foo/Derived.bar|2000415168157940991[0]
// Public signature debug description: bar(kotlin.String){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo.Derived#bar(kotlin.String){}
// Public signature: foo/Derived.bar|5132770888056479978[0]
// Public signature debug description: bar(kotlin.String){}
override fun bar(x: String): String
// CHECK JVM_IR:
// Mangled name: foo.Derived#foo(kotlin.String){}kotlin.String
// Public signature: foo/Derived.foo|-5534735991146511619[0]
// Public signature debug description: foo(kotlin.String){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo.Derived#foo(kotlin.String){}
// Public signature: foo/Derived.foo|1351044947738582195[0]
// Public signature debug description: foo(kotlin.String){}
override fun foo(x: String): String
}
// CHECK:
// Mangled name: foo.Derived1
// Public signature: foo/Derived1|null[0]
class Derived1 : DerivedBase, Base, Base2 {
// CHECK:
// Mangled name: foo.Derived1#<init>(){}
// Public signature: foo/Derived1.<init>|-5645683436151566731[0]
// Public signature debug description: <init>(){}
constructor() /* primary */
// CHECK JVM_IR:
// Mangled name: foo.Derived1.$$delegate_0
// Public signature: foo/Derived1.$$delegate_0|-7286425919675154353[0]
// Public signature debug description:
// CHECK JS_IR NATIVE:
// Mangled name: foo.Derived1.$$delegate_0
// Public signature: foo/Derived1.$$delegate_0|-7286425919675154353[0]
// Public signature debug description:
private /* final field */ val $$delegate_0: Base
// CHECK JVM_IR:
// Mangled name: foo.Derived1.$$delegate_1
// Public signature: foo/Derived1.$$delegate_1|-7286425919675154353[0]
// Public signature debug description:
// CHECK JS_IR NATIVE:
// Mangled name: foo.Derived1.$$delegate_1
// Public signature: foo/Derived1.$$delegate_1|-7286425919675154353[0]
// Public signature debug description:
private /* final field */ val $$delegate_1: Base2
// CHECK JVM_IR:
// Mangled name: foo.Derived1#bar(kotlin.String){}kotlin.String
// Public signature: foo/Derived1.bar|2000415168157940991[0]
// Public signature debug description: bar(kotlin.String){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo.Derived1#bar(kotlin.String){}
// Public signature: foo/Derived1.bar|5132770888056479978[0]
// Public signature debug description: bar(kotlin.String){}
override fun bar(x: String): String
// CHECK JVM_IR:
// Mangled name: foo.Derived1#foo(kotlin.String){}kotlin.String
// Public signature: foo/Derived1.foo|-5534735991146511619[0]
// Public signature debug description: foo(kotlin.String){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo.Derived1#foo(kotlin.String){}
// Public signature: foo/Derived1.foo|1351044947738582195[0]
// Public signature debug description: foo(kotlin.String){}
override fun foo(x: String): String
}
// CHECK:
// Mangled name: foo.Derived2
// Public signature: foo/Derived2|null[0]
class Derived2 : DerivedBase, Base, Base2 {
// CHECK:
// Mangled name: foo.Derived2#<init>(){}
// Public signature: foo/Derived2.<init>|-5645683436151566731[0]
// Public signature debug description: <init>(){}
constructor() /* primary */
// CHECK JVM_IR:
// Mangled name: foo.Derived2.$$delegate_0
// Public signature: foo/Derived2.$$delegate_0|-7286425919675154353[0]
// Public signature debug description:
// CHECK JS_IR NATIVE:
// Mangled name: foo.Derived2.$$delegate_0
// Public signature: foo/Derived2.$$delegate_0|-7286425919675154353[0]
// Public signature debug description:
private /* final field */ val $$delegate_0: Base
// CHECK JVM_IR:
// Mangled name: foo.Derived2.$$delegate_1
// Public signature: foo/Derived2.$$delegate_1|-7286425919675154353[0]
// Public signature debug description:
// CHECK JS_IR NATIVE:
// Mangled name: foo.Derived2.$$delegate_1
// Public signature: foo/Derived2.$$delegate_1|-7286425919675154353[0]
// Public signature debug description:
private /* final field */ val $$delegate_1: Base2
// CHECK JVM_IR:
// Mangled name: foo.Derived2#bar(kotlin.String){}kotlin.String
// Public signature: foo/Derived2.bar|2000415168157940991[0]
// Public signature debug description: bar(kotlin.String){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo.Derived2#bar(kotlin.String){}
// Public signature: foo/Derived2.bar|5132770888056479978[0]
// Public signature debug description: bar(kotlin.String){}
override fun bar(x: String): String
// CHECK JVM_IR:
// Mangled name: foo.Derived2#foo(kotlin.String){}kotlin.String
// Public signature: foo/Derived2.foo|-5534735991146511619[0]
// Public signature debug description: foo(kotlin.String){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo.Derived2#foo(kotlin.String){}
// Public signature: foo/Derived2.foo|1351044947738582195[0]
// Public signature debug description: foo(kotlin.String){}
override fun foo(x: String): String
}
// CHECK:
// Mangled name: foo.DerivedBase
// Public signature: foo/DerivedBase|null[0]
open class DerivedBase {
// CHECK:
// Mangled name: foo.DerivedBase#<init>(){}
// Public signature: foo/DerivedBase.<init>|-5645683436151566731[0]
// Public signature debug description: <init>(){}
constructor() /* primary */
}
// CHECK:
// Mangled name: foo.Base
// Public signature: foo/Base|null[0]
interface Base {
// CHECK JVM_IR:
// Mangled name: foo.Base#foo(kotlin.String){}kotlin.String
// Public signature: foo/Base.foo|-5534735991146511619[0]
// Public signature debug description: foo(kotlin.String){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo.Base#foo(kotlin.String){}
// Public signature: foo/Base.foo|1351044947738582195[0]
// Public signature debug description: foo(kotlin.String){}
abstract fun foo(x: String): String
}
// CHECK:
// Mangled name: foo.Base2
// Public signature: foo/Base2|null[0]
interface Base2 {
// CHECK JVM_IR:
// Mangled name: foo.Base2#bar(kotlin.String){}kotlin.String
// Public signature: foo/Base2.bar|2000415168157940991[0]
// Public signature debug description: bar(kotlin.String){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo.Base2#bar(kotlin.String){}
// Public signature: foo/Base2.bar|5132770888056479978[0]
// Public signature debug description: bar(kotlin.String){}
abstract fun bar(x: String): String
}
// CHECK JVM_IR:
// Mangled name: foo#box(){}kotlin.String
// Public signature: foo/box|-9347091776561469[0]
// Public signature debug description: box(){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: foo#box(){}
// Public signature: foo/box|2173511048851971368[0]
// Public signature debug description: box(){}
fun box(): String
// CHECK JVM_IR:
// Mangled name: foo#newBase(){}foo.Base
// Public signature: foo/newBase|4074800280318487147[0]
// Public signature debug description: newBase(){}foo.Base
// CHECK JS_IR NATIVE:
// Mangled name: foo#newBase(){}
// Public signature: foo/newBase|-6094796879594303932[0]
// Public signature debug description: newBase(){}
fun newBase(): Base
// CHECK JVM_IR:
// Mangled name: foo#newBase2(){}foo.Base2
// Public signature: foo/newBase2|2155458060891401186[0]
// Public signature debug description: newBase2(){}foo.Base2
// CHECK JS_IR NATIVE:
// Mangled name: foo#newBase2(){}
// Public signature: foo/newBase2|-3649949204944094884[0]
// Public signature debug description: newBase2(){}
fun newBase2(): Base2