From e2901c81acab80174a18808ac469f986ecc8f8f2 Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Fri, 18 Nov 2022 00:28:43 -0800 Subject: [PATCH] SLC: populate fields from companion in annotation --- .../symbol/classes/SymbolLightAnnotationClass.kt | 9 --------- .../symbol/classes/SymbolLightInterfaceClass.kt | 10 ---------- .../classes/SymbolLightInterfaceOrAnnotationClass.kt | 10 ++++++++++ .../asJava/ultraLightClasses/annotations.fir.java | 3 +++ 4 files changed, 13 insertions(+), 19 deletions(-) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightAnnotationClass.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightAnnotationClass.kt index aba9ba518a5..7e139d550fe 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightAnnotationClass.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightAnnotationClass.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol import org.jetbrains.kotlin.analysis.api.symbols.markers.isPrivateOrPrivateToThis import org.jetbrains.kotlin.asJava.classes.lazyPub -import org.jetbrains.kotlin.asJava.elements.KtLightField import org.jetbrains.kotlin.asJava.elements.KtLightMethod context(KtAnalysisSession) @@ -31,14 +30,6 @@ internal class SymbolLightAnnotationClass( override fun isAnnotationType(): Boolean = true - private val _ownFields: List by lazyPub { - mutableListOf().also { - addCompanionObjectFieldIfNeeded(it) - } - } - - override fun getOwnFields(): List = _ownFields - private val _ownMethods: List by lazyPub { val result = mutableListOf() val visibleDeclarations = classOrObjectSymbol.getDeclaredMemberScope().getCallableSymbols() diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightInterfaceClass.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightInterfaceClass.kt index 837210c81f2..8951f49c74e 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightInterfaceClass.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightInterfaceClass.kt @@ -15,7 +15,6 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol import org.jetbrains.kotlin.analysis.api.symbols.markers.isPrivateOrPrivateToThis import org.jetbrains.kotlin.asJava.classes.lazyPub -import org.jetbrains.kotlin.asJava.elements.KtLightField import org.jetbrains.kotlin.asJava.elements.KtLightMethod context(KtAnalysisSession) @@ -28,15 +27,6 @@ internal open class SymbolLightInterfaceClass( require(classOrObjectSymbol.classKind == KtClassKind.INTERFACE) } - private val _ownFields: List by lazyPub { - mutableListOf().also { - addCompanionObjectFieldIfNeeded(it) - addFieldsFromCompanionIfNeeded(it) - } - } - - override fun getOwnFields(): List = _ownFields - private val _ownMethods: List by lazyPub { val result = mutableListOf() diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightInterfaceOrAnnotationClass.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightInterfaceOrAnnotationClass.kt index 68cb26d586a..696d404ba8b 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightInterfaceOrAnnotationClass.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightInterfaceOrAnnotationClass.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.analysis.api.lifetime.isValid import org.jetbrains.kotlin.analysis.api.symbols.KtClassKind import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol import org.jetbrains.kotlin.asJava.classes.lazyPub +import org.jetbrains.kotlin.asJava.elements.KtLightField import org.jetbrains.kotlin.light.classes.symbol.NullabilityType import org.jetbrains.kotlin.light.classes.symbol.annotations.computeAnnotations import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList @@ -57,6 +58,15 @@ internal abstract class SymbolLightInterfaceOrAnnotationClass( override fun getModifierList(): PsiModifierList? = _modifierList + private val _ownFields: List by lazyPub { + mutableListOf().also { + addCompanionObjectFieldIfNeeded(it) + addFieldsFromCompanionIfNeeded(it) + } + } + + override fun getOwnFields(): List = _ownFields + override fun getImplementsList(): PsiReferenceList? = null override fun isInterface(): Boolean = true diff --git a/compiler/testData/asJava/ultraLightClasses/annotations.fir.java b/compiler/testData/asJava/ultraLightClasses/annotations.fir.java index f978fee5d78..d5539cf116e 100644 --- a/compiler/testData/asJava/ultraLightClasses/annotations.fir.java +++ b/compiler/testData/asJava/ultraLightClasses/annotations.fir.java @@ -25,6 +25,9 @@ public abstract @interface Anno6 /* Anno6*/ { @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) public abstract @interface AnnoWithCompanion /* AnnoWithCompanion*/ { + @kotlin.jvm.JvmField() + public static final int x = 42 /* initializer type: int */; + @org.jetbrains.annotations.NotNull() public static final AnnoWithCompanion.Companion Companion;