Generate IrTypeParameter and IrValueParameter declarations

This commit is contained in:
Dmitry Petrov
2017-03-15 17:47:46 +03:00
parent 03b664febd
commit 8cea27b5bb
149 changed files with 2251 additions and 331 deletions
@@ -0,0 +1,8 @@
interface TestInterface<T> {
interface TestNestedInterface<TT>
}
class Test<T0> {
class TestNested<T1>
inner class TestInner<T2>
}
@@ -0,0 +1,27 @@
FILE /class.kt
CLASS INTERFACE TestInterface
TYPE_PARAMETER <T>
CLASS INTERFACE TestNestedInterface
TYPE_PARAMETER <TT>
CLASS CLASS Test
TYPE_PARAMETER <T0>
CONSTRUCTOR public constructor Test<T0>()
TYPE_PARAMETER <T0>
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
INSTANCE_INITIALIZER_CALL classDescriptor='Test'
CLASS CLASS TestNested
TYPE_PARAMETER <T1>
CONSTRUCTOR public constructor TestNested<T1>()
TYPE_PARAMETER <T1>
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
INSTANCE_INITIALIZER_CALL classDescriptor='TestNested'
CLASS CLASS TestInner
TYPE_PARAMETER <T2>
CONSTRUCTOR public constructor TestInner<T2>()
TYPE_PARAMETER <T2>
$this: VALUE_PARAMETER <receiver: Test>
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
INSTANCE_INITIALIZER_CALL classDescriptor='TestInner'
@@ -0,0 +1,13 @@
class Test1<T1, T2>(val x: T1, val y: T2)
class Test2(x: Int, val y: String) {
inner class TestInner<Z>(val z : Z) {
constructor(z: Z, i: Int) : this(z)
}
}
class Test3(val x: Int, val y: String = "")
class Test4<T>(val x: Int) {
constructor(x: Int, y: Int = 42) : this(x + y)
}
@@ -0,0 +1,137 @@
FILE /constructor.kt
CLASS CLASS Test1
TYPE_PARAMETER <T1>
TYPE_PARAMETER <T2>
CONSTRUCTOR public constructor Test1<T1, T2>(x: T1, y: T2)
TYPE_PARAMETER <T1>
TYPE_PARAMETER <T2>
VALUE_PARAMETER value-parameter x: T1
VALUE_PARAMETER value-parameter y: T2
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
INSTANCE_INITIALIZER_CALL classDescriptor='Test1'
PROPERTY public final val x: T1
FIELD PROPERTY_BACKING_FIELD public final val x: T1
EXPRESSION_BODY
GET_VAR 'value-parameter x: T1' type=T1 origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-x>(): T1
$this: VALUE_PARAMETER <receiver: Test1>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-x>(): T1'
GET_FIELD 'x: T1' type=T1 origin=null
receiver: GET_VAR '<receiver: Test1>' type=Test1<T1, T2> origin=null
PROPERTY public final val y: T2
FIELD PROPERTY_BACKING_FIELD public final val y: T2
EXPRESSION_BODY
GET_VAR 'value-parameter y: T2' type=T2 origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-y>(): T2
$this: VALUE_PARAMETER <receiver: Test1>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-y>(): T2'
GET_FIELD 'y: T2' type=T2 origin=null
receiver: GET_VAR '<receiver: Test1>' type=Test1<T1, T2> origin=null
CLASS CLASS Test2
CONSTRUCTOR public constructor Test2(x: kotlin.Int, y: kotlin.String)
VALUE_PARAMETER value-parameter x: kotlin.Int
VALUE_PARAMETER value-parameter y: kotlin.String
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
INSTANCE_INITIALIZER_CALL classDescriptor='Test2'
PROPERTY public final val y: kotlin.String
FIELD PROPERTY_BACKING_FIELD public final val y: kotlin.String
EXPRESSION_BODY
GET_VAR 'value-parameter y: String' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-y>(): kotlin.String
$this: VALUE_PARAMETER <receiver: Test2>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-y>(): String'
GET_FIELD 'y: String' type=kotlin.String origin=null
receiver: GET_VAR '<receiver: Test2>' type=Test2 origin=null
CLASS CLASS TestInner
TYPE_PARAMETER <Z>
CONSTRUCTOR public constructor TestInner<Z>(z: Z)
TYPE_PARAMETER <Z>
$this: VALUE_PARAMETER <receiver: Test2>
VALUE_PARAMETER value-parameter z: Z
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
INSTANCE_INITIALIZER_CALL classDescriptor='TestInner'
PROPERTY public final val z: Z
FIELD PROPERTY_BACKING_FIELD public final val z: Z
EXPRESSION_BODY
GET_VAR 'value-parameter z: Z' type=Z origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-z>(): Z
$this: VALUE_PARAMETER <receiver: TestInner>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-z>(): Z'
GET_FIELD 'z: Z' type=Z origin=null
receiver: GET_VAR '<receiver: TestInner>' type=Test2.TestInner<Z> origin=null
CONSTRUCTOR public constructor TestInner<Z>(z: Z, i: kotlin.Int)
TYPE_PARAMETER <Z>
$this: VALUE_PARAMETER <receiver: Test2>
VALUE_PARAMETER value-parameter z: Z
VALUE_PARAMETER value-parameter i: kotlin.Int
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor TestInner(Z)'
<Z>: Z
$this: GET_VAR '<receiver: Test2>' type=Test2 origin=null
z: GET_VAR 'value-parameter z: Z' type=Z origin=null
CLASS CLASS Test3
CONSTRUCTOR public constructor Test3(x: kotlin.Int, y: kotlin.String = ...)
VALUE_PARAMETER value-parameter x: kotlin.Int
VALUE_PARAMETER value-parameter y: kotlin.String = ...
EXPRESSION_BODY
CONST String type=kotlin.String value=''
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
INSTANCE_INITIALIZER_CALL classDescriptor='Test3'
PROPERTY public final val x: kotlin.Int
FIELD PROPERTY_BACKING_FIELD public final val x: kotlin.Int
EXPRESSION_BODY
GET_VAR 'value-parameter x: Int' type=kotlin.Int origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-x>(): kotlin.Int
$this: VALUE_PARAMETER <receiver: Test3>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-x>(): Int'
GET_FIELD 'x: Int' type=kotlin.Int origin=null
receiver: GET_VAR '<receiver: Test3>' type=Test3 origin=null
PROPERTY public final val y: kotlin.String
FIELD PROPERTY_BACKING_FIELD public final val y: kotlin.String
EXPRESSION_BODY
GET_VAR 'value-parameter y: String = ...' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-y>(): kotlin.String
$this: VALUE_PARAMETER <receiver: Test3>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-y>(): String'
GET_FIELD 'y: String' type=kotlin.String origin=null
receiver: GET_VAR '<receiver: Test3>' type=Test3 origin=null
CLASS CLASS Test4
TYPE_PARAMETER <T>
CONSTRUCTOR public constructor Test4<T>(x: kotlin.Int)
TYPE_PARAMETER <T>
VALUE_PARAMETER value-parameter x: kotlin.Int
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
INSTANCE_INITIALIZER_CALL classDescriptor='Test4'
PROPERTY public final val x: kotlin.Int
FIELD PROPERTY_BACKING_FIELD public final val x: kotlin.Int
EXPRESSION_BODY
GET_VAR 'value-parameter x: Int' type=kotlin.Int origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-x>(): kotlin.Int
$this: VALUE_PARAMETER <receiver: Test4>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-x>(): Int'
GET_FIELD 'x: Int' type=kotlin.Int origin=null
receiver: GET_VAR '<receiver: Test4>' type=Test4<T> origin=null
CONSTRUCTOR public constructor Test4<T>(x: kotlin.Int, y: kotlin.Int = ...)
TYPE_PARAMETER <T>
VALUE_PARAMETER value-parameter x: kotlin.Int
VALUE_PARAMETER value-parameter y: kotlin.Int = ...
EXPRESSION_BODY
CONST Int type=kotlin.Int value='42'
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Test4(Int)'
<T>: T
x: CALL 'plus(Int): Int' type=kotlin.Int origin=PLUS
$this: GET_VAR 'value-parameter x: Int' type=kotlin.Int origin=null
other: GET_VAR 'value-parameter y: Int = ...' type=kotlin.Int origin=null
@@ -0,0 +1 @@
data class Test<T>(val x: T, val y: String = "")
@@ -0,0 +1,146 @@
FILE /dataClassMembers.kt
CLASS CLASS Test
TYPE_PARAMETER <T>
CONSTRUCTOR public constructor Test<T>(x: T, y: kotlin.String = ...)
TYPE_PARAMETER <T>
VALUE_PARAMETER value-parameter x: T
VALUE_PARAMETER value-parameter y: kotlin.String = ...
EXPRESSION_BODY
CONST String type=kotlin.String value=''
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
INSTANCE_INITIALIZER_CALL classDescriptor='Test'
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 <receiver: Test>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-x>(): T'
GET_FIELD 'x: T' type=T origin=null
receiver: GET_VAR '<receiver: Test>' type=Test<T> origin=null
PROPERTY public final val y: kotlin.String
FIELD PROPERTY_BACKING_FIELD public final val y: kotlin.String
EXPRESSION_BODY
GET_VAR 'value-parameter y: String = ...' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-y>(): kotlin.String
$this: VALUE_PARAMETER <receiver: Test>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-y>(): String'
GET_FIELD 'y: String' type=kotlin.String origin=null
receiver: GET_VAR '<receiver: Test>' type=Test<T> origin=null
FUN GENERATED_DATA_CLASS_MEMBER public final operator fun component1(): T
$this: VALUE_PARAMETER <receiver: Test>
BLOCK_BODY
RETURN type=kotlin.Nothing from='component1(): T'
CALL '<get-x>(): T' type=T origin=GET_PROPERTY
$this: GET_VAR '<receiver: Test>' type=Test<T> origin=null
FUN GENERATED_DATA_CLASS_MEMBER public final operator fun component2(): kotlin.String
$this: VALUE_PARAMETER <receiver: Test>
BLOCK_BODY
RETURN type=kotlin.Nothing from='component2(): String'
CALL '<get-y>(): String' type=kotlin.String origin=GET_PROPERTY
$this: GET_VAR '<receiver: Test>' type=Test<T> origin=null
FUN GENERATED_DATA_CLASS_MEMBER public final fun copy(x: T = ..., y: kotlin.String = ...): Test<T>
$this: VALUE_PARAMETER <receiver: Test>
VALUE_PARAMETER value-parameter x: T = ...
EXPRESSION_BODY
CALL '<get-x>(): T' type=T origin=GET_PROPERTY
$this: GET_VAR '<receiver: Test>' type=Test<T> origin=null
VALUE_PARAMETER value-parameter y: kotlin.String = ...
EXPRESSION_BODY
CALL '<get-y>(): String' type=kotlin.String origin=GET_PROPERTY
$this: GET_VAR '<receiver: Test>' type=Test<T> origin=null
BLOCK_BODY
RETURN type=kotlin.Nothing from='copy(T = ..., String = ...): Test<T>'
CALL 'constructor Test(T, String = ...)' type=Test<T> origin=null
x: GET_VAR 'value-parameter x: T = ...' type=T origin=null
y: GET_VAR 'value-parameter y: String = ...' type=kotlin.String origin=null
FUN GENERATED_DATA_CLASS_MEMBER public open override fun toString(): kotlin.String
$this: VALUE_PARAMETER <receiver: Test>
BLOCK_BODY
RETURN type=kotlin.Nothing from='toString(): String'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value='Test('
CONST String type=kotlin.String value='x='
CALL '<get-x>(): T' type=T origin=GET_PROPERTY
$this: GET_VAR '<receiver: Test>' type=Test<T> origin=null
CONST String type=kotlin.String value=', '
CONST String type=kotlin.String value='y='
CALL '<get-y>(): String' type=kotlin.String origin=GET_PROPERTY
$this: GET_VAR '<receiver: Test>' type=Test<T> origin=null
CONST String type=kotlin.String value=')'
FUN GENERATED_DATA_CLASS_MEMBER public open override fun hashCode(): kotlin.Int
$this: VALUE_PARAMETER <receiver: Test>
BLOCK_BODY
VAR IR_TEMPORARY_VARIABLE var tmp0_result: kotlin.Int
CONST Int type=kotlin.Int value='0'
SET_VAR 'tmp0_result: Int' type=kotlin.Unit origin=EQ
BLOCK type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE val tmp1: T
CALL '<get-x>(): T' type=T origin=GET_PROPERTY
$this: GET_VAR '<receiver: Test>' type=Test<T> origin=null
WHEN type=kotlin.Int origin=null
BRANCH
if: CALL 'EQEQ(Any?, Any?): Boolean' type=kotlin.Boolean origin=EQEQ
arg0: GET_VAR 'tmp1: T' type=T origin=null
arg1: CONST Null type=kotlin.Nothing? value='null'
then: CONST Int type=kotlin.Int value='0'
BRANCH
if: CONST Boolean type=kotlin.Boolean value='true'
then: CALL 'hashCode(): Int' type=kotlin.Int origin=null
$this: TYPE_OP type=kotlin.Any origin=IMPLICIT_CAST typeOperand=kotlin.Any
GET_VAR 'tmp1: T' type=T origin=null
SET_VAR 'tmp0_result: Int' type=kotlin.Unit origin=EQ
CALL 'plus(Int): Int' type=kotlin.Int origin=null
$this: CALL 'times(Int): Int' type=kotlin.Int origin=null
$this: GET_VAR 'tmp0_result: Int' type=kotlin.Int origin=null
other: CONST Int type=kotlin.Int value='31'
other: CALL 'hashCode(): Int' type=kotlin.Int origin=null
$this: CALL '<get-y>(): String' type=kotlin.String origin=GET_PROPERTY
$this: GET_VAR '<receiver: Test>' type=Test<T> origin=null
RETURN type=kotlin.Nothing from='hashCode(): Int'
GET_VAR 'tmp0_result: Int' type=kotlin.Int origin=null
FUN GENERATED_DATA_CLASS_MEMBER public open override fun equals(other: kotlin.Any?): kotlin.Boolean
$this: VALUE_PARAMETER <receiver: Test>
VALUE_PARAMETER value-parameter other: kotlin.Any?
BLOCK_BODY
WHEN type=kotlin.Unit origin=null
BRANCH
if: CALL 'EQEQEQ(Any?, Any?): Boolean' type=kotlin.Boolean origin=EQEQEQ
arg0: GET_VAR '<receiver: Test>' type=Test<T> origin=null
arg1: GET_VAR 'value-parameter other: Any?' type=kotlin.Any? origin=null
then: RETURN type=kotlin.Nothing from='equals(Any?): Boolean'
CONST Boolean type=kotlin.Boolean value='true'
WHEN type=kotlin.Unit origin=null
BRANCH
if: TYPE_OP type=kotlin.Boolean origin=NOT_INSTANCEOF typeOperand=Test<T>
GET_VAR 'value-parameter other: Any?' type=kotlin.Any? origin=null
then: RETURN type=kotlin.Nothing from='equals(Any?): Boolean'
CONST Boolean type=kotlin.Boolean value='false'
VAR IR_TEMPORARY_VARIABLE val tmp0_other_with_cast: Test<T>
TYPE_OP type=Test<T> origin=CAST typeOperand=Test<T>
GET_VAR 'value-parameter other: Any?' type=kotlin.Any? origin=null
WHEN type=kotlin.Unit origin=null
BRANCH
if: CALL 'NOT(Boolean): Boolean' type=kotlin.Boolean origin=EXCLEQ
arg0: CALL 'EQEQ(Any?, Any?): Boolean' type=kotlin.Boolean origin=EXCLEQ
arg0: CALL '<get-x>(): T' type=T origin=GET_PROPERTY
$this: GET_VAR '<receiver: Test>' type=Test<T> origin=null
arg1: CALL '<get-x>(): T' type=T origin=GET_PROPERTY
$this: GET_VAR 'tmp0_other_with_cast: Test<T>' type=Test<T> origin=null
then: RETURN type=kotlin.Nothing from='equals(Any?): Boolean'
CONST Boolean type=kotlin.Boolean value='false'
WHEN type=kotlin.Unit origin=null
BRANCH
if: CALL 'NOT(Boolean): Boolean' type=kotlin.Boolean origin=EXCLEQ
arg0: CALL 'EQEQ(Any?, Any?): Boolean' type=kotlin.Boolean origin=EXCLEQ
arg0: CALL '<get-y>(): String' type=kotlin.String origin=GET_PROPERTY
$this: GET_VAR '<receiver: Test>' type=Test<T> origin=null
arg1: CALL '<get-y>(): String' type=kotlin.String origin=GET_PROPERTY
$this: GET_VAR 'tmp0_other_with_cast: Test<T>' type=Test<T> origin=null
then: RETURN type=kotlin.Nothing from='equals(Any?): Boolean'
CONST Boolean type=kotlin.Boolean value='false'
RETURN type=kotlin.Nothing from='equals(Any?): Boolean'
CONST Boolean type=kotlin.Boolean value='true'
@@ -0,0 +1,14 @@
val test1 = 42
var test2 = 42
class Host {
val testMember1 = 42
var testMember2 = 42
}
class InPrimaryCtor<T>(
val testInPrimaryCtor1: T,
var testInPrimaryCtor2: Int = 42
)
@@ -0,0 +1,92 @@
FILE /defaultPropertyAccessors.kt
PROPERTY public val test1: kotlin.Int = 42
FIELD PROPERTY_BACKING_FIELD public val test1: kotlin.Int = 42
EXPRESSION_BODY
CONST Int type=kotlin.Int value='42'
FUN DEFAULT_PROPERTY_ACCESSOR public fun <get-test1>(): kotlin.Int
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-test1>(): Int'
GET_FIELD 'test1: Int' type=kotlin.Int origin=null
PROPERTY public var test2: kotlin.Int
FIELD PROPERTY_BACKING_FIELD public var test2: kotlin.Int
EXPRESSION_BODY
CONST Int type=kotlin.Int value='42'
FUN DEFAULT_PROPERTY_ACCESSOR public fun <get-test2>(): kotlin.Int
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-test2>(): Int'
GET_FIELD 'test2: Int' type=kotlin.Int origin=null
FUN DEFAULT_PROPERTY_ACCESSOR public fun <set-test2>(<set-?>: kotlin.Int): kotlin.Unit
VALUE_PARAMETER value-parameter <set-?>: kotlin.Int
BLOCK_BODY
SET_FIELD 'test2: Int' type=kotlin.Unit origin=null
value: GET_VAR 'value-parameter <set-?>: Int' type=kotlin.Int origin=null
CLASS CLASS Host
CONSTRUCTOR public constructor Host()
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
INSTANCE_INITIALIZER_CALL classDescriptor='Host'
PROPERTY public final val testMember1: kotlin.Int = 42
FIELD PROPERTY_BACKING_FIELD public final val testMember1: kotlin.Int = 42
EXPRESSION_BODY
CONST Int type=kotlin.Int value='42'
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-testMember1>(): kotlin.Int
$this: VALUE_PARAMETER <receiver: Host>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-testMember1>(): Int'
GET_FIELD 'testMember1: Int' type=kotlin.Int origin=null
receiver: GET_VAR '<receiver: Host>' type=Host origin=null
PROPERTY public final var testMember2: kotlin.Int
FIELD PROPERTY_BACKING_FIELD public final var testMember2: kotlin.Int
EXPRESSION_BODY
CONST Int type=kotlin.Int value='42'
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-testMember2>(): kotlin.Int
$this: VALUE_PARAMETER <receiver: Host>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-testMember2>(): Int'
GET_FIELD 'testMember2: Int' type=kotlin.Int origin=null
receiver: GET_VAR '<receiver: Host>' type=Host origin=null
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <set-testMember2>(<set-?>: kotlin.Int): kotlin.Unit
$this: VALUE_PARAMETER <receiver: Host>
VALUE_PARAMETER value-parameter <set-?>: kotlin.Int
BLOCK_BODY
SET_FIELD 'testMember2: Int' type=kotlin.Unit origin=null
receiver: GET_VAR '<receiver: Host>' type=Host origin=null
value: GET_VAR 'value-parameter <set-?>: Int' type=kotlin.Int origin=null
CLASS CLASS InPrimaryCtor
TYPE_PARAMETER <T>
CONSTRUCTOR public constructor InPrimaryCtor<T>(testInPrimaryCtor1: T, testInPrimaryCtor2: kotlin.Int = ...)
TYPE_PARAMETER <T>
VALUE_PARAMETER value-parameter testInPrimaryCtor1: T
VALUE_PARAMETER value-parameter testInPrimaryCtor2: kotlin.Int = ...
EXPRESSION_BODY
CONST Int type=kotlin.Int value='42'
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
INSTANCE_INITIALIZER_CALL classDescriptor='InPrimaryCtor'
PROPERTY public final val testInPrimaryCtor1: T
FIELD PROPERTY_BACKING_FIELD public final val testInPrimaryCtor1: T
EXPRESSION_BODY
GET_VAR 'value-parameter testInPrimaryCtor1: T' type=T origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-testInPrimaryCtor1>(): T
$this: VALUE_PARAMETER <receiver: InPrimaryCtor>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-testInPrimaryCtor1>(): T'
GET_FIELD 'testInPrimaryCtor1: T' type=T origin=null
receiver: GET_VAR '<receiver: InPrimaryCtor>' type=InPrimaryCtor<T> origin=null
PROPERTY public final var testInPrimaryCtor2: kotlin.Int
FIELD PROPERTY_BACKING_FIELD public final var testInPrimaryCtor2: kotlin.Int
EXPRESSION_BODY
GET_VAR 'value-parameter testInPrimaryCtor2: Int = ...' type=kotlin.Int origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-testInPrimaryCtor2>(): kotlin.Int
$this: VALUE_PARAMETER <receiver: InPrimaryCtor>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-testInPrimaryCtor2>(): Int'
GET_FIELD 'testInPrimaryCtor2: Int' type=kotlin.Int origin=null
receiver: GET_VAR '<receiver: InPrimaryCtor>' type=InPrimaryCtor<T> origin=null
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <set-testInPrimaryCtor2>(<set-?>: kotlin.Int): kotlin.Unit
$this: VALUE_PARAMETER <receiver: InPrimaryCtor>
VALUE_PARAMETER value-parameter <set-?>: kotlin.Int
BLOCK_BODY
SET_FIELD 'testInPrimaryCtor2: Int' type=kotlin.Unit origin=null
receiver: GET_VAR '<receiver: InPrimaryCtor>' type=InPrimaryCtor<T> origin=null
value: GET_VAR 'value-parameter <set-?>: Int' type=kotlin.Int origin=null
@@ -0,0 +1,7 @@
interface IBase<T> {
fun foo(x: Int)
val bar: Int
fun <X> qux(t: T, x: X)
}
class Test<TT>(impl: IBase<TT>) : IBase<TT> by impl
@@ -0,0 +1,57 @@
FILE /delegatedMembers.kt
CLASS INTERFACE IBase
TYPE_PARAMETER <T>
FUN public abstract fun foo(x: kotlin.Int): kotlin.Unit
$this: VALUE_PARAMETER <receiver: IBase>
VALUE_PARAMETER value-parameter x: kotlin.Int
PROPERTY public abstract val bar: kotlin.Int
FUN DEFAULT_PROPERTY_ACCESSOR public abstract fun <get-bar>(): kotlin.Int
$this: VALUE_PARAMETER <receiver: IBase>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-bar>(): Int'
GET_FIELD 'bar: Int' type=kotlin.Int origin=null
receiver: GET_VAR '<receiver: IBase>' type=IBase<T> origin=null
FUN public abstract fun <X> qux(t: T, x: X): kotlin.Unit
TYPE_PARAMETER <X>
$this: VALUE_PARAMETER <receiver: IBase>
VALUE_PARAMETER value-parameter t: T
VALUE_PARAMETER value-parameter x: X
CLASS CLASS Test
TYPE_PARAMETER <TT>
CONSTRUCTOR public constructor Test<TT>(impl: IBase<TT>)
TYPE_PARAMETER <TT>
VALUE_PARAMETER value-parameter impl: IBase<TT>
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
INSTANCE_INITIALIZER_CALL classDescriptor='Test'
FIELD DELEGATE val `Test$IBase$delegate`: IBase<TT>
EXPRESSION_BODY
GET_VAR 'value-parameter impl: IBase<TT>' type=IBase<TT> origin=null
FUN DELEGATED_MEMBER public open override fun <X> qux(t: TT, x: X): kotlin.Unit
TYPE_PARAMETER <X>
$this: VALUE_PARAMETER <receiver: Test>
VALUE_PARAMETER value-parameter t: TT
VALUE_PARAMETER value-parameter x: X
BLOCK_BODY
CALL 'qux(TT, X): Unit' type=kotlin.Unit origin=null
$this: GET_FIELD '`Test$IBase$delegate`: IBase<TT>' type=IBase<TT> origin=null
receiver: GET_VAR '<receiver: Test>' type=Test<TT> origin=null
t: GET_VAR 'value-parameter t: TT' type=TT origin=null
x: TYPE_OP type=X origin=IMPLICIT_CAST typeOperand=X
GET_VAR 'value-parameter x: X' type=X origin=null
FUN DELEGATED_MEMBER public open override fun foo(x: kotlin.Int): kotlin.Unit
$this: VALUE_PARAMETER <receiver: Test>
VALUE_PARAMETER value-parameter x: kotlin.Int
BLOCK_BODY
CALL 'foo(Int): Unit' type=kotlin.Unit origin=null
$this: GET_FIELD '`Test$IBase$delegate`: IBase<TT>' type=IBase<TT> origin=null
receiver: GET_VAR '<receiver: Test>' type=Test<TT> origin=null
x: GET_VAR 'value-parameter x: Int' type=kotlin.Int origin=null
PROPERTY DELEGATED_MEMBER public open override val bar: kotlin.Int
FUN DELEGATED_MEMBER public open override fun <get-bar>(): kotlin.Int
$this: VALUE_PARAMETER <receiver: Test>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-bar>(): Int'
CALL '<get-bar>(): Int' type=kotlin.Int origin=null
$this: GET_FIELD '`Test$IBase$delegate`: IBase<TT>' type=IBase<TT> origin=null
receiver: GET_VAR '<receiver: Test>' type=Test<TT> origin=null
@@ -0,0 +1,13 @@
fun <T> test1(i: Int, j: T) {}
fun test2(i: Int = 0, j: String = "") {}
fun test3(vararg args: String) {}
fun String.textExt1(i: Int, j: String) {}
class Host {
fun String.testMembetExt1(i: Int, j: String) {}
fun <T> String.testMembetExt2(i: Int, j: T) {}
}
@@ -0,0 +1,40 @@
FILE /fun.kt
FUN public fun <T> test1(i: kotlin.Int, j: T): kotlin.Unit
TYPE_PARAMETER <T>
VALUE_PARAMETER value-parameter i: kotlin.Int
VALUE_PARAMETER value-parameter j: T
BLOCK_BODY
FUN public fun test2(i: kotlin.Int = ..., j: kotlin.String = ...): kotlin.Unit
VALUE_PARAMETER value-parameter i: kotlin.Int = ...
EXPRESSION_BODY
CONST Int type=kotlin.Int value='0'
VALUE_PARAMETER value-parameter j: kotlin.String = ...
EXPRESSION_BODY
CONST String type=kotlin.String value=''
BLOCK_BODY
FUN public fun test3(vararg args: kotlin.String): kotlin.Unit
VALUE_PARAMETER value-parameter vararg args: kotlin.String
BLOCK_BODY
FUN public fun kotlin.String.textExt1(i: kotlin.Int, j: kotlin.String): kotlin.Unit
$receiver: VALUE_PARAMETER <receiver: textExt1(Int, String) on String: Unit>
VALUE_PARAMETER value-parameter i: kotlin.Int
VALUE_PARAMETER value-parameter j: kotlin.String
BLOCK_BODY
CLASS CLASS Host
CONSTRUCTOR public constructor Host()
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
INSTANCE_INITIALIZER_CALL classDescriptor='Host'
FUN public final fun kotlin.String.testMembetExt1(i: kotlin.Int, j: kotlin.String): kotlin.Unit
$this: VALUE_PARAMETER <receiver: Host>
$receiver: VALUE_PARAMETER <receiver: testMembetExt1(Int, String) on String: Unit>
VALUE_PARAMETER value-parameter i: kotlin.Int
VALUE_PARAMETER value-parameter j: kotlin.String
BLOCK_BODY
FUN public final fun <T> kotlin.String.testMembetExt2(i: kotlin.Int, j: T): kotlin.Unit
TYPE_PARAMETER <T>
$this: VALUE_PARAMETER <receiver: Host>
$receiver: VALUE_PARAMETER <receiver: testMembetExt2(Int, T) on String: Unit>
VALUE_PARAMETER value-parameter i: kotlin.Int
VALUE_PARAMETER value-parameter j: T
BLOCK_BODY
@@ -0,0 +1,4 @@
val test1 : (String) -> String = { it }
val test2 : Any.(Any) -> Any = { it.hashCode() }
val test3 = { i: Int, j: Int -> }
val test4 = fun (i: Int, j: Int) {}
@@ -0,0 +1,59 @@
FILE /lambdas.kt
PROPERTY public val test1: (kotlin.String) -> kotlin.String
FIELD PROPERTY_BACKING_FIELD public val test1: (kotlin.String) -> kotlin.String
EXPRESSION_BODY
BLOCK type=(kotlin.String) -> kotlin.String origin=LAMBDA
FUN LOCAL_FUNCTION_FOR_LAMBDA local final fun <anonymous>(it: kotlin.String): kotlin.String
VALUE_PARAMETER value-parameter it: kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='<anonymous>(String): String'
GET_VAR 'value-parameter it: String' type=kotlin.String origin=null
CALLABLE_REFERENCE '<anonymous>(String): String' type=(kotlin.String) -> kotlin.String origin=LAMBDA
FUN DEFAULT_PROPERTY_ACCESSOR public fun <get-test1>(): (kotlin.String) -> kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-test1>(): (String) -> String'
GET_FIELD 'test1: (String) -> String' type=(kotlin.String) -> kotlin.String origin=null
PROPERTY public val test2: kotlin.Any.(kotlin.Any) -> kotlin.Any
FIELD PROPERTY_BACKING_FIELD public val test2: kotlin.Any.(kotlin.Any) -> kotlin.Any
EXPRESSION_BODY
BLOCK type=kotlin.Any.(kotlin.Any) -> kotlin.Int origin=LAMBDA
FUN LOCAL_FUNCTION_FOR_LAMBDA local final fun kotlin.Any.<anonymous>(it: kotlin.Any): kotlin.Int
$receiver: VALUE_PARAMETER <receiver: <anonymous>(Any) on Any: Int>
VALUE_PARAMETER value-parameter it: kotlin.Any
BLOCK_BODY
RETURN type=kotlin.Nothing from='<anonymous>(Any) on Any: Int'
CALL 'hashCode(): Int' type=kotlin.Int origin=null
$this: GET_VAR 'value-parameter it: Any' type=kotlin.Any origin=null
CALLABLE_REFERENCE '<anonymous>(Any) on Any: Int' type=kotlin.Any.(kotlin.Any) -> kotlin.Int origin=LAMBDA
FUN DEFAULT_PROPERTY_ACCESSOR public fun <get-test2>(): kotlin.Any.(kotlin.Any) -> kotlin.Any
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-test2>(): Any.(Any) -> Any'
GET_FIELD 'test2: Any.(Any) -> Any' type=kotlin.Any.(kotlin.Any) -> kotlin.Any origin=null
PROPERTY public val test3: (kotlin.Int, kotlin.Int) -> kotlin.Unit
FIELD PROPERTY_BACKING_FIELD public val test3: (kotlin.Int, kotlin.Int) -> kotlin.Unit
EXPRESSION_BODY
BLOCK type=(kotlin.Int, kotlin.Int) -> kotlin.Unit origin=LAMBDA
FUN LOCAL_FUNCTION_FOR_LAMBDA local final fun <anonymous>(i: kotlin.Int, j: kotlin.Int): kotlin.Unit
VALUE_PARAMETER value-parameter i: kotlin.Int
VALUE_PARAMETER value-parameter j: kotlin.Int
BLOCK_BODY
RETURN type=kotlin.Nothing from='<anonymous>(Int, Int): Unit'
GET_OBJECT 'Unit' type=kotlin.Unit
CALLABLE_REFERENCE '<anonymous>(Int, Int): Unit' type=(kotlin.Int, kotlin.Int) -> kotlin.Unit origin=LAMBDA
FUN DEFAULT_PROPERTY_ACCESSOR public fun <get-test3>(): (kotlin.Int, kotlin.Int) -> kotlin.Unit
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-test3>(): (Int, Int) -> Unit'
GET_FIELD 'test3: (Int, Int) -> Unit' type=(kotlin.Int, kotlin.Int) -> kotlin.Unit origin=null
PROPERTY public val test4: (kotlin.Int, kotlin.Int) -> kotlin.Unit
FIELD PROPERTY_BACKING_FIELD public val test4: (kotlin.Int, kotlin.Int) -> kotlin.Unit
EXPRESSION_BODY
BLOCK type=(kotlin.Int, kotlin.Int) -> kotlin.Unit origin=ANONYMOUS_FUNCTION
FUN local final fun <no name provided>(i: kotlin.Int, j: kotlin.Int): kotlin.Unit
VALUE_PARAMETER value-parameter i: kotlin.Int
VALUE_PARAMETER value-parameter j: kotlin.Int
BLOCK_BODY
CALLABLE_REFERENCE '<no name provided>(Int, Int): Unit' type=(kotlin.Int, kotlin.Int) -> kotlin.Unit origin=ANONYMOUS_FUNCTION
FUN DEFAULT_PROPERTY_ACCESSOR public fun <get-test4>(): (kotlin.Int, kotlin.Int) -> kotlin.Unit
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-test4>(): (Int, Int) -> Unit'
GET_FIELD 'test4: (Int, Int) -> Unit' type=(kotlin.Int, kotlin.Int) -> kotlin.Unit origin=null
@@ -0,0 +1,9 @@
fun <TT> outer() {
fun <T> test1(i: Int, j: T) {}
fun test2(i: Int = 0, j: String = "") {}
fun test3(vararg args: String) {}
fun String.textExt1(i: Int, j: TT) {}
}
@@ -0,0 +1,25 @@
FILE /localFun.kt
FUN public fun <TT> outer(): kotlin.Unit
TYPE_PARAMETER <TT>
BLOCK_BODY
FUN local final fun <T> test1(i: kotlin.Int, j: T): kotlin.Unit
TYPE_PARAMETER <T>
VALUE_PARAMETER value-parameter i: kotlin.Int
VALUE_PARAMETER value-parameter j: T
BLOCK_BODY
FUN local final fun test2(i: kotlin.Int = ..., j: kotlin.String = ...): kotlin.Unit
VALUE_PARAMETER value-parameter i: kotlin.Int = ...
EXPRESSION_BODY
CONST Int type=kotlin.Int value='0'
VALUE_PARAMETER value-parameter j: kotlin.String = ...
EXPRESSION_BODY
CONST String type=kotlin.String value=''
BLOCK_BODY
FUN local final fun test3(vararg args: kotlin.String): kotlin.Unit
VALUE_PARAMETER value-parameter vararg args: kotlin.String
BLOCK_BODY
FUN local final fun kotlin.String.textExt1(i: kotlin.Int, j: TT): kotlin.Unit
$receiver: VALUE_PARAMETER <receiver: textExt1(Int, TT) on String: Unit>
VALUE_PARAMETER value-parameter i: kotlin.Int
VALUE_PARAMETER value-parameter j: TT
BLOCK_BODY
@@ -0,0 +1,25 @@
val test1 get() = 42
var test2 get() = 42; set(value) {}
val String.testExt1 get() = 42
var String.testExt2 get() = 42; set(value) {}
val <T> T.testExt3 get() = 42
var <T> T.testExt4 get() = 42; set(value) {}
class Host<T> {
val testMem1 get() = 42
var testMem2 get() = 42; set(value) {}
val String.testMemExt1 get() = 42
var String.testMemExt2 get() = 42; set(value) {}
val <TT> TT.testMemExt3 get() = 42
var <TT> TT.testMemExt4 get() = 42; set(value) {}
}
@@ -0,0 +1,107 @@
FILE /propertyAccessors.kt
PROPERTY public val test1: kotlin.Int
FUN public fun <get-test1>(): kotlin.Int
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-test1>(): Int'
CONST Int type=kotlin.Int value='42'
PROPERTY public var test2: kotlin.Int
FUN public fun <get-test2>(): kotlin.Int
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-test2>(): Int'
CONST Int type=kotlin.Int value='42'
FUN public fun <set-test2>(value: kotlin.Int): kotlin.Unit
VALUE_PARAMETER value-parameter value: kotlin.Int
BLOCK_BODY
PROPERTY public val kotlin.String.testExt1: kotlin.Int
FUN public fun kotlin.String.<get-testExt1>(): kotlin.Int
$receiver: VALUE_PARAMETER <receiver: testExt1: Int on String>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-testExt1>() on String: Int'
CONST Int type=kotlin.Int value='42'
PROPERTY public var kotlin.String.testExt2: kotlin.Int
FUN public fun kotlin.String.<get-testExt2>(): kotlin.Int
$receiver: VALUE_PARAMETER <receiver: testExt2: Int on String>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-testExt2>() on String: Int'
CONST Int type=kotlin.Int value='42'
FUN public fun kotlin.String.<set-testExt2>(value: kotlin.Int): kotlin.Unit
$receiver: VALUE_PARAMETER <receiver: testExt2: Int on String>
VALUE_PARAMETER value-parameter value: kotlin.Int
BLOCK_BODY
PROPERTY public val <T> T.testExt3: kotlin.Int
FUN public fun T.<get-testExt3>(): kotlin.Int
$receiver: VALUE_PARAMETER <receiver: testExt3: Int on T>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-testExt3>() on T: Int'
CONST Int type=kotlin.Int value='42'
PROPERTY public var <T> T.testExt4: kotlin.Int
FUN public fun T.<get-testExt4>(): kotlin.Int
$receiver: VALUE_PARAMETER <receiver: testExt4: Int on T>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-testExt4>() on T: Int'
CONST Int type=kotlin.Int value='42'
FUN public fun T.<set-testExt4>(value: kotlin.Int): kotlin.Unit
$receiver: VALUE_PARAMETER <receiver: testExt4: Int on T>
VALUE_PARAMETER value-parameter value: kotlin.Int
BLOCK_BODY
CLASS CLASS Host
TYPE_PARAMETER <T>
CONSTRUCTOR public constructor Host<T>()
TYPE_PARAMETER <T>
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
INSTANCE_INITIALIZER_CALL classDescriptor='Host'
PROPERTY public final val testMem1: kotlin.Int
FUN public final fun <get-testMem1>(): kotlin.Int
$this: VALUE_PARAMETER <receiver: Host>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-testMem1>(): Int'
CONST Int type=kotlin.Int value='42'
PROPERTY public final var testMem2: kotlin.Int
FUN public final fun <get-testMem2>(): kotlin.Int
$this: VALUE_PARAMETER <receiver: Host>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-testMem2>(): Int'
CONST Int type=kotlin.Int value='42'
FUN public final fun <set-testMem2>(value: kotlin.Int): kotlin.Unit
$this: VALUE_PARAMETER <receiver: Host>
VALUE_PARAMETER value-parameter value: kotlin.Int
BLOCK_BODY
PROPERTY public final val kotlin.String.testMemExt1: kotlin.Int
FUN public final fun kotlin.String.<get-testMemExt1>(): kotlin.Int
$this: VALUE_PARAMETER <receiver: Host>
$receiver: VALUE_PARAMETER <receiver: testMemExt1: Int on String>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-testMemExt1>() on String: Int'
CONST Int type=kotlin.Int value='42'
PROPERTY public final var kotlin.String.testMemExt2: kotlin.Int
FUN public final fun kotlin.String.<get-testMemExt2>(): kotlin.Int
$this: VALUE_PARAMETER <receiver: Host>
$receiver: VALUE_PARAMETER <receiver: testMemExt2: Int on String>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-testMemExt2>() on String: Int'
CONST Int type=kotlin.Int value='42'
FUN public final fun kotlin.String.<set-testMemExt2>(value: kotlin.Int): kotlin.Unit
$this: VALUE_PARAMETER <receiver: Host>
$receiver: VALUE_PARAMETER <receiver: testMemExt2: Int on String>
VALUE_PARAMETER value-parameter value: kotlin.Int
BLOCK_BODY
PROPERTY public final val <TT> TT.testMemExt3: kotlin.Int
FUN public final fun TT.<get-testMemExt3>(): kotlin.Int
$this: VALUE_PARAMETER <receiver: Host>
$receiver: VALUE_PARAMETER <receiver: testMemExt3: Int on TT>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-testMemExt3>() on TT: Int'
CONST Int type=kotlin.Int value='42'
PROPERTY public final var <TT> TT.testMemExt4: kotlin.Int
FUN public final fun TT.<get-testMemExt4>(): kotlin.Int
$this: VALUE_PARAMETER <receiver: Host>
$receiver: VALUE_PARAMETER <receiver: testMemExt4: Int on TT>
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-testMemExt4>() on TT: Int'
CONST Int type=kotlin.Int value='42'
FUN public final fun TT.<set-testMemExt4>(value: kotlin.Int): kotlin.Unit
$this: VALUE_PARAMETER <receiver: Host>
$receiver: VALUE_PARAMETER <receiver: testMemExt4: Int on TT>
VALUE_PARAMETER value-parameter value: kotlin.Int
BLOCK_BODY