From 34af0139132cb7a20d71dda1f839f2172842e453 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Mon, 3 Oct 2022 17:51:24 +0300 Subject: [PATCH] [AA LC] Add test for modifiers of delegate fields --- ...lassesByFqNameForLibraryTestGenerated.java | 6 ++ ...htClassesByPsiForLibraryTestGenerated.java | 6 ++ ...assesParentingForLibraryTestGenerated.java | 6 ++ ...ClassesByFqNameForSourceTestGenerated.java | 6 ++ ...ghtClassesByPsiForSourceTestGenerated.java | 6 ++ ...lassesParentingForSourceTestGenerated.java | 6 ++ .../DelegatedProperty.fir.java | 76 +++++++++++++++++++ .../lightClassByPsi/DelegatedProperty.java | 76 +++++++++++++++++++ .../lightClassByPsi/DelegatedProperty.kt | 28 +++++++ .../CompilerLightClassTestGenerated.java | 5 ++ 10 files changed, 221 insertions(+) create mode 100644 compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.fir.java create mode 100644 compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.java create mode 100644 compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.kt diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByFqNameForLibraryTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByFqNameForLibraryTestGenerated.java index db74a793680..a7aa7b93a2c 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByFqNameForLibraryTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByFqNameForLibraryTestGenerated.java @@ -108,6 +108,12 @@ public class SymbolLightClassesByFqNameForLibraryTestGenerated extends AbstractS runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DelegatedNested.kt"); } + @Test + @TestMetadata("delegatedProperty.kt") + public void testDelegatedProperty() throws Exception { + runTest("compiler/testData/asJava/lightClasses/delegatedProperty.kt"); + } + @Test @TestMetadata("Delegation.kt") public void testDelegation() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByPsiForLibraryTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByPsiForLibraryTestGenerated.java index a6df161663e..639c1d24dc8 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByPsiForLibraryTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByPsiForLibraryTestGenerated.java @@ -72,6 +72,12 @@ public class SymbolLightClassesByPsiForLibraryTestGenerated extends AbstractSymb runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/defaultMethodInKotlinWithSettingAllCompatibility.kt"); } + @Test + @TestMetadata("DelegatedProperty.kt") + public void testDelegatedProperty() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.kt"); + } + @Test @TestMetadata("delegatesWithAnnotations.kt") public void testDelegatesWithAnnotations() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesParentingForLibraryTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesParentingForLibraryTestGenerated.java index 2826388c442..78f8d17809e 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesParentingForLibraryTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesParentingForLibraryTestGenerated.java @@ -108,6 +108,12 @@ public class SymbolLightClassesParentingForLibraryTestGenerated extends Abstract runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DelegatedNested.kt"); } + @Test + @TestMetadata("delegatedProperty.kt") + public void testDelegatedProperty() throws Exception { + runTest("compiler/testData/asJava/lightClasses/delegatedProperty.kt"); + } + @Test @TestMetadata("Delegation.kt") public void testDelegation() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByFqNameForSourceTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByFqNameForSourceTestGenerated.java index 2ab6c1bf842..a820ef14e06 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByFqNameForSourceTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByFqNameForSourceTestGenerated.java @@ -108,6 +108,12 @@ public class SymbolLightClassesByFqNameForSourceTestGenerated extends AbstractSy runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DelegatedNested.kt"); } + @Test + @TestMetadata("delegatedProperty.kt") + public void testDelegatedProperty() throws Exception { + runTest("compiler/testData/asJava/lightClasses/delegatedProperty.kt"); + } + @Test @TestMetadata("Delegation.kt") public void testDelegation() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByPsiForSourceTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByPsiForSourceTestGenerated.java index 1915fe34090..fdbbfac6f4f 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByPsiForSourceTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByPsiForSourceTestGenerated.java @@ -72,6 +72,12 @@ public class SymbolLightClassesByPsiForSourceTestGenerated extends AbstractSymbo runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/defaultMethodInKotlinWithSettingAllCompatibility.kt"); } + @Test + @TestMetadata("DelegatedProperty.kt") + public void testDelegatedProperty() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.kt"); + } + @Test @TestMetadata("delegatesWithAnnotations.kt") public void testDelegatesWithAnnotations() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingForSourceTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingForSourceTestGenerated.java index 15c34afe439..af0cbc088d3 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingForSourceTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingForSourceTestGenerated.java @@ -108,6 +108,12 @@ public class SymbolLightClassesParentingForSourceTestGenerated extends AbstractS runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DelegatedNested.kt"); } + @Test + @TestMetadata("delegatedProperty.kt") + public void testDelegatedProperty() throws Exception { + runTest("compiler/testData/asJava/lightClasses/delegatedProperty.kt"); + } + @Test @TestMetadata("Delegation.kt") public void testDelegation() throws Exception { diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.fir.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.fir.java new file mode 100644 index 00000000000..ab449f653b8 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.fir.java @@ -0,0 +1,76 @@ +public static abstract class Base /* Container.Base*/ { + @org.jetbrains.annotations.NotNull() + private final Container.Delegate a$delegate; + + @org.jetbrains.annotations.NotNull() + private final Container.Delegate b$delegate; + + @org.jetbrains.annotations.NotNull() + private final java.lang.String c = "" /* initializer type: java.lang.String */; + + @org.jetbrains.annotations.NotNull() + public abstract java.lang.String getD();// getD() + + @org.jetbrains.annotations.NotNull() + public final java.lang.String getA();// getA() + + @org.jetbrains.annotations.NotNull() + public java.lang.String getB();// getB() + + @org.jetbrains.annotations.NotNull() + public java.lang.String getC();// getC() + + public Base();// .ctor() +} + +public static final class Companion /* Container.Companion*/ { + @org.jetbrains.annotations.NotNull() + public final Container.Delegate delegate();// delegate() + + private Companion();// .ctor() +} + +public final class Container /* Container*/ { + @org.jetbrains.annotations.NotNull() + public static final Container.Companion Companion; + + public Container();// .ctor() + + class Base ... + + class Companion ... + + class Delegate ... + + class Derived ... +} + +public static abstract interface Delegate /* Container.Delegate*/ { + public abstract R getValue(@org.jetbrains.annotations.Nullable() java.lang.Object, @org.jetbrains.annotations.NotNull() kotlin.reflect.KProperty);// getValue(java.lang.Object, kotlin.reflect.KProperty) + + public abstract void setValue(@org.jetbrains.annotations.Nullable() java.lang.Object, @org.jetbrains.annotations.NotNull() kotlin.reflect.KProperty, R);// setValue(java.lang.Object, kotlin.reflect.KProperty, R) + + class DefaultImpls ... +} + +public static final class Derived /* Container.Derived*/ extends Container.Base { + @org.jetbrains.annotations.NotNull() + private final Container.Delegate b$delegate; + + @org.jetbrains.annotations.NotNull() + private final Container.Delegate c$delegate; + + @org.jetbrains.annotations.NotNull() + private final Container.Delegate d$delegate; + + @org.jetbrains.annotations.NotNull() + public java.lang.String getB();// getB() + + @org.jetbrains.annotations.NotNull() + public java.lang.String getC();// getC() + + @org.jetbrains.annotations.NotNull() + public java.lang.String getD();// getD() + + public Derived();// .ctor() +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.java new file mode 100644 index 00000000000..f4cc328f222 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.java @@ -0,0 +1,76 @@ +public static abstract class Base /* Container.Base*/ { + @org.jetbrains.annotations.NotNull() + private final Container.Delegate a$delegate; + + @org.jetbrains.annotations.NotNull() + private final Container.Delegate b$delegate; + + @org.jetbrains.annotations.NotNull() + private final java.lang.String c; + + @org.jetbrains.annotations.NotNull() + public abstract java.lang.String getD();// getD() + + @org.jetbrains.annotations.NotNull() + public final java.lang.String getA();// getA() + + @org.jetbrains.annotations.NotNull() + public java.lang.String getB();// getB() + + @org.jetbrains.annotations.NotNull() + public java.lang.String getC();// getC() + + public Base();// .ctor() +} + +public static final class Companion /* Container.Companion*/ { + @org.jetbrains.annotations.NotNull() + public final Container.Delegate delegate();// delegate() + + private Companion();// .ctor() +} + +public final class Container /* Container*/ { + @org.jetbrains.annotations.NotNull() + public static final Container.Companion Companion; + + public Container();// .ctor() + + class Base ... + + class Companion ... + + class Delegate ... + + class Derived ... +} + +public static abstract interface Delegate /* Container.Delegate*/ { + public abstract R getValue(@org.jetbrains.annotations.Nullable() java.lang.Object, @org.jetbrains.annotations.NotNull() kotlin.reflect.KProperty);// getValue(java.lang.Object, kotlin.reflect.KProperty) + + public abstract void setValue(@org.jetbrains.annotations.Nullable() java.lang.Object, @org.jetbrains.annotations.NotNull() kotlin.reflect.KProperty, R);// setValue(java.lang.Object, kotlin.reflect.KProperty, R) + + class DefaultImpls ... +} + +public static final class Derived /* Container.Derived*/ extends Container.Base { + @org.jetbrains.annotations.NotNull() + private final Container.Delegate b$delegate; + + @org.jetbrains.annotations.NotNull() + private final Container.Delegate c$delegate; + + @org.jetbrains.annotations.NotNull() + private final Container.Delegate d$delegate; + + @org.jetbrains.annotations.NotNull() + public java.lang.String getB();// getB() + + @org.jetbrains.annotations.NotNull() + public java.lang.String getC();// getC() + + @org.jetbrains.annotations.NotNull() + public java.lang.String getD();// getD() + + public Derived();// .ctor() +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.kt b/compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.kt new file mode 100644 index 00000000000..d90fb8c4571 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/DelegatedProperty.kt @@ -0,0 +1,28 @@ +// Container +import kotlin.reflect.KProperty + +class Container { + companion object { + fun delegate(): Delegate = null!! + } + + interface Delegate { + operator fun getValue(thisRef: Any?, property: KProperty<*>): R = null!! + + operator fun setValue(thisRef: Any?, property: KProperty<*>, value: R) { + } + } + + abstract class Base { + val a: String by delegate() + open val b: String by delegate() + open val c: String = "" + abstract val d: String + } + + class Derived : Base() { + override val b: String by delegate() + override val c: String by delegate() + override val d: String by delegate() + } +} diff --git a/compiler/tests-gen/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java index 3e4618dafc4..3b772399959 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java @@ -99,6 +99,11 @@ public class CompilerLightClassTestGenerated extends AbstractCompilerLightClassT runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DelegatedNested.kt"); } + @TestMetadata("delegatedProperty.kt") + public void testDelegatedProperty() throws Exception { + runTest("compiler/testData/asJava/lightClasses/delegatedProperty.kt"); + } + @TestMetadata("Delegation.kt") public void testDelegation() throws Exception { runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/Delegation.kt");