SLC: populate fields from companion in annotation

This commit is contained in:
Jinseong Jeon
2022-11-18 00:28:43 -08:00
committed by Ilya Kirillov
parent f02fd2e04e
commit e2901c81ac
4 changed files with 13 additions and 19 deletions
@@ -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<KtLightField> by lazyPub {
mutableListOf<KtLightField>().also {
addCompanionObjectFieldIfNeeded(it)
}
}
override fun getOwnFields(): List<KtLightField> = _ownFields
private val _ownMethods: List<KtLightMethod> by lazyPub {
val result = mutableListOf<KtLightMethod>()
val visibleDeclarations = classOrObjectSymbol.getDeclaredMemberScope().getCallableSymbols()
@@ -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<KtLightField> by lazyPub {
mutableListOf<KtLightField>().also {
addCompanionObjectFieldIfNeeded(it)
addFieldsFromCompanionIfNeeded(it)
}
}
override fun getOwnFields(): List<KtLightField> = _ownFields
private val _ownMethods: List<KtLightMethod> by lazyPub {
val result = mutableListOf<KtLightMethod>()
@@ -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<KtLightField> by lazyPub {
mutableListOf<KtLightField>().also {
addCompanionObjectFieldIfNeeded(it)
addFieldsFromCompanionIfNeeded(it)
}
}
override fun getOwnFields(): List<KtLightField> = _ownFields
override fun getImplementsList(): PsiReferenceList? = null
override fun isInterface(): Boolean = true
@@ -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;