Put 'thisReceiver' declaration in class

Interfaces also have 'thisReceiver'
This commit is contained in:
Dmitry Petrov
2017-05-02 10:54:56 +03:00
parent 90ec53b3b0
commit fa4dc26814
103 changed files with 439 additions and 205 deletions
@@ -0,0 +1,76 @@
FILE /thisOfGenericOuterClass.kt
CLASS CLASS Outer
$this: VALUE_PARAMETER this@Outer: Outer<T>
TYPE_PARAMETER <T>
CONSTRUCTOR public constructor Outer<T>(x: T)
VALUE_PARAMETER value-parameter x: T
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
INSTANCE_INITIALIZER_CALL classDescriptor='Outer'
PROPERTY public final val x: T
FIELD PROPERTY_BACKING_FIELD public final val x: T
EXPRESSION_BODY
GET_VAR 'value-parameter x: T' type=T origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-x>(): T
$this: VALUE_PARAMETER this@Outer: Outer<T>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-x>(): T'
GET_FIELD 'x: T' type=T origin=null
receiver: GET_VAR 'this@Outer: Outer<T>' type=Outer<T> origin=null
CLASS CLASS Inner
$this: VALUE_PARAMETER this@Inner: Inner<T>
CONSTRUCTOR public constructor Inner(y: kotlin.Int)
$outer: VALUE_PARAMETER this@Outer: Outer<T>
VALUE_PARAMETER value-parameter y: kotlin.Int
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
INSTANCE_INITIALIZER_CALL classDescriptor='Inner'
PROPERTY public final val y: kotlin.Int
FIELD PROPERTY_BACKING_FIELD public final val y: kotlin.Int
EXPRESSION_BODY
GET_VAR 'value-parameter y: Int' type=kotlin.Int origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-y>(): kotlin.Int
$this: VALUE_PARAMETER this@Inner: Inner<T>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-y>(): Int'
GET_FIELD 'y: Int' type=kotlin.Int origin=null
receiver: GET_VAR 'this@Inner: Inner<T>' type=Outer<T>.Inner origin=null
FUN FAKE_OVERRIDE public open override fun equals(other: kotlin.Any?): kotlin.Boolean
FUN FAKE_OVERRIDE public open override fun hashCode(): kotlin.Int
FUN FAKE_OVERRIDE public open override fun toString(): kotlin.String
FUN FAKE_OVERRIDE public open override fun equals(other: kotlin.Any?): kotlin.Boolean
FUN FAKE_OVERRIDE public open override fun hashCode(): kotlin.Int
FUN FAKE_OVERRIDE public open override fun toString(): kotlin.String
FUN public fun Outer<kotlin.Int>.test(): Outer<kotlin.Int>.Inner
$receiver: VALUE_PARAMETER this@test: Outer<Int>
BLOCK_BODY
RETURN type=kotlin.Nothing from='test() on Outer<Int>: Outer<Int>.Inner'
BLOCK type=test.<no name provided> origin=OBJECT_LITERAL
CLASS CLASS <no name provided>
$this: VALUE_PARAMETER this@<no name provided>: <no name provided>
CONSTRUCTOR public constructor <no name provided>()
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Inner(Int)'
$this: GET_VAR 'this@test: Outer<Int>' type=Outer<kotlin.Int> origin=null
y: CONST Int type=kotlin.Int value='42'
INSTANCE_INITIALIZER_CALL classDescriptor='<no name provided>'
PROPERTY public final val xx: kotlin.Int
FIELD PROPERTY_BACKING_FIELD public final val xx: kotlin.Int
EXPRESSION_BODY
CALL 'plus(Int): Int' type=kotlin.Int origin=PLUS
$this: CALL '<get-x>(): Int' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'this@test: Outer<Int>' type=Outer<kotlin.Int> origin=null
other: CALL '<get-y>(): Int' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR 'this@<no name provided>: <no name provided>' type=test.<no name provided> origin=null
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-xx>(): kotlin.Int
$this: VALUE_PARAMETER this@<no name provided>: <no name provided>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-xx>(): Int'
GET_FIELD 'xx: Int' type=kotlin.Int origin=null
receiver: GET_VAR 'this@<no name provided>: <no name provided>' type=test.<no name provided> origin=null
PROPERTY FAKE_OVERRIDE public final override val y: kotlin.Int
FUN FAKE_OVERRIDE public final override fun <get-y>(): kotlin.Int
FUN FAKE_OVERRIDE public open override fun equals(other: kotlin.Any?): kotlin.Boolean
FUN FAKE_OVERRIDE public open override fun hashCode(): kotlin.Int
FUN FAKE_OVERRIDE public open override fun toString(): kotlin.String
CALL 'constructor <no name provided>()' type=test.<no name provided> origin=OBJECT_LITERAL