diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForNamedClassLike.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForNamedClassLike.kt index 67772cce25f..859c7747e00 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForNamedClassLike.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForNamedClassLike.kt @@ -76,6 +76,7 @@ abstract class SymbolLightClassForNamedClassLike : SymbolLightClassForClassLike< private val KtPropertySymbol.isConstOrJvmField: Boolean get() = isConst || hasJvmFieldAnnotation() private val KtPropertySymbol.isConst: Boolean get() = (this as? KtKotlinPropertySymbol)?.isConst == true + private val KtPropertySymbol.isLateInit: Boolean get() = (this as? KtKotlinPropertySymbol)?.isLateInit == true context(KtAnalysisSession) protected fun addFieldsFromCompanionIfNeeded( @@ -98,7 +99,7 @@ abstract class SymbolLightClassForNamedClassLike : SymbolLightClassForClassLike< lightMemberOrigin = null, isTopLevel = false, forceStatic = true, - takePropertyVisibility = it.isConstOrJvmField, + takePropertyVisibility = it.isConstOrJvmField || it.isLateInit, ) } } diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesLoadingForLibraryTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesLoadingForLibraryTestGenerated.java index 5be2682343d..eef1860f01c 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesLoadingForLibraryTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesLoadingForLibraryTestGenerated.java @@ -186,6 +186,12 @@ public class SymbolLightClassesLoadingForLibraryTestGenerated extends AbstractSy runTest("compiler/testData/asJava/ultraLightClasses/jvmWildcardAnnotations.kt"); } + @Test + @TestMetadata("LateinitProperties.kt") + public void testLateinitProperties() throws Exception { + runTest("compiler/testData/asJava/ultraLightClasses/LateinitProperties.kt"); + } + @Test @TestMetadata("lateinitProperty.kt") public void testLateinitProperty() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesLoadingForSourceTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesLoadingForSourceTestGenerated.java index afa04006887..33c06650314 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesLoadingForSourceTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesLoadingForSourceTestGenerated.java @@ -186,6 +186,12 @@ public class SymbolLightClassesLoadingForSourceTestGenerated extends AbstractSym runTest("compiler/testData/asJava/ultraLightClasses/jvmWildcardAnnotations.kt"); } + @Test + @TestMetadata("LateinitProperties.kt") + public void testLateinitProperties() throws Exception { + runTest("compiler/testData/asJava/ultraLightClasses/LateinitProperties.kt"); + } + @Test @TestMetadata("lateinitProperty.kt") public void testLateinitProperty() throws Exception { diff --git a/compiler/testData/asJava/ultraLightClasses/LateinitProperties.java b/compiler/testData/asJava/ultraLightClasses/LateinitProperties.java new file mode 100644 index 00000000000..0d3618f96ce --- /dev/null +++ b/compiler/testData/asJava/ultraLightClasses/LateinitProperties.java @@ -0,0 +1,90 @@ +public final class KotlinClass /* KotlinClass*/ { + @kotlin.jvm.JvmStatic() + public static Custom companionLateinitStaticVariable; + + @org.jetbrains.annotations.NotNull() + public static final KotlinClass.Companion Companion; + + public Custom classLateinitVariable; + + public static Custom companionLateinitVariable; + + @org.jetbrains.annotations.NotNull() + public final Custom getClassLateinitVariable();// getClassLateinitVariable() + + @org.jetbrains.annotations.NotNull() + public static final Custom getCompanionLateinitStaticVariable();// getCompanionLateinitStaticVariable() + + public KotlinClass();// .ctor() + + public final void setClassLateinitVariable(@org.jetbrains.annotations.NotNull() Custom);// setClassLateinitVariable(Custom) + + public static final void setCompanionLateinitStaticVariable(@org.jetbrains.annotations.NotNull() Custom);// setCompanionLateinitStaticVariable(Custom) + + + class Companion ... + + } + +public static final class Companion /* KotlinClass.Companion*/ { + @org.jetbrains.annotations.NotNull() + public final Custom getCompanionLateinitStaticVariable();// getCompanionLateinitStaticVariable() + + @org.jetbrains.annotations.NotNull() + public final Custom getCompanionLateinitVariable();// getCompanionLateinitVariable() + + private Companion();// .ctor() + + public final void setCompanionLateinitStaticVariable(@org.jetbrains.annotations.NotNull() Custom);// setCompanionLateinitStaticVariable(Custom) + + public final void setCompanionLateinitVariable(@org.jetbrains.annotations.NotNull() Custom);// setCompanionLateinitVariable(Custom) + +} + +public abstract class AbstractKotlinClass /* AbstractKotlinClass*/ { + @kotlin.jvm.JvmStatic() + public static Custom companionLateinitStaticVariable; + + @org.jetbrains.annotations.NotNull() + public static final AbstractKotlinClass.Companion Companion; + + public Custom classLateinitVariable; + + public static Custom companionLateinitVariable; + + @org.jetbrains.annotations.NotNull() + public final Custom getClassLateinitVariable();// getClassLateinitVariable() + + @org.jetbrains.annotations.NotNull() + public static final Custom getCompanionLateinitStaticVariable();// getCompanionLateinitStaticVariable() + + public AbstractKotlinClass();// .ctor() + + public final void setClassLateinitVariable(@org.jetbrains.annotations.NotNull() Custom);// setClassLateinitVariable(Custom) + + public static final void setCompanionLateinitStaticVariable(@org.jetbrains.annotations.NotNull() Custom);// setCompanionLateinitStaticVariable(Custom) + + + class Companion ... + + } + +public static final class Companion /* AbstractKotlinClass.Companion*/ { + @org.jetbrains.annotations.NotNull() + public final Custom getCompanionLateinitStaticVariable();// getCompanionLateinitStaticVariable() + + @org.jetbrains.annotations.NotNull() + public final Custom getCompanionLateinitVariable();// getCompanionLateinitVariable() + + private Companion();// .ctor() + + public final void setCompanionLateinitStaticVariable(@org.jetbrains.annotations.NotNull() Custom);// setCompanionLateinitStaticVariable(Custom) + + public final void setCompanionLateinitVariable(@org.jetbrains.annotations.NotNull() Custom);// setCompanionLateinitVariable(Custom) + +} + +public final class Custom /* Custom*/ { + public Custom();// .ctor() + +} diff --git a/compiler/testData/asJava/ultraLightClasses/LateinitProperties.kt b/compiler/testData/asJava/ultraLightClasses/LateinitProperties.kt new file mode 100644 index 00000000000..4424c6ffebd --- /dev/null +++ b/compiler/testData/asJava/ultraLightClasses/LateinitProperties.kt @@ -0,0 +1,25 @@ +class KotlinClass { + lateinit var classLateinitVariable: Custom + + companion object { + lateinit var companionLateinitVariable: Custom + + @JvmStatic + lateinit var companionLateinitStaticVariable: Custom + } +} + +abstract class AbstractKotlinClass { + lateinit var classLateinitVariable: Custom + + companion object { + lateinit var companionLateinitVariable: Custom + + @JvmStatic + lateinit var companionLateinitStaticVariable: Custom + } +} + +lateinit var topLevelLateinit: Custom + +class Custom \ No newline at end of file diff --git a/compiler/testData/asJava/ultraLightClasses/LateinitProperties.lib.java b/compiler/testData/asJava/ultraLightClasses/LateinitProperties.lib.java new file mode 100644 index 00000000000..9be973fc9c3 --- /dev/null +++ b/compiler/testData/asJava/ultraLightClasses/LateinitProperties.lib.java @@ -0,0 +1,41 @@ +public final class KotlinClass /* KotlinClass*/ { + @org.jetbrains.annotations.NotNull() + public static final KotlinClass.Companion Companion; + + public Custom classLateinitVariable; + + public static Custom companionLateinitStaticVariable; + + public static Custom companionLateinitVariable; + + @org.jetbrains.annotations.NotNull() + public final Custom getClassLateinitVariable();// getClassLateinitVariable() + + @org.jetbrains.annotations.NotNull() + public static final Custom getCompanionLateinitStaticVariable();// getCompanionLateinitStaticVariable() + + public KotlinClass();// .ctor() + + public final void setClassLateinitVariable(@org.jetbrains.annotations.NotNull() Custom);// setClassLateinitVariable(Custom) + + public static final void setCompanionLateinitStaticVariable(@org.jetbrains.annotations.NotNull() Custom);// setCompanionLateinitStaticVariable(Custom) + + + class Companion ... + + } + +public static final class Companion /* KotlinClass.Companion*/ { + @org.jetbrains.annotations.NotNull() + public final Custom getCompanionLateinitStaticVariable();// getCompanionLateinitStaticVariable() + + @org.jetbrains.annotations.NotNull() + public final Custom getCompanionLateinitVariable();// getCompanionLateinitVariable() + + private Companion();// .ctor() + + public final void setCompanionLateinitStaticVariable(@org.jetbrains.annotations.NotNull() Custom);// setCompanionLateinitStaticVariable(Custom) + + public final void setCompanionLateinitVariable(@org.jetbrains.annotations.NotNull() Custom);// setCompanionLateinitVariable(Custom) + +}