[IR] Add irText test for KT-45297

This commit is contained in:
Roman Artemev
2021-03-15 15:34:33 +03:00
parent 78a0d7b5bb
commit 0a4f2bc39c
5 changed files with 164 additions and 0 deletions
@@ -809,6 +809,12 @@ public class Fir2IrTextTestGenerated extends AbstractFir2IrTextTest {
runTest("compiler/testData/ir/irText/declarations/provideDelegate/differentReceivers.kt");
}
@Test
@TestMetadata("javaDelegate.kt")
public void testJavaDelegate() throws Exception {
runTest("compiler/testData/ir/irText/declarations/provideDelegate/javaDelegate.kt");
}
@Test
@TestMetadata("local.kt")
public void testLocal() throws Exception {
@@ -0,0 +1,59 @@
FILE fqName:k fileName:/box.kt
PROPERTY name:p1 visibility:public modality:FINAL [delegated,var]
FIELD PROPERTY_DELEGATE name:p1$delegate type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> visibility:private [final,static]
EXPRESSION_BODY
FUNCTION_REFERENCE 'public open fun getFoo (): @[FlexibleNullability] kotlin.String? declared in <root>.J' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null reflectionTarget=<same>
$this: CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.J' type=<root>.J origin=null
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-p1> visibility:public modality:FINAL <> () returnType:@[FlexibleNullability] kotlin.String?
correspondingProperty: PROPERTY name:p1 visibility:public modality:FINAL [delegated,var]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-p1> (): @[FlexibleNullability] kotlin.String? declared in k'
CALL 'public final fun getValue <V> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>): V of kotlin.PropertyReferenceDelegatesKt.getValue [inline,operator] declared in kotlin.PropertyReferenceDelegatesKt' type=@[FlexibleNullability] kotlin.String? origin=null
<V>: @[FlexibleNullability] kotlin.String?
$receiver: GET_FIELD 'FIELD PROPERTY_DELEGATE name:p1$delegate type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> visibility:private [final,static]' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null
thisRef: CONST Null type=kotlin.Nothing? value=null
property: PROPERTY_REFERENCE 'public final p1: @[FlexibleNullability] kotlin.String? [delegated,var]' field=null getter='public final fun <get-p1> (): @[FlexibleNullability] kotlin.String? declared in k' setter='public final fun <set-p1> (<set-?>: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-p1> visibility:public modality:FINAL <> (<set-?>:@[FlexibleNullability] kotlin.String?) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:p1 visibility:public modality:FINAL [delegated,var]
VALUE_PARAMETER name:<set-?> index:0 type:@[FlexibleNullability] kotlin.String?
BLOCK_BODY
CALL 'public final fun setValue <V> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>, value: V of kotlin.PropertyReferenceDelegatesKt.setValue): kotlin.Unit [inline,operator] declared in kotlin.PropertyReferenceDelegatesKt' type=kotlin.Unit origin=null
<V>: @[FlexibleNullability] kotlin.String?
$receiver: GET_FIELD 'FIELD PROPERTY_DELEGATE name:p1$delegate type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> visibility:private [final,static]' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null
thisRef: CONST Null type=kotlin.Nothing? value=null
property: PROPERTY_REFERENCE 'public final p1: @[FlexibleNullability] kotlin.String? [delegated,var]' field=null getter='public final fun <get-p1> (): @[FlexibleNullability] kotlin.String? declared in k' setter='public final fun <set-p1> (<set-?>: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
value: GET_VAR '<set-?>: @[FlexibleNullability] kotlin.String? declared in k.<set-p1>' type=@[FlexibleNullability] kotlin.String? origin=null
PROPERTY name:p2 visibility:public modality:FINAL [delegated,var]
FIELD PROPERTY_DELEGATE name:p2$delegate type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> visibility:private [final,static]
EXPRESSION_BODY
FUNCTION_REFERENCE 'public open fun getFoo (): @[FlexibleNullability] kotlin.String? declared in <root>.J' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null reflectionTarget=<same>
$this: CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.J' type=<root>.J origin=null
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-p2> visibility:public modality:FINAL <> () returnType:@[FlexibleNullability] kotlin.String?
correspondingProperty: PROPERTY name:p2 visibility:public modality:FINAL [delegated,var]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-p2> (): @[FlexibleNullability] kotlin.String? declared in k'
CALL 'public final fun getValue <V> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>): V of kotlin.PropertyReferenceDelegatesKt.getValue [inline,operator] declared in kotlin.PropertyReferenceDelegatesKt' type=@[FlexibleNullability] kotlin.String? origin=null
<V>: @[FlexibleNullability] kotlin.String?
$receiver: GET_FIELD 'FIELD PROPERTY_DELEGATE name:p2$delegate type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> visibility:private [final,static]' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null
thisRef: CONST Null type=kotlin.Nothing? value=null
property: PROPERTY_REFERENCE 'public final p2: @[FlexibleNullability] kotlin.String? [delegated,var]' field=null getter='public final fun <get-p2> (): @[FlexibleNullability] kotlin.String? declared in k' setter='public final fun <set-p2> (<set-?>: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-p2> visibility:public modality:FINAL <> (<set-?>:@[FlexibleNullability] kotlin.String?) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:p2 visibility:public modality:FINAL [delegated,var]
VALUE_PARAMETER name:<set-?> index:0 type:@[FlexibleNullability] kotlin.String?
BLOCK_BODY
CALL 'public final fun setValue <V> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>, value: V of kotlin.PropertyReferenceDelegatesKt.setValue): kotlin.Unit [inline,operator] declared in kotlin.PropertyReferenceDelegatesKt' type=kotlin.Unit origin=null
<V>: @[FlexibleNullability] kotlin.String?
$receiver: GET_FIELD 'FIELD PROPERTY_DELEGATE name:p2$delegate type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> visibility:private [final,static]' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null
thisRef: CONST Null type=kotlin.Nothing? value=null
property: PROPERTY_REFERENCE 'public final p2: @[FlexibleNullability] kotlin.String? [delegated,var]' field=null getter='public final fun <get-p2> (): @[FlexibleNullability] kotlin.String? declared in k' setter='public final fun <set-p2> (<set-?>: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
value: GET_VAR '<set-?>: @[FlexibleNullability] kotlin.String? declared in k.<set-p2>' type=@[FlexibleNullability] kotlin.String? origin=null
FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String
BLOCK_BODY
CALL 'public final fun <set-p1> (<set-?>: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.Unit origin=EQ
<set-?>: CONST String type=kotlin.String value="O"
CALL 'public final fun <set-p2> (<set-?>: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.Unit origin=EQ
<set-?>: CONST String type=kotlin.String value="K"
RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in k'
CALL 'public final fun plus (other: kotlin.Any?): kotlin.String [operator] declared in kotlin.String' type=kotlin.String origin=PLUS
$this: CALL 'public final fun <get-p1> (): @[FlexibleNullability] kotlin.String? declared in k' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY
other: CALL 'public final fun <get-p2> (): @[FlexibleNullability] kotlin.String? declared in k' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY
@@ -0,0 +1,31 @@
// WITH_RUNTIME
// SKIP_KT_DUMP
// FILE: box.kt
package k
import J
var p1 by J()::foo
var p2 by J()::foo
fun box(): String {
p1 = "O"
p2 = "K"
return p1 + p2
}
// FILE: J.java
public class J {
private String s = "Fail";
public void setFoo(String s) {
this.s = s;
}
public String getFoo() {
return s;
}
}
@@ -0,0 +1,62 @@
FILE fqName:k fileName:/box.kt
PROPERTY name:p1 visibility:public modality:FINAL [delegated,var]
FIELD PROPERTY_DELEGATE name:p1$delegate type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> visibility:private [final,static]
EXPRESSION_BODY
PROPERTY_REFERENCE 'public final foo: @[FlexibleNullability] kotlin.String? [var]' field=null getter='public open fun getFoo (): @[FlexibleNullability] kotlin.String? declared in <root>.J' setter='public open fun setFoo (s: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in <root>.J' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null
$receiver: CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.J' type=<root>.J origin=null
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-p1> visibility:public modality:FINAL <> () returnType:@[FlexibleNullability] kotlin.String?
correspondingProperty: PROPERTY name:p1 visibility:public modality:FINAL [delegated,var]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-p1> (): @[FlexibleNullability] kotlin.String? declared in k'
CALL 'public final fun getValue <V> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>): V of kotlin.PropertyReferenceDelegatesKt.getValue [inline,operator] declared in kotlin.PropertyReferenceDelegatesKt' type=@[FlexibleNullability] kotlin.String? origin=null
<V>: @[FlexibleNullability] kotlin.String?
$receiver: GET_FIELD 'FIELD PROPERTY_DELEGATE name:p1$delegate type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> visibility:private [final,static]' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null
thisRef: CONST Null type=kotlin.Nothing? value=null
property: PROPERTY_REFERENCE 'public final p1: @[FlexibleNullability] kotlin.String? [delegated,var]' field=null getter='public final fun <get-p1> (): @[FlexibleNullability] kotlin.String? declared in k' setter='public final fun <set-p1> (<set-?>: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-p1> visibility:public modality:FINAL <> (<set-?>:@[FlexibleNullability] kotlin.String?) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:p1 visibility:public modality:FINAL [delegated,var]
VALUE_PARAMETER name:<set-?> index:0 type:@[FlexibleNullability] kotlin.String?
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <set-p1> (<set-?>: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k'
CALL 'public final fun setValue <V> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>, value: V of kotlin.PropertyReferenceDelegatesKt.setValue): kotlin.Unit [inline,operator] declared in kotlin.PropertyReferenceDelegatesKt' type=kotlin.Unit origin=null
<V>: @[FlexibleNullability] kotlin.String?
$receiver: GET_FIELD 'FIELD PROPERTY_DELEGATE name:p1$delegate type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> visibility:private [final,static]' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null
thisRef: CONST Null type=kotlin.Nothing? value=null
property: PROPERTY_REFERENCE 'public final p1: @[FlexibleNullability] kotlin.String? [delegated,var]' field=null getter='public final fun <get-p1> (): @[FlexibleNullability] kotlin.String? declared in k' setter='public final fun <set-p1> (<set-?>: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
value: GET_VAR '<set-?>: @[FlexibleNullability] kotlin.String? declared in k.<set-p1>' type=@[FlexibleNullability] kotlin.String? origin=null
PROPERTY name:p2 visibility:public modality:FINAL [delegated,var]
FIELD PROPERTY_DELEGATE name:p2$delegate type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> visibility:private [final,static]
EXPRESSION_BODY
PROPERTY_REFERENCE 'public final foo: @[FlexibleNullability] kotlin.String? [var]' field=null getter='public open fun getFoo (): @[FlexibleNullability] kotlin.String? declared in <root>.J' setter='public open fun setFoo (s: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in <root>.J' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null
$receiver: CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.J' type=<root>.J origin=null
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-p2> visibility:public modality:FINAL <> () returnType:@[FlexibleNullability] kotlin.String?
correspondingProperty: PROPERTY name:p2 visibility:public modality:FINAL [delegated,var]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-p2> (): @[FlexibleNullability] kotlin.String? declared in k'
CALL 'public final fun getValue <V> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>): V of kotlin.PropertyReferenceDelegatesKt.getValue [inline,operator] declared in kotlin.PropertyReferenceDelegatesKt' type=@[FlexibleNullability] kotlin.String? origin=null
<V>: @[FlexibleNullability] kotlin.String?
$receiver: GET_FIELD 'FIELD PROPERTY_DELEGATE name:p2$delegate type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> visibility:private [final,static]' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null
thisRef: CONST Null type=kotlin.Nothing? value=null
property: PROPERTY_REFERENCE 'public final p2: @[FlexibleNullability] kotlin.String? [delegated,var]' field=null getter='public final fun <get-p2> (): @[FlexibleNullability] kotlin.String? declared in k' setter='public final fun <set-p2> (<set-?>: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-p2> visibility:public modality:FINAL <> (<set-?>:@[FlexibleNullability] kotlin.String?) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:p2 visibility:public modality:FINAL [delegated,var]
VALUE_PARAMETER name:<set-?> index:0 type:@[FlexibleNullability] kotlin.String?
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <set-p2> (<set-?>: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k'
CALL 'public final fun setValue <V> (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>, value: V of kotlin.PropertyReferenceDelegatesKt.setValue): kotlin.Unit [inline,operator] declared in kotlin.PropertyReferenceDelegatesKt' type=kotlin.Unit origin=null
<V>: @[FlexibleNullability] kotlin.String?
$receiver: GET_FIELD 'FIELD PROPERTY_DELEGATE name:p2$delegate type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> visibility:private [final,static]' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null
thisRef: CONST Null type=kotlin.Nothing? value=null
property: PROPERTY_REFERENCE 'public final p2: @[FlexibleNullability] kotlin.String? [delegated,var]' field=null getter='public final fun <get-p2> (): @[FlexibleNullability] kotlin.String? declared in k' setter='public final fun <set-p2> (<set-?>: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
value: GET_VAR '<set-?>: @[FlexibleNullability] kotlin.String? declared in k.<set-p2>' type=@[FlexibleNullability] kotlin.String? origin=null
FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String
BLOCK_BODY
CALL 'public final fun <set-p1> (<set-?>: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.Unit origin=EQ
<set-?>: CONST String type=kotlin.String value="O"
CALL 'public final fun <set-p2> (<set-?>: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.Unit origin=EQ
<set-?>: CONST String type=kotlin.String value="K"
RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in k'
CALL 'public final fun plus (other: kotlin.Any?): kotlin.String [operator] declared in kotlin.String' type=kotlin.String origin=PLUS
$this: TYPE_OP type=kotlin.String origin=IMPLICIT_NOTNULL typeOperand=kotlin.String
CALL 'public final fun <get-p1> (): @[FlexibleNullability] kotlin.String? declared in k' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY
other: CALL 'public final fun <get-p2> (): @[FlexibleNullability] kotlin.String? declared in k' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY
@@ -809,6 +809,12 @@ public class IrTextTestGenerated extends AbstractIrTextTest {
runTest("compiler/testData/ir/irText/declarations/provideDelegate/differentReceivers.kt");
}
@Test
@TestMetadata("javaDelegate.kt")
public void testJavaDelegate() throws Exception {
runTest("compiler/testData/ir/irText/declarations/provideDelegate/javaDelegate.kt");
}
@Test
@TestMetadata("local.kt")
public void testLocal() throws Exception {