diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/Fir2IrTextTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/Fir2IrTextTestGenerated.java index 080b37be26d..0661fc5564b 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/Fir2IrTextTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/Fir2IrTextTestGenerated.java @@ -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 { diff --git a/compiler/testData/ir/irText/declarations/provideDelegate/javaDelegate.fir.txt b/compiler/testData/ir/irText/declarations/provideDelegate/javaDelegate.fir.txt new file mode 100644 index 00000000000..222919de037 --- /dev/null +++ b/compiler/testData/ir/irText/declarations/provideDelegate/javaDelegate.fir.txt @@ -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 .J' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null reflectionTarget= + $this: CONSTRUCTOR_CALL 'public constructor () [primary] declared in .J' type=.J origin=null + FUN DELEGATED_PROPERTY_ACCESSOR name: 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 (): @[FlexibleNullability] kotlin.String? declared in k' + CALL 'public final fun getValue (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>): V of kotlin.PropertyReferenceDelegatesKt.getValue [inline,operator] declared in kotlin.PropertyReferenceDelegatesKt' type=@[FlexibleNullability] kotlin.String? origin=null + : @[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 (): @[FlexibleNullability] kotlin.String? declared in k' setter='public final fun (: @[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: visibility:public modality:FINAL <> (:@[FlexibleNullability] kotlin.String?) returnType:kotlin.Unit + correspondingProperty: PROPERTY name:p1 visibility:public modality:FINAL [delegated,var] + VALUE_PARAMETER name: index:0 type:@[FlexibleNullability] kotlin.String? + BLOCK_BODY + CALL 'public final fun setValue (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 + : @[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 (): @[FlexibleNullability] kotlin.String? declared in k' setter='public final fun (: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=PROPERTY_REFERENCE_FOR_DELEGATE + value: GET_VAR ': @[FlexibleNullability] kotlin.String? declared in k.' 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 .J' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null reflectionTarget= + $this: CONSTRUCTOR_CALL 'public constructor () [primary] declared in .J' type=.J origin=null + FUN DELEGATED_PROPERTY_ACCESSOR name: 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 (): @[FlexibleNullability] kotlin.String? declared in k' + CALL 'public final fun getValue (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>): V of kotlin.PropertyReferenceDelegatesKt.getValue [inline,operator] declared in kotlin.PropertyReferenceDelegatesKt' type=@[FlexibleNullability] kotlin.String? origin=null + : @[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 (): @[FlexibleNullability] kotlin.String? declared in k' setter='public final fun (: @[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: visibility:public modality:FINAL <> (:@[FlexibleNullability] kotlin.String?) returnType:kotlin.Unit + correspondingProperty: PROPERTY name:p2 visibility:public modality:FINAL [delegated,var] + VALUE_PARAMETER name: index:0 type:@[FlexibleNullability] kotlin.String? + BLOCK_BODY + CALL 'public final fun setValue (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 + : @[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 (): @[FlexibleNullability] kotlin.String? declared in k' setter='public final fun (: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=PROPERTY_REFERENCE_FOR_DELEGATE + value: GET_VAR ': @[FlexibleNullability] kotlin.String? declared in k.' type=@[FlexibleNullability] kotlin.String? origin=null + FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String + BLOCK_BODY + CALL 'public final fun (: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.Unit origin=EQ + : CONST String type=kotlin.String value="O" + CALL 'public final fun (: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.Unit origin=EQ + : 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 (): @[FlexibleNullability] kotlin.String? declared in k' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY + other: CALL 'public final fun (): @[FlexibleNullability] kotlin.String? declared in k' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY diff --git a/compiler/testData/ir/irText/declarations/provideDelegate/javaDelegate.kt b/compiler/testData/ir/irText/declarations/provideDelegate/javaDelegate.kt new file mode 100644 index 00000000000..ce0652ea0b2 --- /dev/null +++ b/compiler/testData/ir/irText/declarations/provideDelegate/javaDelegate.kt @@ -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; + } +} \ No newline at end of file diff --git a/compiler/testData/ir/irText/declarations/provideDelegate/javaDelegate.txt b/compiler/testData/ir/irText/declarations/provideDelegate/javaDelegate.txt new file mode 100644 index 00000000000..b26968d25a3 --- /dev/null +++ b/compiler/testData/ir/irText/declarations/provideDelegate/javaDelegate.txt @@ -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 .J' setter='public open fun setFoo (s: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in .J' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null + $receiver: CONSTRUCTOR_CALL 'public constructor () [primary] declared in .J' type=.J origin=null + FUN DELEGATED_PROPERTY_ACCESSOR name: 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 (): @[FlexibleNullability] kotlin.String? declared in k' + CALL 'public final fun getValue (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>): V of kotlin.PropertyReferenceDelegatesKt.getValue [inline,operator] declared in kotlin.PropertyReferenceDelegatesKt' type=@[FlexibleNullability] kotlin.String? origin=null + : @[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 (): @[FlexibleNullability] kotlin.String? declared in k' setter='public final fun (: @[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: visibility:public modality:FINAL <> (:@[FlexibleNullability] kotlin.String?) returnType:kotlin.Unit + correspondingProperty: PROPERTY name:p1 visibility:public modality:FINAL [delegated,var] + VALUE_PARAMETER name: index:0 type:@[FlexibleNullability] kotlin.String? + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' + CALL 'public final fun setValue (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 + : @[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 (): @[FlexibleNullability] kotlin.String? declared in k' setter='public final fun (: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=PROPERTY_REFERENCE_FOR_DELEGATE + value: GET_VAR ': @[FlexibleNullability] kotlin.String? declared in k.' 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 .J' setter='public open fun setFoo (s: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in .J' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null + $receiver: CONSTRUCTOR_CALL 'public constructor () [primary] declared in .J' type=.J origin=null + FUN DELEGATED_PROPERTY_ACCESSOR name: 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 (): @[FlexibleNullability] kotlin.String? declared in k' + CALL 'public final fun getValue (thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>): V of kotlin.PropertyReferenceDelegatesKt.getValue [inline,operator] declared in kotlin.PropertyReferenceDelegatesKt' type=@[FlexibleNullability] kotlin.String? origin=null + : @[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 (): @[FlexibleNullability] kotlin.String? declared in k' setter='public final fun (: @[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: visibility:public modality:FINAL <> (:@[FlexibleNullability] kotlin.String?) returnType:kotlin.Unit + correspondingProperty: PROPERTY name:p2 visibility:public modality:FINAL [delegated,var] + VALUE_PARAMETER name: index:0 type:@[FlexibleNullability] kotlin.String? + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' + CALL 'public final fun setValue (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 + : @[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 (): @[FlexibleNullability] kotlin.String? declared in k' setter='public final fun (: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=PROPERTY_REFERENCE_FOR_DELEGATE + value: GET_VAR ': @[FlexibleNullability] kotlin.String? declared in k.' type=@[FlexibleNullability] kotlin.String? origin=null + FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String + BLOCK_BODY + CALL 'public final fun (: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.Unit origin=EQ + : CONST String type=kotlin.String value="O" + CALL 'public final fun (: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in k' type=kotlin.Unit origin=EQ + : 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 (): @[FlexibleNullability] kotlin.String? declared in k' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY + other: CALL 'public final fun (): @[FlexibleNullability] kotlin.String? declared in k' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/ir/IrTextTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/ir/IrTextTestGenerated.java index 40a9e267a6f..ee9d85fac82 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/ir/IrTextTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/ir/IrTextTestGenerated.java @@ -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 {