[FIR IDE] Add containing file workaround for FirLightAnonymousClassForSymbol
This commit is contained in:
+9
-2
@@ -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<KtLightField> = _ownFields
|
||||
override fun getOwnMethods(): List<PsiMethod> = _ownMethods
|
||||
|
||||
|
||||
private val _ownMethods: List<KtLightMethod> by lazyPub {
|
||||
|
||||
val result = mutableListOf<KtLightMethod>()
|
||||
@@ -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)
|
||||
|
||||
-6
@@ -161,15 +161,9 @@ internal abstract class FirLightClassForClassOrObjectSymbol(
|
||||
override fun getSuperTypes(): Array<PsiClassType> = 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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user