[FIR] Properly collect overriddens for method enhancement
If some java class has multiple supertypes then we need to collect overriddens from all those types directly, even if superTypeScope (which is FirTypeIntersectionScope in this case) returns only one symbol from one of this types (not intersection one) This is needed to proper enhancement in cases when some type occurs multiple times in supertypes graph with different nullability of arguments: class ConcurrentHashMap<K, V> : AbstractMap<K!, V!>, MutableMap<K, V> If we try to find method `get(key: K): V` supertype scope returns `AbstractMap.get(key: K!): V!` (because it actually overrides `MutableMap(key: K): V?`), but we need to get both symbols to properly enhance types for `ConcurrentHashMap.remove`
This commit is contained in:
@@ -118,30 +118,30 @@ FILE fqName:<root> fileName:/classLevelProperties.kt
|
||||
CALL 'public final fun hashMapOf <K, V> (): java.util.HashMap<K of kotlin.collections.MapsKt.hashMapOf, V of kotlin.collections.MapsKt.hashMapOf> [inline] declared in kotlin.collections.MapsKt' type=java.util.HashMap<kotlin.String, kotlin.Int> origin=null
|
||||
<K>: kotlin.String
|
||||
<V>: kotlin.Int
|
||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-test8> visibility:public modality:FINAL <> ($this:<root>.C) returnType:@[FlexibleNullability] kotlin.Int?
|
||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-test8> visibility:public modality:FINAL <> ($this:<root>.C) returnType:kotlin.Int
|
||||
correspondingProperty: PROPERTY name:test8 visibility:public modality:FINAL [delegated,var]
|
||||
$this: VALUE_PARAMETER name:<this> type:<root>.C
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='public final fun <get-test8> (): @[FlexibleNullability] kotlin.Int? declared in <root>.C'
|
||||
CALL 'public final fun getValue <V, V1> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>): V1 of kotlin.collections.MapAccessorsKt.getValue [inline,operator] declared in kotlin.collections.MapAccessorsKt' type=@[FlexibleNullability] kotlin.Int? origin=null
|
||||
<V>: @[FlexibleNullability] kotlin.Int?
|
||||
<V1>: @[FlexibleNullability] kotlin.Int?
|
||||
RETURN type=kotlin.Nothing from='public final fun <get-test8> (): kotlin.Int declared in <root>.C'
|
||||
CALL 'public final fun getValue <V, V1> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>): V1 of kotlin.collections.MapAccessorsKt.getValue [inline,operator] declared in kotlin.collections.MapAccessorsKt' type=kotlin.Int origin=null
|
||||
<V>: kotlin.Int
|
||||
<V1>: kotlin.Int
|
||||
$receiver: GET_FIELD 'FIELD PROPERTY_DELEGATE name:test8$delegate type:java.util.HashMap<kotlin.String, kotlin.Int> visibility:private [final]' type=java.util.HashMap<kotlin.String, kotlin.Int> origin=null
|
||||
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.<get-test8>' type=<root>.C origin=null
|
||||
thisRef: GET_VAR '<this>: <root>.C declared in <root>.C.<get-test8>' type=<root>.C origin=null
|
||||
property: PROPERTY_REFERENCE 'public final test8: @[FlexibleNullability] kotlin.Int? [delegated,var]' field=null getter='public final fun <get-test8> (): @[FlexibleNullability] kotlin.Int? declared in <root>.C' setter='public final fun <set-test8> (<set-?>: @[FlexibleNullability] kotlin.Int?): kotlin.Unit declared in <root>.C' type=kotlin.reflect.KMutableProperty1<<root>.C, @[FlexibleNullability] kotlin.Int?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
|
||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-test8> visibility:public modality:FINAL <> ($this:<root>.C, <set-?>:@[FlexibleNullability] kotlin.Int?) returnType:kotlin.Unit
|
||||
property: PROPERTY_REFERENCE 'public final test8: kotlin.Int [delegated,var]' field=null getter='public final fun <get-test8> (): kotlin.Int declared in <root>.C' setter='public final fun <set-test8> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.C' type=kotlin.reflect.KMutableProperty1<<root>.C, kotlin.Int> origin=PROPERTY_REFERENCE_FOR_DELEGATE
|
||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-test8> visibility:public modality:FINAL <> ($this:<root>.C, <set-?>:kotlin.Int) returnType:kotlin.Unit
|
||||
correspondingProperty: PROPERTY name:test8 visibility:public modality:FINAL [delegated,var]
|
||||
$this: VALUE_PARAMETER name:<this> type:<root>.C
|
||||
VALUE_PARAMETER name:<set-?> index:0 type:@[FlexibleNullability] kotlin.Int?
|
||||
VALUE_PARAMETER name:<set-?> index:0 type:kotlin.Int
|
||||
BLOCK_BODY
|
||||
CALL 'public final fun setValue <V> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>, value: V of kotlin.collections.MapAccessorsKt.setValue): kotlin.Unit [inline,operator] declared in kotlin.collections.MapAccessorsKt' type=kotlin.Unit origin=null
|
||||
<V>: @[FlexibleNullability] kotlin.Int?
|
||||
<V>: kotlin.Int
|
||||
$receiver: GET_FIELD 'FIELD PROPERTY_DELEGATE name:test8$delegate type:java.util.HashMap<kotlin.String, kotlin.Int> visibility:private [final]' type=java.util.HashMap<kotlin.String, kotlin.Int> origin=null
|
||||
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.<set-test8>' type=<root>.C origin=null
|
||||
thisRef: GET_VAR '<this>: <root>.C declared in <root>.C.<set-test8>' type=<root>.C origin=null
|
||||
property: PROPERTY_REFERENCE 'public final test8: @[FlexibleNullability] kotlin.Int? [delegated,var]' field=null getter='public final fun <get-test8> (): @[FlexibleNullability] kotlin.Int? declared in <root>.C' setter='public final fun <set-test8> (<set-?>: @[FlexibleNullability] kotlin.Int?): kotlin.Unit declared in <root>.C' type=kotlin.reflect.KMutableProperty1<<root>.C, @[FlexibleNullability] kotlin.Int?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
|
||||
value: GET_VAR '<set-?>: @[FlexibleNullability] kotlin.Int? declared in <root>.C.<set-test8>' type=@[FlexibleNullability] kotlin.Int? origin=null
|
||||
property: PROPERTY_REFERENCE 'public final test8: kotlin.Int [delegated,var]' field=null getter='public final fun <get-test8> (): kotlin.Int declared in <root>.C' setter='public final fun <set-test8> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.C' type=kotlin.reflect.KMutableProperty1<<root>.C, kotlin.Int> origin=PROPERTY_REFERENCE_FOR_DELEGATE
|
||||
value: GET_VAR '<set-?>: kotlin.Int declared in <root>.C.<set-test8>' type=kotlin.Int 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 [operator] declared in kotlin.Any
|
||||
|
||||
@@ -44,13 +44,14 @@ class C {
|
||||
return <this>.#test7$delegate.getValue<Int>(thisRef = <this>, property = C::test7)
|
||||
}
|
||||
|
||||
var test8: @FlexibleNullability Int? /* by */
|
||||
var test8: Int /* by */
|
||||
field = hashMapOf<String, Int>()
|
||||
get(): @FlexibleNullability Int? {
|
||||
return <this>.#test8$delegate.getValue<@FlexibleNullability Int?, @FlexibleNullability Int?>(thisRef = <this>, property = C::test8)
|
||||
get(): Int {
|
||||
return <this>.#test8$delegate.getValue<Int, Int>(thisRef = <this>, property = C::test8)
|
||||
}
|
||||
set(<set-?>: @FlexibleNullability Int?) {
|
||||
<this>.#test8$delegate.setValue<@FlexibleNullability Int?>(thisRef = <this>, property = C::test8, value = <set-?>)
|
||||
set(<set-?>: Int) {
|
||||
<this>.#test8$delegate.setValue<Int>(thisRef = <this>, property = C::test8, value = <set-?>)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -105,23 +105,23 @@ FILE fqName:<root> fileName:/delegatedProperties.kt
|
||||
CALL 'public final fun hashMapOf <K, V> (): java.util.HashMap<K of kotlin.collections.MapsKt.hashMapOf, V of kotlin.collections.MapsKt.hashMapOf> [inline] declared in kotlin.collections.MapsKt' type=java.util.HashMap<kotlin.String, kotlin.Any> origin=null
|
||||
<K>: kotlin.String
|
||||
<V>: kotlin.Any
|
||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-test4> visibility:public modality:FINAL <> () returnType:@[FlexibleNullability] kotlin.Any?
|
||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-test4> visibility:public modality:FINAL <> () returnType:kotlin.Any
|
||||
correspondingProperty: PROPERTY name:test4 visibility:public modality:FINAL [delegated,var]
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='public final fun <get-test4> (): @[FlexibleNullability] kotlin.Any? declared in <root>'
|
||||
CALL 'public final fun getValue <V, V1> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>): V1 of kotlin.collections.MapAccessorsKt.getValue [inline,operator] declared in kotlin.collections.MapAccessorsKt' type=@[FlexibleNullability] kotlin.Any? origin=null
|
||||
<V>: @[FlexibleNullability] kotlin.Any?
|
||||
<V1>: @[FlexibleNullability] kotlin.Any?
|
||||
RETURN type=kotlin.Nothing from='public final fun <get-test4> (): kotlin.Any declared in <root>'
|
||||
CALL 'public final fun getValue <V, V1> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>): V1 of kotlin.collections.MapAccessorsKt.getValue [inline,operator] declared in kotlin.collections.MapAccessorsKt' type=kotlin.Any origin=null
|
||||
<V>: kotlin.Any
|
||||
<V1>: kotlin.Any
|
||||
$receiver: GET_FIELD 'FIELD PROPERTY_DELEGATE name:test4$delegate type:java.util.HashMap<kotlin.String, kotlin.Any> visibility:private [final,static]' type=java.util.HashMap<kotlin.String, kotlin.Any> origin=null
|
||||
thisRef: CONST Null type=kotlin.Nothing? value=null
|
||||
property: PROPERTY_REFERENCE 'public final test4: @[FlexibleNullability] kotlin.Any? [delegated,var]' field=null getter='public final fun <get-test4> (): @[FlexibleNullability] kotlin.Any? declared in <root>' setter='public final fun <set-test4> (<set-?>: @[FlexibleNullability] kotlin.Any?): kotlin.Unit declared in <root>' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.Any?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
|
||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-test4> visibility:public modality:FINAL <> (<set-?>:@[FlexibleNullability] kotlin.Any?) returnType:kotlin.Unit
|
||||
property: PROPERTY_REFERENCE 'public final test4: kotlin.Any [delegated,var]' field=null getter='public final fun <get-test4> (): kotlin.Any declared in <root>' setter='public final fun <set-test4> (<set-?>: kotlin.Any): kotlin.Unit declared in <root>' type=kotlin.reflect.KMutableProperty0<kotlin.Any> origin=PROPERTY_REFERENCE_FOR_DELEGATE
|
||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-test4> visibility:public modality:FINAL <> (<set-?>:kotlin.Any) returnType:kotlin.Unit
|
||||
correspondingProperty: PROPERTY name:test4 visibility:public modality:FINAL [delegated,var]
|
||||
VALUE_PARAMETER name:<set-?> index:0 type:@[FlexibleNullability] kotlin.Any?
|
||||
VALUE_PARAMETER name:<set-?> index:0 type:kotlin.Any
|
||||
BLOCK_BODY
|
||||
CALL 'public final fun setValue <V> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>, value: V of kotlin.collections.MapAccessorsKt.setValue): kotlin.Unit [inline,operator] declared in kotlin.collections.MapAccessorsKt' type=kotlin.Unit origin=null
|
||||
<V>: @[FlexibleNullability] kotlin.Any?
|
||||
<V>: kotlin.Any
|
||||
$receiver: GET_FIELD 'FIELD PROPERTY_DELEGATE name:test4$delegate type:java.util.HashMap<kotlin.String, kotlin.Any> visibility:private [final,static]' type=java.util.HashMap<kotlin.String, kotlin.Any> origin=null
|
||||
thisRef: CONST Null type=kotlin.Nothing? value=null
|
||||
property: PROPERTY_REFERENCE 'public final test4: @[FlexibleNullability] kotlin.Any? [delegated,var]' field=null getter='public final fun <get-test4> (): @[FlexibleNullability] kotlin.Any? declared in <root>' setter='public final fun <set-test4> (<set-?>: @[FlexibleNullability] kotlin.Any?): kotlin.Unit declared in <root>' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.Any?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
|
||||
value: GET_VAR '<set-?>: @[FlexibleNullability] kotlin.Any? declared in <root>.<set-test4>' type=@[FlexibleNullability] kotlin.Any? origin=null
|
||||
property: PROPERTY_REFERENCE 'public final test4: kotlin.Any [delegated,var]' field=null getter='public final fun <get-test4> (): kotlin.Any declared in <root>' setter='public final fun <set-test4> (<set-?>: kotlin.Any): kotlin.Unit declared in <root>' type=kotlin.reflect.KMutableProperty0<kotlin.Any> origin=PROPERTY_REFERENCE_FOR_DELEGATE
|
||||
value: GET_VAR '<set-?>: kotlin.Any declared in <root>.<set-test4>' type=kotlin.Any origin=null
|
||||
|
||||
@@ -38,11 +38,12 @@ class C {
|
||||
|
||||
}
|
||||
|
||||
var test4: @FlexibleNullability Any? /* by */
|
||||
var test4: Any /* by */
|
||||
field = hashMapOf<String, Any>()
|
||||
get(): @FlexibleNullability Any? {
|
||||
return #test4$delegate.getValue<@FlexibleNullability Any?, @FlexibleNullability Any?>(thisRef = null, property = ::test4)
|
||||
get(): Any {
|
||||
return #test4$delegate.getValue<Any, Any>(thisRef = null, property = ::test4)
|
||||
}
|
||||
set(<set-?>: @FlexibleNullability Any?) {
|
||||
#test4$delegate.setValue<@FlexibleNullability Any?>(thisRef = null, property = ::test4, value = <set-?>)
|
||||
set(<set-?>: Any) {
|
||||
#test4$delegate.setValue<Any>(thisRef = null, property = ::test4, value = <set-?>)
|
||||
}
|
||||
|
||||
|
||||
+22
-21
@@ -22,39 +22,40 @@ FILE fqName:<root> fileName:/localDelegatedProperties.kt
|
||||
message: CALL 'local final fun <get-x> (): kotlin.Int declared in <root>.test1' type=kotlin.Int origin=GET_LOCAL_PROPERTY
|
||||
FUN name:test2 visibility:public modality:FINAL <> () returnType:kotlin.Unit
|
||||
BLOCK_BODY
|
||||
LOCAL_DELEGATED_PROPERTY name:x type:@[FlexibleNullability] kotlin.Int? flags:var
|
||||
LOCAL_DELEGATED_PROPERTY name:x type:kotlin.Int flags:var
|
||||
VAR PROPERTY_DELEGATE name:x$delegate type:java.util.HashMap<kotlin.String, kotlin.Int> [val]
|
||||
CALL 'public final fun hashMapOf <K, V> (): java.util.HashMap<K of kotlin.collections.MapsKt.hashMapOf, V of kotlin.collections.MapsKt.hashMapOf> [inline] declared in kotlin.collections.MapsKt' type=java.util.HashMap<kotlin.String, kotlin.Int> origin=null
|
||||
<K>: kotlin.String
|
||||
<V>: kotlin.Int
|
||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-x> visibility:local modality:FINAL <> () returnType:@[FlexibleNullability] kotlin.Int?
|
||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-x> visibility:local modality:FINAL <> () returnType:kotlin.Int
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='local final fun <get-x> (): @[FlexibleNullability] kotlin.Int? declared in <root>.test2'
|
||||
CALL 'public final fun getValue <V, V1> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>): V1 of kotlin.collections.MapAccessorsKt.getValue [inline,operator] declared in kotlin.collections.MapAccessorsKt' type=@[FlexibleNullability] kotlin.Int? origin=null
|
||||
<V>: @[FlexibleNullability] kotlin.Int?
|
||||
<V1>: @[FlexibleNullability] kotlin.Int?
|
||||
RETURN type=kotlin.Nothing from='local final fun <get-x> (): kotlin.Int declared in <root>.test2'
|
||||
CALL 'public final fun getValue <V, V1> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>): V1 of kotlin.collections.MapAccessorsKt.getValue [inline,operator] declared in kotlin.collections.MapAccessorsKt' type=kotlin.Int origin=null
|
||||
<V>: kotlin.Int
|
||||
<V1>: kotlin.Int
|
||||
$receiver: GET_VAR 'val x$delegate: java.util.HashMap<kotlin.String, kotlin.Int> [val] declared in <root>.test2' type=java.util.HashMap<kotlin.String, kotlin.Int> origin=null
|
||||
thisRef: CONST Null type=kotlin.Nothing? value=null
|
||||
property: LOCAL_DELEGATED_PROPERTY_REFERENCE 'var x: @[FlexibleNullability] kotlin.Int? by (...)' delegate='val x$delegate: java.util.HashMap<kotlin.String, kotlin.Int> [val] declared in <root>.test2' getter='local final fun <get-x> (): @[FlexibleNullability] kotlin.Int? declared in <root>.test2' setter='local final fun <set-x> (<set-?>: @[FlexibleNullability] kotlin.Int?): kotlin.Unit declared in <root>.test2' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.Int?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
|
||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-x> visibility:local modality:FINAL <> (<set-?>:@[FlexibleNullability] kotlin.Int?) returnType:kotlin.Unit
|
||||
VALUE_PARAMETER name:<set-?> index:0 type:@[FlexibleNullability] kotlin.Int?
|
||||
property: LOCAL_DELEGATED_PROPERTY_REFERENCE 'var x: kotlin.Int by (...)' delegate='val x$delegate: java.util.HashMap<kotlin.String, kotlin.Int> [val] declared in <root>.test2' getter='local final fun <get-x> (): kotlin.Int declared in <root>.test2' setter='local final fun <set-x> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.test2' type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=PROPERTY_REFERENCE_FOR_DELEGATE
|
||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-x> visibility:local modality:FINAL <> (<set-?>:kotlin.Int) returnType:kotlin.Unit
|
||||
VALUE_PARAMETER name:<set-?> index:0 type:kotlin.Int
|
||||
BLOCK_BODY
|
||||
CALL 'public final fun setValue <V> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>, value: V of kotlin.collections.MapAccessorsKt.setValue): kotlin.Unit [inline,operator] declared in kotlin.collections.MapAccessorsKt' type=kotlin.Unit origin=null
|
||||
<V>: @[FlexibleNullability] kotlin.Int?
|
||||
<V>: kotlin.Int
|
||||
$receiver: GET_VAR 'val x$delegate: java.util.HashMap<kotlin.String, kotlin.Int> [val] declared in <root>.test2' type=java.util.HashMap<kotlin.String, kotlin.Int> origin=null
|
||||
thisRef: CONST Null type=kotlin.Nothing? value=null
|
||||
property: LOCAL_DELEGATED_PROPERTY_REFERENCE 'var x: @[FlexibleNullability] kotlin.Int? by (...)' delegate='val x$delegate: java.util.HashMap<kotlin.String, kotlin.Int> [val] declared in <root>.test2' getter='local final fun <get-x> (): @[FlexibleNullability] kotlin.Int? declared in <root>.test2' setter='local final fun <set-x> (<set-?>: @[FlexibleNullability] kotlin.Int?): kotlin.Unit declared in <root>.test2' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.Int?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
|
||||
value: GET_VAR '<set-?>: @[FlexibleNullability] kotlin.Int? declared in <root>.test2.<set-x>' type=@[FlexibleNullability] kotlin.Int? origin=null
|
||||
CALL 'local final fun <set-x> (<set-?>: @[FlexibleNullability] kotlin.Int?): kotlin.Unit declared in <root>.test2' type=kotlin.Unit origin=EQ
|
||||
property: LOCAL_DELEGATED_PROPERTY_REFERENCE 'var x: kotlin.Int by (...)' delegate='val x$delegate: java.util.HashMap<kotlin.String, kotlin.Int> [val] declared in <root>.test2' getter='local final fun <get-x> (): kotlin.Int declared in <root>.test2' setter='local final fun <set-x> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.test2' type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=PROPERTY_REFERENCE_FOR_DELEGATE
|
||||
value: GET_VAR '<set-?>: kotlin.Int declared in <root>.test2.<set-x>' type=kotlin.Int origin=null
|
||||
CALL 'local final fun <set-x> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.test2' type=kotlin.Unit origin=EQ
|
||||
<set-?>: CONST Int type=kotlin.Int value=0
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:@[FlexibleNullability] kotlin.Int? [val]
|
||||
CALL 'local final fun <get-x> (): @[FlexibleNullability] kotlin.Int? declared in <root>.test2' type=@[FlexibleNullability] kotlin.Int? origin=GET_LOCAL_PROPERTY
|
||||
CALL 'local final fun <set-x> (<set-?>: @[FlexibleNullability] kotlin.Int?): kotlin.Unit declared in <root>.test2' type=kotlin.Unit origin=POSTFIX_INCR
|
||||
<set-?>: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
|
||||
$this: GET_VAR 'val tmp_0: @[FlexibleNullability] kotlin.Int? [val] declared in <root>.test2' type=@[FlexibleNullability] kotlin.Int? origin=null
|
||||
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
||||
GET_VAR 'val tmp_0: @[FlexibleNullability] kotlin.Int? [val] declared in <root>.test2' type=@[FlexibleNullability] kotlin.Int? origin=null
|
||||
CALL 'local final fun <set-x> (<set-?>: @[FlexibleNullability] kotlin.Int?): kotlin.Unit declared in <root>.test2' type=kotlin.Unit origin=PLUSEQ
|
||||
BLOCK type=kotlin.Int origin=POSTFIX_INCR
|
||||
VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:kotlin.Int [val]
|
||||
CALL 'local final fun <get-x> (): kotlin.Int declared in <root>.test2' type=kotlin.Int origin=GET_LOCAL_PROPERTY
|
||||
CALL 'local final fun <set-x> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.test2' type=kotlin.Unit origin=POSTFIX_INCR
|
||||
<set-?>: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
|
||||
$this: GET_VAR 'val tmp_0: kotlin.Int [val] declared in <root>.test2' type=kotlin.Int origin=null
|
||||
GET_VAR 'val tmp_0: kotlin.Int [val] declared in <root>.test2' type=kotlin.Int origin=null
|
||||
CALL 'local final fun <set-x> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.test2' type=kotlin.Unit origin=PLUSEQ
|
||||
<set-?>: CALL 'public final fun plus (other: kotlin.Int): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
|
||||
$this: CALL 'local final fun <get-x> (): @[FlexibleNullability] kotlin.Int? declared in <root>.test2' type=@[FlexibleNullability] kotlin.Int? origin=GET_LOCAL_PROPERTY
|
||||
$this: CALL 'local final fun <get-x> (): kotlin.Int declared in <root>.test2' type=kotlin.Int origin=GET_LOCAL_PROPERTY
|
||||
other: CONST Int type=kotlin.Int value=1
|
||||
|
||||
+11
-8
@@ -12,18 +12,21 @@ fun test1() {
|
||||
}
|
||||
|
||||
fun test2() {
|
||||
var x: @FlexibleNullability Int?
|
||||
var x: Int
|
||||
val x$delegate: HashMap<String, Int> = hashMapOf<String, Int>()
|
||||
local get(): @FlexibleNullability Int? {
|
||||
return x$delegate.getValue<@FlexibleNullability Int?, @FlexibleNullability Int?>(thisRef = null, property = ::x)
|
||||
local get(): Int {
|
||||
return x$delegate.getValue<Int, Int>(thisRef = null, property = ::x)
|
||||
}
|
||||
local set(<set-?>: @FlexibleNullability Int?) {
|
||||
x$delegate.setValue<@FlexibleNullability Int?>(thisRef = null, property = ::x, value = <set-?>)
|
||||
local set(<set-?>: Int) {
|
||||
x$delegate.setValue<Int>(thisRef = null, property = ::x, value = <set-?>)
|
||||
}
|
||||
|
||||
<set-x>(<set-?> = 0)
|
||||
val <unary>: @FlexibleNullability Int? = <get-x>()
|
||||
<set-x>(<set-?> = <unary>.inc())
|
||||
<unary> /*~> Unit */
|
||||
{ // BLOCK
|
||||
val <unary>: Int = <get-x>()
|
||||
<set-x>(<set-?> = <unary>.inc())
|
||||
<unary>
|
||||
} /*~> Unit */
|
||||
<set-x>(<set-?> = <get-x>().plus(other = 1))
|
||||
}
|
||||
|
||||
|
||||
+11
-11
@@ -93,23 +93,23 @@ FILE fqName:<root> fileName:/packageLevelProperties.kt
|
||||
CALL 'public final fun hashMapOf <K, V> (): java.util.HashMap<K of kotlin.collections.MapsKt.hashMapOf, V of kotlin.collections.MapsKt.hashMapOf> [inline] declared in kotlin.collections.MapsKt' type=java.util.HashMap<kotlin.String, kotlin.Int> origin=null
|
||||
<K>: kotlin.String
|
||||
<V>: kotlin.Int
|
||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-test8> visibility:public modality:FINAL <> () returnType:@[FlexibleNullability] kotlin.Int?
|
||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-test8> visibility:public modality:FINAL <> () returnType:kotlin.Int
|
||||
correspondingProperty: PROPERTY name:test8 visibility:public modality:FINAL [delegated,var]
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='public final fun <get-test8> (): @[FlexibleNullability] kotlin.Int? declared in <root>'
|
||||
CALL 'public final fun getValue <V, V1> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>): V1 of kotlin.collections.MapAccessorsKt.getValue [inline,operator] declared in kotlin.collections.MapAccessorsKt' type=@[FlexibleNullability] kotlin.Int? origin=null
|
||||
<V>: @[FlexibleNullability] kotlin.Int?
|
||||
<V1>: @[FlexibleNullability] kotlin.Int?
|
||||
RETURN type=kotlin.Nothing from='public final fun <get-test8> (): kotlin.Int declared in <root>'
|
||||
CALL 'public final fun getValue <V, V1> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>): V1 of kotlin.collections.MapAccessorsKt.getValue [inline,operator] declared in kotlin.collections.MapAccessorsKt' type=kotlin.Int origin=null
|
||||
<V>: kotlin.Int
|
||||
<V1>: kotlin.Int
|
||||
$receiver: GET_FIELD 'FIELD PROPERTY_DELEGATE name:test8$delegate type:java.util.HashMap<kotlin.String, kotlin.Int> visibility:private [final,static]' type=java.util.HashMap<kotlin.String, kotlin.Int> origin=null
|
||||
thisRef: CONST Null type=kotlin.Nothing? value=null
|
||||
property: PROPERTY_REFERENCE 'public final test8: @[FlexibleNullability] kotlin.Int? [delegated,var]' field=null getter='public final fun <get-test8> (): @[FlexibleNullability] kotlin.Int? declared in <root>' setter='public final fun <set-test8> (<set-?>: @[FlexibleNullability] kotlin.Int?): kotlin.Unit declared in <root>' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.Int?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
|
||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-test8> visibility:public modality:FINAL <> (<set-?>:@[FlexibleNullability] kotlin.Int?) returnType:kotlin.Unit
|
||||
property: PROPERTY_REFERENCE 'public final test8: kotlin.Int [delegated,var]' field=null getter='public final fun <get-test8> (): kotlin.Int declared in <root>' setter='public final fun <set-test8> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>' type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=PROPERTY_REFERENCE_FOR_DELEGATE
|
||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-test8> visibility:public modality:FINAL <> (<set-?>:kotlin.Int) returnType:kotlin.Unit
|
||||
correspondingProperty: PROPERTY name:test8 visibility:public modality:FINAL [delegated,var]
|
||||
VALUE_PARAMETER name:<set-?> index:0 type:@[FlexibleNullability] kotlin.Int?
|
||||
VALUE_PARAMETER name:<set-?> index:0 type:kotlin.Int
|
||||
BLOCK_BODY
|
||||
CALL 'public final fun setValue <V> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>, value: V of kotlin.collections.MapAccessorsKt.setValue): kotlin.Unit [inline,operator] declared in kotlin.collections.MapAccessorsKt' type=kotlin.Unit origin=null
|
||||
<V>: @[FlexibleNullability] kotlin.Int?
|
||||
<V>: kotlin.Int
|
||||
$receiver: GET_FIELD 'FIELD PROPERTY_DELEGATE name:test8$delegate type:java.util.HashMap<kotlin.String, kotlin.Int> visibility:private [final,static]' type=java.util.HashMap<kotlin.String, kotlin.Int> origin=null
|
||||
thisRef: CONST Null type=kotlin.Nothing? value=null
|
||||
property: PROPERTY_REFERENCE 'public final test8: @[FlexibleNullability] kotlin.Int? [delegated,var]' field=null getter='public final fun <get-test8> (): @[FlexibleNullability] kotlin.Int? declared in <root>' setter='public final fun <set-test8> (<set-?>: @[FlexibleNullability] kotlin.Int?): kotlin.Unit declared in <root>' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.Int?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
|
||||
value: GET_VAR '<set-?>: @[FlexibleNullability] kotlin.Int? declared in <root>.<set-test8>' type=@[FlexibleNullability] kotlin.Int? origin=null
|
||||
property: PROPERTY_REFERENCE 'public final test8: kotlin.Int [delegated,var]' field=null getter='public final fun <get-test8> (): kotlin.Int declared in <root>' setter='public final fun <set-test8> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>' type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=PROPERTY_REFERENCE_FOR_DELEGATE
|
||||
value: GET_VAR '<set-?>: kotlin.Int declared in <root>.<set-test8>' type=kotlin.Int origin=null
|
||||
|
||||
@@ -37,11 +37,12 @@ val test7: Int /* by */
|
||||
return #test7$delegate.getValue<Int>(thisRef = null, property = ::test7)
|
||||
}
|
||||
|
||||
var test8: @FlexibleNullability Int? /* by */
|
||||
var test8: Int /* by */
|
||||
field = hashMapOf<String, Int>()
|
||||
get(): @FlexibleNullability Int? {
|
||||
return #test8$delegate.getValue<@FlexibleNullability Int?, @FlexibleNullability Int?>(thisRef = null, property = ::test8)
|
||||
get(): Int {
|
||||
return #test8$delegate.getValue<Int, Int>(thisRef = null, property = ::test8)
|
||||
}
|
||||
set(<set-?>: @FlexibleNullability Int?) {
|
||||
#test8$delegate.setValue<@FlexibleNullability Int?>(thisRef = null, property = ::test8, value = <set-?>)
|
||||
set(<set-?>: Int) {
|
||||
#test8$delegate.setValue<Int>(thisRef = null, property = ::test8, value = <set-?>)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user