Local delegated properties implementation + some more fixes

This commit is contained in:
Dmitry Petrov
2017-03-28 13:03:12 +03:00
parent c9777fd79f
commit 2b48908586
25 changed files with 335 additions and 100 deletions
@@ -1,5 +1,6 @@
FILE /primaryConstructor.kt
CLASS CLASS Test1
$new: VALUE_PARAMETER <receiver: Test1>
CONSTRUCTOR public constructor Test1(x: kotlin.Int, y: kotlin.Int)
VALUE_PARAMETER value-parameter x: kotlin.Int
VALUE_PARAMETER value-parameter y: kotlin.Int
@@ -30,6 +31,7 @@ FILE /primaryConstructor.kt
FUN FAKE_OVERRIDE public open override fun hashCode(): kotlin.Int
FUN FAKE_OVERRIDE public open override fun toString(): kotlin.String
CLASS CLASS Test2
$new: VALUE_PARAMETER <receiver: Test2>
CONSTRUCTOR public constructor Test2(x: kotlin.Int, y: kotlin.Int)
VALUE_PARAMETER value-parameter x: kotlin.Int
VALUE_PARAMETER value-parameter y: kotlin.Int
@@ -60,6 +62,7 @@ FILE /primaryConstructor.kt
FUN FAKE_OVERRIDE public open override fun hashCode(): kotlin.Int
FUN FAKE_OVERRIDE public open override fun toString(): kotlin.String
CLASS CLASS Test3
$new: VALUE_PARAMETER <receiver: Test3>
CONSTRUCTOR public constructor Test3(x: kotlin.Int, y: kotlin.Int)
VALUE_PARAMETER value-parameter x: kotlin.Int
VALUE_PARAMETER value-parameter y: kotlin.Int
@@ -10,7 +10,7 @@ FILE /localDelegatedProperties.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='<anonymous>(): Int'
CONST Int type=kotlin.Int value='42'
CALLABLE_REFERENCE '<anonymous>(): Int' type=() -> kotlin.Int origin=LAMBDA
FUNCTION_REFERENCE '<anonymous>(): Int' type=() -> kotlin.Int origin=LAMBDA
FUN DELEGATED_PROPERTY_ACCESSOR local final fun <get-x>(): kotlin.Int
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-x>(): Int'
@@ -18,7 +18,7 @@ FILE /localDelegatedProperties.kt
<T>: Int
$receiver: GET_VAR '`x$delegate`: Lazy<Int>' type=kotlin.Lazy<kotlin.Int> origin=null
thisRef: CONST Null type=kotlin.Nothing? value='null'
property: CALLABLE_REFERENCE 'x: Int' type=kotlin.reflect.KProperty0<kotlin.Int> origin=PROPERTY_REFERENCE_FOR_DELEGATE
property: LOCAL_DELEGATED_PROPERTY_REFERENCE 'x: Int' delegate='`x$delegate`: Lazy<Int>' getter='<get-x>(): Int' setter=null type=kotlin.reflect.KProperty0<kotlin.Int> origin=PROPERTY_REFERENCE_FOR_DELEGATE
CALL 'println(Int): Unit' type=kotlin.Unit origin=null
message: CALL '<get-x>(): Int' type=kotlin.Int origin=GET_LOCAL_PROPERTY
FUN public fun test2(): kotlin.Unit
@@ -35,8 +35,9 @@ FILE /localDelegatedProperties.kt
<V>: Int
$receiver: GET_VAR '`x$delegate`: HashMap<String, Int> /* = HashMap<String, Int> */' type=kotlin.collections.HashMap<kotlin.String, kotlin.Int> /* = java.util.HashMap<kotlin.String, kotlin.Int> */ origin=null
thisRef: CONST Null type=kotlin.Nothing? value='null'
property: CALLABLE_REFERENCE 'x: Int' type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=PROPERTY_REFERENCE_FOR_DELEGATE
property: LOCAL_DELEGATED_PROPERTY_REFERENCE 'x: Int' delegate='`x$delegate`: HashMap<String, Int> /* = HashMap<String, Int> */' getter='<get-x>(): Int' setter='<set-x>(Int): Int' type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=PROPERTY_REFERENCE_FOR_DELEGATE
FUN DELEGATED_PROPERTY_ACCESSOR local final fun <set-x>(value: kotlin.Int): kotlin.Int
VALUE_PARAMETER value-parameter value: kotlin.Int
BLOCK_BODY
RETURN type=kotlin.Nothing from='<set-x>(Int): Int'
TYPE_OP type=kotlin.Int origin=IMPLICIT_CAST typeOperand=kotlin.Int
@@ -44,7 +45,7 @@ FILE /localDelegatedProperties.kt
<V>: Int
$receiver: GET_VAR '`x$delegate`: HashMap<String, Int> /* = HashMap<String, Int> */' type=kotlin.collections.HashMap<kotlin.String, kotlin.Int> /* = java.util.HashMap<kotlin.String, kotlin.Int> */ origin=null
thisRef: CONST Null type=kotlin.Nothing? value='null'
property: CALLABLE_REFERENCE 'x: Int' type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=PROPERTY_REFERENCE_FOR_DELEGATE
property: LOCAL_DELEGATED_PROPERTY_REFERENCE 'x: Int' delegate='`x$delegate`: HashMap<String, Int> /* = HashMap<String, Int> */' getter='<get-x>(): Int' setter='<set-x>(Int): Int' type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=PROPERTY_REFERENCE_FOR_DELEGATE
value: GET_VAR 'value-parameter value: Int' type=kotlin.Int origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
CALL '<set-x>(Int): Int' type=kotlin.Int origin=EQ
@@ -20,6 +20,7 @@ FILE /delegatedMembers.kt
FUN FAKE_OVERRIDE public open override fun hashCode(): kotlin.Int
FUN FAKE_OVERRIDE public open override fun toString(): kotlin.String
CLASS CLASS Test
$new: VALUE_PARAMETER <receiver: Test>
TYPE_PARAMETER <TT>
CONSTRUCTOR public constructor Test<TT>(impl: IBase<TT>)
TYPE_PARAMETER <TT>
@@ -1,5 +1,6 @@
FILE /local.kt
CLASS CLASS Delegate
$new: VALUE_PARAMETER <receiver: Delegate>
CONSTRUCTOR public constructor Delegate(value: kotlin.String)
VALUE_PARAMETER value-parameter value: kotlin.String
BLOCK_BODY
@@ -27,6 +28,7 @@ FILE /local.kt
FUN FAKE_OVERRIDE public open override fun hashCode(): kotlin.Int
FUN FAKE_OVERRIDE public open override fun toString(): kotlin.String
CLASS CLASS DelegateProvider
$new: VALUE_PARAMETER <receiver: DelegateProvider>
CONSTRUCTOR public constructor DelegateProvider(value: kotlin.String)
VALUE_PARAMETER value-parameter value: kotlin.String
BLOCK_BODY
@@ -62,11 +64,11 @@ FILE /local.kt
$this: CALL 'constructor DelegateProvider(String)' type=DelegateProvider origin=null
value: CONST String type=kotlin.String value='OK'
thisRef: CONST Null type=kotlin.Nothing? value='null'
property: CALLABLE_REFERENCE 'testMember: String' type=kotlin.reflect.KProperty0<kotlin.String> origin=PROPERTY_REFERENCE_FOR_DELEGATE
property: LOCAL_DELEGATED_PROPERTY_REFERENCE 'testMember: String' delegate='`testMember$delegate`: Delegate' getter='<get-testMember>(): String' setter=null type=kotlin.reflect.KProperty0<kotlin.String> origin=PROPERTY_REFERENCE_FOR_DELEGATE
FUN DELEGATED_PROPERTY_ACCESSOR local final fun <get-testMember>(): kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-testMember>(): String'
CALL 'getValue(Any?, Any?): String' type=kotlin.String origin=null
$this: GET_VAR '`testMember$delegate`: Delegate' type=Delegate origin=null
thisRef: CONST Null type=kotlin.Nothing? value='null'
property: CALLABLE_REFERENCE 'testMember: String' type=kotlin.reflect.KProperty0<kotlin.String> origin=PROPERTY_REFERENCE_FOR_DELEGATE
property: LOCAL_DELEGATED_PROPERTY_REFERENCE 'testMember: String' delegate='`testMember$delegate`: Delegate' getter='<get-testMember>(): String' setter=null type=kotlin.reflect.KProperty0<kotlin.String> origin=PROPERTY_REFERENCE_FOR_DELEGATE
@@ -1,5 +1,6 @@
FILE /localDifferentReceivers.kt
CLASS CLASS MyClass
$new: VALUE_PARAMETER <receiver: MyClass>
CONSTRUCTOR public constructor MyClass(value: kotlin.String)
VALUE_PARAMETER value-parameter value: kotlin.String
BLOCK_BODY
@@ -41,14 +42,14 @@ FILE /localDifferentReceivers.kt
$receiver: CALL 'constructor MyClass(String)' type=MyClass origin=null
value: CONST String type=kotlin.String value='O'
host: CONST Null type=kotlin.Nothing? value='null'
p: CALLABLE_REFERENCE 'testO: String' type=kotlin.reflect.KProperty0<kotlin.String> origin=PROPERTY_REFERENCE_FOR_DELEGATE
p: LOCAL_DELEGATED_PROPERTY_REFERENCE 'testO: String' delegate='`testO$delegate`: String' getter='<get-testO>(): String' setter=null type=kotlin.reflect.KProperty0<kotlin.String> origin=PROPERTY_REFERENCE_FOR_DELEGATE
FUN DELEGATED_PROPERTY_ACCESSOR local final fun <get-testO>(): kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='<get-testO>(): String'
CALL 'getValue(Any?, Any) on String: String' type=kotlin.String origin=null
$receiver: GET_VAR '`testO$delegate`: String' type=kotlin.String origin=null
receiver: CONST Null type=kotlin.Nothing? value='null'
p: CALLABLE_REFERENCE 'testO: String' type=kotlin.reflect.KProperty0<kotlin.String> origin=PROPERTY_REFERENCE_FOR_DELEGATE
p: LOCAL_DELEGATED_PROPERTY_REFERENCE 'testO: String' delegate='`testO$delegate`: String' getter='<get-testO>(): String' setter=null type=kotlin.reflect.KProperty0<kotlin.String> origin=PROPERTY_REFERENCE_FOR_DELEGATE
LOCAL_DELEGATED_PROPERTY val testK: kotlin.String
VAR DELEGATE val `testK$delegate`: kotlin.String
CONST String type=kotlin.String value='K'
@@ -58,7 +59,7 @@ FILE /localDifferentReceivers.kt
CALL 'getValue(Any?, Any) on String: String' type=kotlin.String origin=null
$receiver: GET_VAR '`testK$delegate`: String' type=kotlin.String origin=null
receiver: CONST Null type=kotlin.Nothing? value='null'
p: CALLABLE_REFERENCE 'testK: String' type=kotlin.reflect.KProperty0<kotlin.String> origin=PROPERTY_REFERENCE_FOR_DELEGATE
p: LOCAL_DELEGATED_PROPERTY_REFERENCE 'testK: String' delegate='`testK$delegate`: String' getter='<get-testK>(): String' setter=null type=kotlin.reflect.KProperty0<kotlin.String> origin=PROPERTY_REFERENCE_FOR_DELEGATE
VAR val testOK: kotlin.String
CALL 'plus(Any?): String' type=kotlin.String origin=PLUS
$this: CALL '<get-testO>(): String' type=kotlin.String origin=GET_LOCAL_PROPERTY