From 4711577b17ec016c626eb4454d17e3298bef5584 Mon Sep 17 00:00:00 2001 From: Igor Yakovlev Date: Mon, 19 Jul 2021 17:56:33 +0200 Subject: [PATCH] [FIR IDE] Add containing file workaround for FirLightAnonymousClassForSymbol --- .../asJava/classes/FirLightAnonymousClassForSymbol.kt | 11 +++++++++-- .../classes/FirLightClassForClassOrObjectSymbol.kt | 6 ------ 2 files changed, 9 insertions(+), 8 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 a5445aba0bc..7122346ea13 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 @@ -15,7 +15,7 @@ import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.KtLightField import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier import org.jetbrains.kotlin.asJava.elements.KtLightMethod -import org.jetbrains.kotlin.idea.asJava.FirLightClassBase +import org.jetbrains.kotlin.idea.asJava.* import org.jetbrains.kotlin.idea.asJava.FirLightClassForSymbol import org.jetbrains.kotlin.idea.asJava.FirLightField import org.jetbrains.kotlin.idea.asJava.hasJvmFieldAnnotation @@ -54,7 +54,6 @@ internal class FirLightAnonymousClassForSymbol( override fun getOwnFields(): List = _ownFields override fun getOwnMethods(): List = _ownMethods - private val _ownMethods: List by lazyPub { val result = mutableListOf() @@ -131,6 +130,14 @@ internal class FirLightAnonymousClassForSymbol( override fun isEquivalentTo(another: PsiElement?): Boolean = equals(another) //TODO + //TODO Make containing file not null for symbol without psi + private val _containingFile: PsiFile? by lazyPub { + val kotlinOrigin = kotlinOrigin ?: return@lazyPub null + FirFakeFileImpl(kotlinOrigin, this) + } + + override fun getContainingFile(): PsiFile? = _containingFile + override fun equals(other: Any?): Boolean = this === other || (other is FirLightAnonymousClassForSymbol && anonymousObjectSymbol == other.anonymousObjectSymbol) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForClassOrObjectSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForClassOrObjectSymbol.kt index 351c71b7949..8d9935e9dc1 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForClassOrObjectSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForClassOrObjectSymbol.kt @@ -161,15 +161,9 @@ internal abstract class FirLightClassForClassOrObjectSymbol( override fun getSuperTypes(): Array = PsiClassImplUtil.getSuperTypes(this) override fun getContainingClass(): PsiClass? { - val containingBody = kotlinOrigin?.parent as? KtClassBody val containingClass = containingBody?.parent as? KtClassOrObject containingClass?.let { return getOrCreateFirLightClass(it) } - - val containingBlock = kotlinOrigin?.parent as? KtBlockExpression -// val containingScript = containingBlock?.parent as? KtScript -// containingScript?.let { return KtLightClassForScript.create(it) } - return null }