FIR LC: populate inner classes in interfaces
This commit is contained in:
committed by
Ilya Kirillov
parent
e525e25518
commit
3ccbd25856
+7
-2
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.asJava.elements.KtLightField
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.checkIsInheritor
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.createInnerClasses
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.getOrCreateFirLightClass
|
||||
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
|
||||
import org.jetbrains.kotlin.psi.KtClassBody
|
||||
@@ -77,7 +78,11 @@ internal abstract class FirLightClassForClassOrObjectSymbol(
|
||||
override fun getTypeParameters(): Array<PsiTypeParameter> =
|
||||
_typeParameterList?.typeParameters ?: PsiTypeParameter.EMPTY_ARRAY
|
||||
|
||||
abstract override fun getOwnInnerClasses(): List<PsiClass>
|
||||
private val _ownInnerClasses: List<FirLightClassBase> by lazyPub {
|
||||
classOrObjectSymbol.createInnerClasses(manager)
|
||||
}
|
||||
|
||||
override fun getOwnInnerClasses(): List<PsiClass> = _ownInnerClasses
|
||||
|
||||
override fun getTextOffset(): Int = kotlinOrigin?.textOffset ?: 0
|
||||
override fun getStartOffsetInParent(): Int = kotlinOrigin?.startOffsetInParent ?: 0
|
||||
@@ -176,4 +181,4 @@ internal abstract class FirLightClassForClassOrObjectSymbol(
|
||||
baseClass?.let { InheritanceImplUtil.isInheritorDeep(this, it, classToByPass) } ?: false
|
||||
|
||||
abstract override fun copy(): FirLightClassForClassOrObjectSymbol
|
||||
}
|
||||
}
|
||||
|
||||
-6
@@ -85,12 +85,6 @@ internal open class FirLightClassForSymbol(
|
||||
override fun getExtendsList(): PsiReferenceList? = _extendsList
|
||||
override fun getImplementsList(): PsiReferenceList? = _implementsList
|
||||
|
||||
private val _ownInnerClasses: List<FirLightClassBase> by lazyPub {
|
||||
classOrObjectSymbol.createInnerClasses(manager)
|
||||
}
|
||||
|
||||
override fun getOwnInnerClasses(): List<PsiClass> = _ownInnerClasses
|
||||
|
||||
private val _extendsList by lazyPub { createInheritanceList(forExtendsList = true, classOrObjectSymbol.superTypes) }
|
||||
private val _implementsList by lazyPub { createInheritanceList(forExtendsList = false, classOrObjectSymbol.superTypes) }
|
||||
|
||||
|
||||
+1
-3
@@ -45,11 +45,9 @@ internal abstract class FirLightInterfaceOrAnnotationClassSymbol(
|
||||
|
||||
override fun getImplementsList(): PsiReferenceList? = null
|
||||
|
||||
override fun getOwnInnerClasses(): List<PsiClass> = emptyList()
|
||||
|
||||
override fun isInterface(): Boolean = true
|
||||
|
||||
override fun isEnum(): Boolean = false
|
||||
|
||||
override fun isValid(): Boolean = super.isValid() && classOrObjectSymbol.isValid()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user