SLC: containingFile for all SLC classes, including enum entry
This commit is contained in:
committed by
Ilya Kirillov
parent
217829d1c6
commit
61d339e8f2
-9
@@ -20,7 +20,6 @@ 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.light.classes.symbol.SymbolFakeFile
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasJvmFieldAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightField
|
||||
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
|
||||
@@ -129,14 +128,6 @@ internal class SymbolLightAnonymousClass(
|
||||
|
||||
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
|
||||
SymbolFakeFile(kotlinOrigin, this)
|
||||
}
|
||||
|
||||
override fun getContainingFile(): PsiFile? = _containingFile
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
this === other ||
|
||||
(other is SymbolLightAnonymousClass && anonymousObjectSymbol == other.anonymousObjectSymbol)
|
||||
|
||||
+13
@@ -23,7 +23,10 @@ import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.lifetime.allowAnalysisOnEdt
|
||||
import org.jetbrains.kotlin.analysis.providers.createProjectWideOutOfBlockModificationTracker
|
||||
import org.jetbrains.kotlin.asJava.classes.*
|
||||
import org.jetbrains.kotlin.asJava.toLightClass
|
||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolFakeFile
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.ifFalse
|
||||
import javax.swing.Icon
|
||||
|
||||
context(KtAnalysisSession)
|
||||
@@ -108,6 +111,16 @@ abstract class SymbolLightClassBase protected constructor(
|
||||
}
|
||||
}
|
||||
|
||||
protected open val isTopLevel: Boolean = false
|
||||
|
||||
private val _containingFile: PsiFile? by lazyPub {
|
||||
val kotlinOrigin = kotlinOrigin ?: return@lazyPub null
|
||||
val containingClass = isTopLevel.ifFalse { getOutermostClassOrObject(kotlinOrigin).toLightClass() } ?: this
|
||||
SymbolFakeFile(kotlinOrigin, containingClass)
|
||||
}
|
||||
|
||||
override fun getContainingFile(): PsiFile? = _containingFile
|
||||
|
||||
private fun PsiClass.hasSuper(
|
||||
baseClass: PsiClass,
|
||||
checkDeep: Boolean,
|
||||
|
||||
+1
-15
@@ -16,13 +16,11 @@ 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
|
||||
import org.jetbrains.kotlin.asJava.toLightClass
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolFakeFile
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolLightIdentifier
|
||||
import org.jetbrains.kotlin.light.classes.symbol.allowLightClassesOnEdt
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasDeprecatedAnnotation
|
||||
@@ -38,7 +36,6 @@ import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.debugText.getDebugText
|
||||
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
|
||||
|
||||
@@ -49,7 +46,7 @@ internal abstract class SymbolLightClassForClassOrObject(
|
||||
) : SymbolLightClassBase(manager),
|
||||
StubBasedPsiElement<KotlinClassOrObjectStub<out KtClassOrObject>> {
|
||||
|
||||
protected val isTopLevel: Boolean = classOrObjectSymbol.symbolKind == KtSymbolKind.TOP_LEVEL
|
||||
override val isTopLevel: Boolean = classOrObjectSymbol.symbolKind == KtSymbolKind.TOP_LEVEL
|
||||
|
||||
internal val isCompanionObject: Boolean
|
||||
get() = classOrObjectSymbol.classKind == KtClassKind.COMPANION_OBJECT
|
||||
@@ -157,17 +154,6 @@ internal abstract class SymbolLightClassForClassOrObject(
|
||||
private val KtPropertySymbol.isConst: Boolean
|
||||
get() = (this as? KtKotlinPropertySymbol)?.isConst == true
|
||||
|
||||
private val _containingFile: PsiFile? by lazyPub {
|
||||
|
||||
val kotlinOrigin = kotlinOrigin ?: return@lazyPub null
|
||||
|
||||
val containingClass = isTopLevel.ifFalse { getOutermostClassOrObject(kotlinOrigin).toLightClass() } ?: this
|
||||
|
||||
SymbolFakeFile(kotlinOrigin, containingClass)
|
||||
}
|
||||
|
||||
override fun getContainingFile(): PsiFile? = _containingFile
|
||||
|
||||
override fun getNavigationElement(): PsiElement = kotlinOrigin ?: this
|
||||
|
||||
override fun isEquivalentTo(another: PsiElement?): Boolean =
|
||||
|
||||
Reference in New Issue
Block a user