From e64f7ffb981ac660e5732b3d376a77f996b41fb3 Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Thu, 5 Aug 2021 23:42:52 -0700 Subject: [PATCH] FIR LC: populate ctor in anonymous objects Note that enum entries are modeled as anonymous objects in FIR too. --- .../asJava/classes/FirLightAnonymousClassForSymbol.kt | 9 ++++++--- .../idea/asJava/classes/FirLightClassForEnumEntry.kt | 8 ++++++-- .../kotlin/idea/asJava/classes/firLightClassUtils.kt | 2 +- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightAnonymousClassForSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightAnonymousClassForSymbol.kt index 7122346ea13..39ab301d69e 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightAnonymousClassForSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightAnonymousClassForSymbol.kt @@ -59,8 +59,11 @@ internal class FirLightAnonymousClassForSymbol( val result = mutableListOf() analyzeWithSymbolAsContext(anonymousObjectSymbol) { - val callableSymbols = anonymousObjectSymbol.getDeclaredMemberScope().getCallableSymbols() - createMethods(callableSymbols, result) + val declaredMemberScope = anonymousObjectSymbol.getDeclaredMemberScope() + + createMethods(declaredMemberScope.getCallableSymbols(), result) + + createConstructors(declaredMemberScope.getConstructors(), result) } result @@ -151,4 +154,4 @@ internal class FirLightAnonymousClassForSymbol( override fun toString() = "${this::class.java.simpleName}:${kotlinOrigin?.getDebugText()}" -} \ No newline at end of file +} diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForEnumEntry.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForEnumEntry.kt index a0681cf643b..53be1051f40 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForEnumEntry.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForEnumEntry.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.idea.asJava.* import org.jetbrains.kotlin.idea.asJava.FirLightClassModifierList import org.jetbrains.kotlin.idea.asJava.FirLightPsiJavaCodeReferenceElementWithNoReference +import org.jetbrains.kotlin.idea.asJava.classes.createConstructors import org.jetbrains.kotlin.idea.asJava.classes.createMethods import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.isValid @@ -127,8 +128,11 @@ internal class FirLightClassForEnumEntry( val result = mutableListOf() analyzeWithSymbolAsContext(enumEntrySymbol) { - val callableSymbols = enumEntrySymbol.getDeclaredMemberScope().getCallableSymbols() - createMethods(callableSymbols, result) + val declaredMemberScope = enumEntrySymbol.getDeclaredMemberScope() + + createMethods(declaredMemberScope.getCallableSymbols(), result) + + createConstructors(declaredMemberScope.getConstructors(), result) } return result diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/firLightClassUtils.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/firLightClassUtils.kt index 0151ccdb48a..468058d4f3a 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/firLightClassUtils.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/firLightClassUtils.kt @@ -119,7 +119,7 @@ private fun lightClassForEnumEntry(ktEnumEntry: KtEnumEntry): KtLightClass? { return (targetField as? FirLightFieldForEnumEntry)?.initializingClass as? KtLightClass } -internal fun FirLightClassForSymbol.createConstructors( +internal fun FirLightClassBase.createConstructors( declarations: Sequence, result: MutableList ) {