FIR LC: populate ctor in anonymous objects
Note that enum entries are modeled as anonymous objects in FIR too.
This commit is contained in:
committed by
Ilya Kirillov
parent
75c76e2b57
commit
e64f7ffb98
+6
-3
@@ -59,8 +59,11 @@ internal class FirLightAnonymousClassForSymbol(
|
|||||||
val result = mutableListOf<KtLightMethod>()
|
val result = mutableListOf<KtLightMethod>()
|
||||||
|
|
||||||
analyzeWithSymbolAsContext(anonymousObjectSymbol) {
|
analyzeWithSymbolAsContext(anonymousObjectSymbol) {
|
||||||
val callableSymbols = anonymousObjectSymbol.getDeclaredMemberScope().getCallableSymbols()
|
val declaredMemberScope = anonymousObjectSymbol.getDeclaredMemberScope()
|
||||||
createMethods(callableSymbols, result)
|
|
||||||
|
createMethods(declaredMemberScope.getCallableSymbols(), result)
|
||||||
|
|
||||||
|
createConstructors(declaredMemberScope.getConstructors(), result)
|
||||||
}
|
}
|
||||||
|
|
||||||
result
|
result
|
||||||
@@ -151,4 +154,4 @@ internal class FirLightAnonymousClassForSymbol(
|
|||||||
|
|
||||||
override fun toString() =
|
override fun toString() =
|
||||||
"${this::class.java.simpleName}:${kotlinOrigin?.getDebugText()}"
|
"${this::class.java.simpleName}:${kotlinOrigin?.getDebugText()}"
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-2
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
|||||||
import org.jetbrains.kotlin.idea.asJava.*
|
import org.jetbrains.kotlin.idea.asJava.*
|
||||||
import org.jetbrains.kotlin.idea.asJava.FirLightClassModifierList
|
import org.jetbrains.kotlin.idea.asJava.FirLightClassModifierList
|
||||||
import org.jetbrains.kotlin.idea.asJava.FirLightPsiJavaCodeReferenceElementWithNoReference
|
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.asJava.classes.createMethods
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext
|
import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.isValid
|
import org.jetbrains.kotlin.idea.frontend.api.isValid
|
||||||
@@ -127,8 +128,11 @@ internal class FirLightClassForEnumEntry(
|
|||||||
val result = mutableListOf<KtLightMethod>()
|
val result = mutableListOf<KtLightMethod>()
|
||||||
|
|
||||||
analyzeWithSymbolAsContext(enumEntrySymbol) {
|
analyzeWithSymbolAsContext(enumEntrySymbol) {
|
||||||
val callableSymbols = enumEntrySymbol.getDeclaredMemberScope().getCallableSymbols()
|
val declaredMemberScope = enumEntrySymbol.getDeclaredMemberScope()
|
||||||
createMethods(callableSymbols, result)
|
|
||||||
|
createMethods(declaredMemberScope.getCallableSymbols(), result)
|
||||||
|
|
||||||
|
createConstructors(declaredMemberScope.getConstructors(), result)
|
||||||
}
|
}
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|||||||
+1
-1
@@ -119,7 +119,7 @@ private fun lightClassForEnumEntry(ktEnumEntry: KtEnumEntry): KtLightClass? {
|
|||||||
return (targetField as? FirLightFieldForEnumEntry)?.initializingClass as? KtLightClass
|
return (targetField as? FirLightFieldForEnumEntry)?.initializingClass as? KtLightClass
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun FirLightClassForSymbol.createConstructors(
|
internal fun FirLightClassBase.createConstructors(
|
||||||
declarations: Sequence<KtConstructorSymbol>,
|
declarations: Sequence<KtConstructorSymbol>,
|
||||||
result: MutableList<KtLightMethod>
|
result: MutableList<KtLightMethod>
|
||||||
) {
|
) {
|
||||||
|
|||||||
Reference in New Issue
Block a user