[Symbol LC] add parents for the local classes
This commit is contained in:
+4
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtAnonymousObjectSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtPropertySymbol
|
||||
import org.jetbrains.kotlin.asJava.classes.getParentForLocalDeclaration
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.*
|
||||
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
@@ -89,6 +90,9 @@ internal class FirLightAnonymousClassForSymbol(
|
||||
|
||||
override fun getOwnInnerClasses(): List<PsiClass> = _ownInnerClasses
|
||||
|
||||
override fun getParent(): PsiElement? =
|
||||
kotlinOrigin?.let(::getParentForLocalDeclaration)
|
||||
|
||||
override fun getScope(): PsiElement? = parent
|
||||
override fun getInterfaces(): Array<PsiClass> = PsiClassImplUtil.getInterfaces(this)
|
||||
override fun getSuperClass(): PsiClass? = PsiClassImplUtil.getSuperClass(this)
|
||||
|
||||
+9
-1
@@ -15,7 +15,9 @@ import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.*
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithKind
|
||||
import org.jetbrains.kotlin.asJava.classes.getOutermostClassOrObject
|
||||
import org.jetbrains.kotlin.asJava.classes.getParentForLocalDeclaration
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
@@ -31,6 +33,7 @@ import org.jetbrains.kotlin.psi.stubs.KotlinClassOrObjectStub
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.applyIf
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.ifFalse
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.ifTrue
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal abstract class FirLightClassForClassOrObjectSymbol(
|
||||
@@ -204,7 +207,12 @@ internal abstract class FirLightClassForClassOrObjectSymbol(
|
||||
return null
|
||||
}
|
||||
|
||||
override fun getParent(): PsiElement? = containingClass ?: containingFile
|
||||
override fun getParent(): PsiElement? {
|
||||
if (classOrObjectSymbol.safeAs<KtSymbolWithKind>()?.symbolKind == KtSymbolKind.LOCAL) {
|
||||
return kotlinOrigin?.let(::getParentForLocalDeclaration)
|
||||
}
|
||||
return containingClass ?: containingFile
|
||||
}
|
||||
|
||||
override fun getScope(): PsiElement? = parent
|
||||
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ open class KtUltraLightClassForLocalDeclaration(
|
||||
override fun getParent() = _parent
|
||||
}
|
||||
|
||||
private fun getParentForLocalDeclaration(classOrObject: KtClassOrObject): PsiElement? {
|
||||
fun getParentForLocalDeclaration(classOrObject: KtClassOrObject): PsiElement? {
|
||||
fun getParentByPsiMethod(method: PsiMethod?, name: String?, forceMethodWrapping: Boolean): PsiElement? {
|
||||
if (method == null || name == null) return null
|
||||
|
||||
|
||||
Reference in New Issue
Block a user