FIR IDE: make KtAnonymousObject symbol to extend KtClassObjectSymbol
This commit is contained in:
@@ -28,7 +28,7 @@ internal object KotlinFirIconProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (symbol is KtClassOrObjectSymbol) {
|
if (symbol is KtClassOrObjectSymbol) {
|
||||||
val isAbstract = symbol.modality == KtCommonSymbolModality.ABSTRACT
|
val isAbstract = (symbol as? KtNamedClassOrObjectSymbol)?.modality == KtCommonSymbolModality.ABSTRACT
|
||||||
|
|
||||||
return when (symbol.classKind) {
|
return when (symbol.classKind) {
|
||||||
KtClassKind.CLASS -> if (isAbstract) KotlinIcons.ABSTRACT_CLASS else KotlinIcons.CLASS
|
KtClassKind.CLASS -> if (isAbstract) KotlinIcons.ABSTRACT_CLASS else KotlinIcons.CLASS
|
||||||
@@ -36,6 +36,7 @@ internal object KotlinFirIconProvider {
|
|||||||
KtClassKind.ANNOTATION_CLASS -> KotlinIcons.ANNOTATION
|
KtClassKind.ANNOTATION_CLASS -> KotlinIcons.ANNOTATION
|
||||||
KtClassKind.OBJECT, KtClassKind.COMPANION_OBJECT -> KotlinIcons.OBJECT
|
KtClassKind.OBJECT, KtClassKind.COMPANION_OBJECT -> KotlinIcons.OBJECT
|
||||||
KtClassKind.INTERFACE -> KotlinIcons.INTERFACE
|
KtClassKind.INTERFACE -> KotlinIcons.INTERFACE
|
||||||
|
KtClassKind.ANONYMOUS_OBJECT -> KotlinIcons.OBJECT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-1
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.lexer.KtTokens
|
|||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.name.SpecialNames
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi.KtTypeArgumentList
|
import org.jetbrains.kotlin.psi.KtTypeArgumentList
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||||
@@ -94,7 +95,8 @@ private data class VariableLookupObject(
|
|||||||
|
|
||||||
private class ClassLookupElementFactory {
|
private class ClassLookupElementFactory {
|
||||||
fun createLookup(symbol: KtClassLikeSymbol): LookupElementBuilder {
|
fun createLookup(symbol: KtClassLikeSymbol): LookupElementBuilder {
|
||||||
return LookupElementBuilder.create(ClassifierLookupObject(symbol.name, symbol.classIdIfNonLocal), symbol.name.asString())
|
val name = symbol.nameOrAnonymous
|
||||||
|
return LookupElementBuilder.create(ClassifierLookupObject(name, symbol.classIdIfNonLocal), name.asString())
|
||||||
.withInsertHandler(ClassifierInsertionHandler)
|
.withInsertHandler(ClassifierInsertionHandler)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtNamedSymbol
|
|||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithKind
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithKind
|
||||||
import org.jetbrains.kotlin.idea.refactoring.CHECK_SUPER_METHODS_YES_NO_DIALOG
|
import org.jetbrains.kotlin.idea.refactoring.CHECK_SUPER_METHODS_YES_NO_DIALOG
|
||||||
import org.jetbrains.kotlin.idea.refactoring.formatPsiClass
|
import org.jetbrains.kotlin.idea.refactoring.formatPsiClass
|
||||||
|
import org.jetbrains.kotlin.name.SpecialNames
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext
|
import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext
|
||||||
|
|
||||||
class KotlinFindUsagesSupportFirImpl : KotlinFindUsagesSupport {
|
class KotlinFindUsagesSupportFirImpl : KotlinFindUsagesSupport {
|
||||||
@@ -81,7 +82,7 @@ class KotlinFindUsagesSupportFirImpl : KotlinFindUsagesSupport {
|
|||||||
val filteredDeclarations =
|
val filteredDeclarations =
|
||||||
if (ignore != null) renderToPsi.filter { ignore.contains(it.first) } else renderToPsi
|
if (ignore != null) renderToPsi.filter { ignore.contains(it.first) } else renderToPsi
|
||||||
|
|
||||||
val renderedClass = containingClass.name.asString() //TODO render class
|
val renderedClass = containingClass.name?.asString() ?: SpecialNames.ANONYMOUS //TODO render class
|
||||||
|
|
||||||
AnalyzedModel(renderedClass, filteredDeclarations.toMap())
|
AnalyzedModel(renderedClass, filteredDeclarations.toMap())
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.idea.frontend.api.components
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.ValidityTokenOwner
|
import org.jetbrains.kotlin.idea.frontend.api.ValidityTokenOwner
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
|
||||||
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtNamedClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
|
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
|
||||||
|
|
||||||
abstract class KtTypeProvider : KtAnalysisSessionComponent() {
|
abstract class KtTypeProvider : KtAnalysisSessionComponent() {
|
||||||
@@ -14,7 +15,7 @@ abstract class KtTypeProvider : KtAnalysisSessionComponent() {
|
|||||||
|
|
||||||
abstract fun approximateToSuperPublicDenotableType(type: KtType): KtType?
|
abstract fun approximateToSuperPublicDenotableType(type: KtType): KtType?
|
||||||
|
|
||||||
abstract fun buildSelfClassType(symbol: KtClassOrObjectSymbol): KtType
|
abstract fun buildSelfClassType(symbol: KtNamedClassOrObjectSymbol): KtType
|
||||||
}
|
}
|
||||||
|
|
||||||
interface KtTypeProviderMixIn : KtAnalysisSessionMixIn {
|
interface KtTypeProviderMixIn : KtAnalysisSessionMixIn {
|
||||||
@@ -30,7 +31,7 @@ interface KtTypeProviderMixIn : KtAnalysisSessionMixIn {
|
|||||||
fun KtType.approximateToSuperPublicDenotable(): KtType? =
|
fun KtType.approximateToSuperPublicDenotable(): KtType? =
|
||||||
analysisSession.typeProvider.approximateToSuperPublicDenotableType(this)
|
analysisSession.typeProvider.approximateToSuperPublicDenotableType(this)
|
||||||
|
|
||||||
fun KtClassOrObjectSymbol.buildSelfClassType(): KtType =
|
fun KtNamedClassOrObjectSymbol.buildSelfClassType(): KtType =
|
||||||
analysisSession.typeProvider.buildSelfClassType(this)
|
analysisSession.typeProvider.buildSelfClassType(this)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
-19
@@ -1,19 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.idea.frontend.api.symbols
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtAnnotatedSymbol
|
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithMembers
|
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithKind
|
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtTypeAndAnnotations
|
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtSymbolPointer
|
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
|
|
||||||
|
|
||||||
abstract class KtAnonymousObjectSymbol : KtSymbolWithKind, KtAnnotatedSymbol, KtSymbolWithMembers {
|
|
||||||
abstract val superTypes: List<KtTypeAndAnnotations>
|
|
||||||
|
|
||||||
abstract override fun createPointer(): KtSymbolPointer<KtAnonymousObjectSymbol>
|
|
||||||
}
|
|
||||||
+32
-12
@@ -9,9 +9,14 @@ import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.*
|
|||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtSymbolPointer
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtSymbolPointer
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
|
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.name.SpecialNames
|
||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
|
|
||||||
sealed class KtClassifierSymbol : KtSymbol, KtNamedSymbol
|
sealed class KtClassifierSymbol : KtSymbol, KtPossiblyNamedSymbol
|
||||||
|
|
||||||
|
val KtClassifierSymbol.nameOrAnonymous: Name
|
||||||
|
get() = name ?: SpecialNames.ANONYMOUS_FUNCTION
|
||||||
|
|
||||||
abstract class KtTypeParameterSymbol : KtClassifierSymbol(), KtNamedSymbol {
|
abstract class KtTypeParameterSymbol : KtClassifierSymbol(), KtNamedSymbol {
|
||||||
abstract override fun createPointer(): KtSymbolPointer<KtTypeParameterSymbol>
|
abstract override fun createPointer(): KtSymbolPointer<KtTypeParameterSymbol>
|
||||||
@@ -21,13 +26,13 @@ abstract class KtTypeParameterSymbol : KtClassifierSymbol(), KtNamedSymbol {
|
|||||||
abstract val isReified: Boolean
|
abstract val isReified: Boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class KtClassLikeSymbol : KtClassifierSymbol(), KtNamedSymbol, KtSymbolWithKind {
|
sealed class KtClassLikeSymbol : KtClassifierSymbol(), KtSymbolWithKind {
|
||||||
abstract val classIdIfNonLocal: ClassId?
|
abstract val classIdIfNonLocal: ClassId?
|
||||||
|
|
||||||
abstract override fun createPointer(): KtSymbolPointer<KtClassLikeSymbol>
|
abstract override fun createPointer(): KtSymbolPointer<KtClassLikeSymbol>
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class KtTypeAliasSymbol : KtClassLikeSymbol() {
|
abstract class KtTypeAliasSymbol : KtClassLikeSymbol(), KtNamedSymbol {
|
||||||
abstract override val classIdIfNonLocal: ClassId
|
abstract override val classIdIfNonLocal: ClassId
|
||||||
|
|
||||||
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.TOP_LEVEL
|
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.TOP_LEVEL
|
||||||
@@ -35,13 +40,30 @@ abstract class KtTypeAliasSymbol : KtClassLikeSymbol() {
|
|||||||
abstract override fun createPointer(): KtSymbolPointer<KtTypeAliasSymbol>
|
abstract override fun createPointer(): KtSymbolPointer<KtTypeAliasSymbol>
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class KtClassOrObjectSymbol : KtClassLikeSymbol(),
|
sealed class KtClassOrObjectSymbol : KtClassLikeSymbol(),
|
||||||
|
KtAnnotatedSymbol,
|
||||||
|
KtSymbolWithMembers {
|
||||||
|
|
||||||
|
abstract val classKind: KtClassKind
|
||||||
|
abstract val superTypes: List<KtTypeAndAnnotations>
|
||||||
|
|
||||||
|
abstract override fun createPointer(): KtSymbolPointer<KtClassOrObjectSymbol>
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class KtAnonymousObjectSymbol : KtClassOrObjectSymbol() {
|
||||||
|
final override val classKind: KtClassKind get() = KtClassKind.ANONYMOUS_OBJECT
|
||||||
|
final override val classIdIfNonLocal: ClassId? get() = null
|
||||||
|
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.LOCAL
|
||||||
|
final override val name: Name? get() = null
|
||||||
|
|
||||||
|
abstract override fun createPointer(): KtSymbolPointer<KtAnonymousObjectSymbol>
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class KtNamedClassOrObjectSymbol : KtClassOrObjectSymbol(),
|
||||||
KtSymbolWithTypeParameters,
|
KtSymbolWithTypeParameters,
|
||||||
KtSymbolWithModality<KtSymbolModality>,
|
KtSymbolWithModality<KtSymbolModality>,
|
||||||
KtSymbolWithVisibility,
|
KtSymbolWithVisibility,
|
||||||
KtAnnotatedSymbol,
|
KtNamedSymbol {
|
||||||
KtSymbolWithMembers {
|
|
||||||
abstract val classKind: KtClassKind
|
|
||||||
|
|
||||||
abstract val isInner: Boolean
|
abstract val isInner: Boolean
|
||||||
abstract val isData: Boolean
|
abstract val isData: Boolean
|
||||||
@@ -50,13 +72,11 @@ abstract class KtClassOrObjectSymbol : KtClassLikeSymbol(),
|
|||||||
|
|
||||||
abstract val isExternal: Boolean
|
abstract val isExternal: Boolean
|
||||||
|
|
||||||
abstract val companionObject: KtClassOrObjectSymbol?
|
abstract val companionObject: KtNamedClassOrObjectSymbol?
|
||||||
|
|
||||||
abstract val superTypes: List<KtTypeAndAnnotations>
|
abstract override fun createPointer(): KtSymbolPointer<KtNamedClassOrObjectSymbol>
|
||||||
|
|
||||||
abstract override fun createPointer(): KtSymbolPointer<KtClassOrObjectSymbol>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class KtClassKind {
|
enum class KtClassKind {
|
||||||
CLASS, ENUM_CLASS, ENUM_ENTRY, ANNOTATION_CLASS, OBJECT, COMPANION_OBJECT, INTERFACE
|
CLASS, ENUM_CLASS, ENUM_ENTRY, ANNOTATION_CLASS, OBJECT, COMPANION_OBJECT, INTERFACE, ANONYMOUS_OBJECT
|
||||||
}
|
}
|
||||||
|
|||||||
+4
@@ -42,6 +42,7 @@ abstract class KtSymbolProvider : KtAnalysisSessionComponent() {
|
|||||||
abstract fun getVariableSymbol(psi: KtProperty): KtVariableSymbol
|
abstract fun getVariableSymbol(psi: KtProperty): KtVariableSymbol
|
||||||
abstract fun getAnonymousObjectSymbol(psi: KtObjectLiteralExpression): KtAnonymousObjectSymbol
|
abstract fun getAnonymousObjectSymbol(psi: KtObjectLiteralExpression): KtAnonymousObjectSymbol
|
||||||
abstract fun getClassOrObjectSymbol(psi: KtClassOrObject): KtClassOrObjectSymbol
|
abstract fun getClassOrObjectSymbol(psi: KtClassOrObject): KtClassOrObjectSymbol
|
||||||
|
abstract fun getNamedClassOrObjectSymbol(psi: KtClassOrObject): KtNamedClassOrObjectSymbol
|
||||||
abstract fun getPropertyAccessorSymbol(psi: KtPropertyAccessor): KtPropertyAccessorSymbol
|
abstract fun getPropertyAccessorSymbol(psi: KtPropertyAccessor): KtPropertyAccessorSymbol
|
||||||
|
|
||||||
abstract fun getClassOrObjectSymbolByClassId(classId: ClassId): KtClassOrObjectSymbol?
|
abstract fun getClassOrObjectSymbolByClassId(classId: ClassId): KtClassOrObjectSymbol?
|
||||||
@@ -86,6 +87,9 @@ interface KtSymbolProviderMixIn : KtAnalysisSessionMixIn {
|
|||||||
fun KtClassOrObject.getClassOrObjectSymbol(): KtClassOrObjectSymbol =
|
fun KtClassOrObject.getClassOrObjectSymbol(): KtClassOrObjectSymbol =
|
||||||
analysisSession.symbolProvider.getClassOrObjectSymbol(this)
|
analysisSession.symbolProvider.getClassOrObjectSymbol(this)
|
||||||
|
|
||||||
|
fun KtClassOrObject.getNamedClassOrObjectSymbol(): KtNamedClassOrObjectSymbol =
|
||||||
|
analysisSession.symbolProvider.getNamedClassOrObjectSymbol(this)
|
||||||
|
|
||||||
fun KtPropertyAccessor.getPropertyAccessorSymbol(): KtPropertyAccessorSymbol =
|
fun KtPropertyAccessor.getPropertyAccessorSymbol(): KtPropertyAccessorSymbol =
|
||||||
analysisSession.symbolProvider.getPropertyAccessorSymbol(this)
|
analysisSession.symbolProvider.getPropertyAccessorSymbol(this)
|
||||||
|
|
||||||
|
|||||||
+6
-2
@@ -10,8 +10,12 @@ import org.jetbrains.kotlin.idea.frontend.api.symbols.KtTypeParameterSymbol
|
|||||||
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
|
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
interface KtNamedSymbol : KtSymbol {
|
interface KtPossiblyNamedSymbol : KtSymbol {
|
||||||
val name: Name
|
val name: Name?
|
||||||
|
}
|
||||||
|
|
||||||
|
interface KtNamedSymbol : KtPossiblyNamedSymbol {
|
||||||
|
abstract override val name: Name
|
||||||
}
|
}
|
||||||
|
|
||||||
interface KtTypedSymbol : KtSymbol {
|
interface KtTypedSymbol : KtSymbol {
|
||||||
|
|||||||
+2
-5
@@ -14,14 +14,11 @@ import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
|||||||
import org.jetbrains.kotlin.idea.asJava.FirLightClassForClassOrObjectSymbol
|
import org.jetbrains.kotlin.idea.asJava.FirLightClassForClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext
|
import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.isValid
|
import org.jetbrains.kotlin.idea.frontend.api.isValid
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.*
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
|
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtConstructorSymbol
|
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionSymbol
|
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.isPrivateOrPrivateToThis
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.isPrivateOrPrivateToThis
|
||||||
|
|
||||||
internal class FirLightAnnotationClassSymbol(
|
internal class FirLightAnnotationClassSymbol(
|
||||||
private val classOrObjectSymbol: KtClassOrObjectSymbol,
|
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||||
manager: PsiManager
|
manager: PsiManager
|
||||||
) : FirLightInterfaceOrAnnotationClassSymbol(classOrObjectSymbol, manager) {
|
) : FirLightInterfaceOrAnnotationClassSymbol(classOrObjectSymbol, manager) {
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.psi.debugText.getDebugText
|
|||||||
import org.jetbrains.kotlin.psi.stubs.KotlinClassOrObjectStub
|
import org.jetbrains.kotlin.psi.stubs.KotlinClassOrObjectStub
|
||||||
|
|
||||||
internal abstract class FirLightClassForClassOrObjectSymbol(
|
internal abstract class FirLightClassForClassOrObjectSymbol(
|
||||||
private val classOrObjectSymbol: KtClassOrObjectSymbol,
|
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||||
manager: PsiManager
|
manager: PsiManager
|
||||||
) : FirLightClassBase(manager),
|
) : FirLightClassBase(manager),
|
||||||
StubBasedPsiElement<KotlinClassOrObjectStub<out KtClassOrObject>> {
|
StubBasedPsiElement<KotlinClassOrObjectStub<out KtClassOrObject>> {
|
||||||
|
|||||||
+1
-1
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithVisibi
|
|||||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||||
|
|
||||||
internal class FirLightClassForSymbol(
|
internal class FirLightClassForSymbol(
|
||||||
private val classOrObjectSymbol: KtClassOrObjectSymbol,
|
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||||
manager: PsiManager
|
manager: PsiManager
|
||||||
) : FirLightClassForClassOrObjectSymbol(classOrObjectSymbol, manager) {
|
) : FirLightClassForClassOrObjectSymbol(classOrObjectSymbol, manager) {
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -17,10 +17,11 @@ import org.jetbrains.kotlin.idea.frontend.api.isValid
|
|||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionSymbol
|
||||||
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtNamedClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.isPrivateOrPrivateToThis
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.isPrivateOrPrivateToThis
|
||||||
|
|
||||||
internal class FirLightInterfaceClassSymbol(
|
internal class FirLightInterfaceClassSymbol(
|
||||||
private val classOrObjectSymbol: KtClassOrObjectSymbol,
|
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||||
manager: PsiManager
|
manager: PsiManager
|
||||||
) : FirLightInterfaceOrAnnotationClassSymbol(classOrObjectSymbol, manager) {
|
) : FirLightInterfaceOrAnnotationClassSymbol(classOrObjectSymbol, manager) {
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -11,10 +11,11 @@ import org.jetbrains.kotlin.idea.asJava.*
|
|||||||
import org.jetbrains.kotlin.idea.frontend.api.isValid
|
import org.jetbrains.kotlin.idea.frontend.api.isValid
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
|
||||||
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtNamedClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolKind
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolKind
|
||||||
|
|
||||||
internal abstract class FirLightInterfaceOrAnnotationClassSymbol(
|
internal abstract class FirLightInterfaceOrAnnotationClassSymbol(
|
||||||
private val classOrObjectSymbol: KtClassOrObjectSymbol,
|
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||||
manager: PsiManager
|
manager: PsiManager
|
||||||
) : FirLightClassForClassOrObjectSymbol(classOrObjectSymbol, manager) {
|
) : FirLightClassForClassOrObjectSymbol(classOrObjectSymbol, manager) {
|
||||||
|
|
||||||
|
|||||||
+10
-8
@@ -68,11 +68,13 @@ fun createFirLightClassNoCache(classOrObject: KtClassOrObject): KtLightClass? =
|
|||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
analyze(classOrObject) {
|
analyze(classOrObject) {
|
||||||
val symbol = classOrObject.getClassOrObjectSymbol()
|
when (val symbol = classOrObject.getClassOrObjectSymbol()) {
|
||||||
when (symbol.classKind) {
|
is KtAnonymousObjectSymbol -> FirLightAnonymousClassForSymbol(symbol, classOrObject.manager)
|
||||||
KtClassKind.INTERFACE -> FirLightInterfaceClassSymbol(symbol, classOrObject.manager)
|
is KtNamedClassOrObjectSymbol -> when (symbol.classKind) {
|
||||||
KtClassKind.ANNOTATION_CLASS -> FirLightAnnotationClassSymbol(symbol, classOrObject.manager)
|
KtClassKind.INTERFACE -> FirLightInterfaceClassSymbol(symbol, classOrObject.manager)
|
||||||
else -> FirLightClassForSymbol(symbol, classOrObject.manager)
|
KtClassKind.ANNOTATION_CLASS -> FirLightAnnotationClassSymbol(symbol, classOrObject.manager)
|
||||||
|
else -> FirLightClassForSymbol(symbol, classOrObject.manager)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -317,7 +319,7 @@ internal fun KtSymbolWithMembers.createInnerClasses(manager: PsiManager): List<F
|
|||||||
// we can't prohibit creating light classes with null names either since they can contain members
|
// we can't prohibit creating light classes with null names either since they can contain members
|
||||||
|
|
||||||
analyzeWithSymbolAsContext(this) {
|
analyzeWithSymbolAsContext(this) {
|
||||||
getDeclaredMemberScope().getAllSymbols().filterIsInstance<KtClassOrObjectSymbol>().mapTo(result) {
|
getDeclaredMemberScope().getAllSymbols().filterIsInstance<KtNamedClassOrObjectSymbol>().mapTo(result) {
|
||||||
FirLightClassForSymbol(it, manager)
|
FirLightClassForSymbol(it, manager)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -332,8 +334,8 @@ internal fun KtSymbolWithMembers.createInnerClasses(manager: PsiManager): List<F
|
|||||||
@OptIn(HackToForceAllowRunningAnalyzeOnEDT::class)
|
@OptIn(HackToForceAllowRunningAnalyzeOnEDT::class)
|
||||||
internal fun KtClassOrObject.checkIsInheritor(baseClassOrigin: KtClassOrObject, checkDeep: Boolean): Boolean {
|
internal fun KtClassOrObject.checkIsInheritor(baseClassOrigin: KtClassOrObject, checkDeep: Boolean): Boolean {
|
||||||
return analyze(this) {
|
return analyze(this) {
|
||||||
val thisSymbol = this@checkIsInheritor.getClassOrObjectSymbol()
|
val thisSymbol = this@checkIsInheritor.getNamedClassOrObjectSymbol()
|
||||||
val baseSymbol = baseClassOrigin.getClassOrObjectSymbol()
|
val baseSymbol = baseClassOrigin.getNamedClassOrObjectSymbol()
|
||||||
|
|
||||||
if (thisSymbol == baseSymbol) return@analyze false
|
if (thisSymbol == baseSymbol) return@analyze false
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -11,11 +11,11 @@ import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
|||||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||||
import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier
|
import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.isValid
|
import org.jetbrains.kotlin.idea.frontend.api.isValid
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtNamedClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
|
|
||||||
internal class FirLightFieldForObjectSymbol(
|
internal class FirLightFieldForObjectSymbol(
|
||||||
private val objectSymbol: KtClassOrObjectSymbol,
|
private val objectSymbol: KtNamedClassOrObjectSymbol,
|
||||||
containingClass: KtLightClass,
|
containingClass: KtLightClass,
|
||||||
private val name: String,
|
private val name: String,
|
||||||
lightMemberOrigin: LightMemberOrigin?,
|
lightMemberOrigin: LightMemberOrigin?,
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import org.jetbrains.kotlin.fir.types.*
|
|||||||
import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState
|
import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState
|
||||||
import org.jetbrains.kotlin.idea.fir.low.level.api.api.withFirDeclaration
|
import org.jetbrains.kotlin.idea.fir.low.level.api.api.withFirDeclaration
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext
|
import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirClassOrObjectSymbol
|
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.types.KtFirType
|
import org.jetbrains.kotlin.idea.frontend.api.fir.types.KtFirType
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.*
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.*
|
||||||
@@ -61,8 +60,8 @@ internal fun KtTypeAndAnnotations.asPsiType(
|
|||||||
return type.coneType.asPsiType(session, context.firRef.resolveState, TypeMappingMode.DEFAULT, parent)
|
return type.coneType.asPsiType(session, context.firRef.resolveState, TypeMappingMode.DEFAULT, parent)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun KtClassOrObjectSymbol.typeForClassSymbol(psiElement: PsiElement): PsiType {
|
internal fun KtNamedClassOrObjectSymbol.typeForClassSymbol(psiElement: PsiElement): PsiType {
|
||||||
require(this is KtFirClassOrObjectSymbol)
|
require(this is KtFirSymbol<*>)
|
||||||
|
|
||||||
val types = analyzeWithSymbolAsContext(this) {
|
val types = analyzeWithSymbolAsContext(this) {
|
||||||
this@typeForClassSymbol.buildSelfClassType()
|
this@typeForClassSymbol.buildSelfClassType()
|
||||||
|
|||||||
+28
-14
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.idea.frontend.api.fir
|
|||||||
import com.google.common.collect.MapMaker
|
import com.google.common.collect.MapMaker
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
@@ -82,33 +83,50 @@ internal class KtSymbolByFirBuilder private constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun buildSymbol(fir: FirDeclaration): KtSymbol = symbolsCache.cache(fir) {
|
fun buildSymbol(fir: FirDeclaration): KtSymbol {
|
||||||
when (fir) {
|
return when (fir) {
|
||||||
is FirRegularClass -> buildClassSymbol(fir)
|
is FirClassLikeDeclaration<*> -> buildClassLikeSymbol(fir)
|
||||||
is FirSimpleFunction -> buildFunctionSymbol(fir)
|
is FirSimpleFunction -> buildFunctionSymbol(fir)
|
||||||
is FirProperty -> buildVariableSymbol(fir)
|
is FirProperty -> buildVariableSymbol(fir)
|
||||||
is FirValueParameter -> buildParameterSymbol(fir)
|
is FirValueParameter -> buildParameterSymbol(fir)
|
||||||
is FirConstructor -> buildConstructorSymbol(fir)
|
is FirConstructor -> buildConstructorSymbol(fir)
|
||||||
is FirTypeParameter -> buildTypeParameterSymbol(fir)
|
is FirTypeParameter -> buildTypeParameterSymbol(fir)
|
||||||
is FirTypeAlias -> buildTypeAliasSymbol(fir)
|
|
||||||
is FirEnumEntry -> buildEnumEntrySymbol(fir)
|
is FirEnumEntry -> buildEnumEntrySymbol(fir)
|
||||||
is FirField -> buildFieldSymbol(fir)
|
is FirField -> buildFieldSymbol(fir)
|
||||||
is FirAnonymousFunction -> buildAnonymousFunctionSymbol(fir)
|
is FirAnonymousFunction -> buildAnonymousFunctionSymbol(fir)
|
||||||
is FirPropertyAccessor -> buildPropertyAccessorSymbol(fir)
|
is FirPropertyAccessor -> buildPropertyAccessorSymbol(fir)
|
||||||
is FirAnonymousObject -> buildAnonymousObjectSymbol(fir)
|
|
||||||
else ->
|
else ->
|
||||||
TODO(fir::class.toString())
|
TODO(fir::class.toString())
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO Handle all relevant cases
|
// TODO Handle all relevant cases
|
||||||
fun buildCallableSymbol(fir: FirCallableDeclaration<*>): KtCallableSymbol = buildSymbol(fir) as KtCallableSymbol
|
fun buildCallableSymbol(fir: FirCallableDeclaration<*>): KtCallableSymbol = buildSymbol(fir) as KtCallableSymbol
|
||||||
|
|
||||||
fun buildClassLikeSymbol(fir: FirClassLikeDeclaration<*>): KtClassLikeSymbol = when (fir) {
|
|
||||||
is FirRegularClass -> buildClassSymbol(fir)
|
fun buildClassLikeSymbol(fir: FirClassLikeDeclaration<*>): KtClassLikeSymbol {
|
||||||
is FirTypeAlias -> buildTypeAliasSymbol(fir)
|
return when (fir) {
|
||||||
else ->
|
is FirClass<*> -> buildClassOrObjectSymbol(fir)
|
||||||
TODO(fir::class.toString())
|
is FirTypeAlias -> buildTypeAliasSymbol(fir)
|
||||||
|
else -> error("Unexpected ${fir::class.simpleName}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun buildClassOrObjectSymbol(fir: FirClass<*>): KtClassOrObjectSymbol {
|
||||||
|
return when (fir) {
|
||||||
|
is FirAnonymousObject -> buildAnonymousObjectSymbol(fir)
|
||||||
|
is FirRegularClass -> buildNamedClassOrObjectSymbol(fir)
|
||||||
|
else -> error("Unexpected ${fir::class.simpleName}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun buildNamedClassOrObjectSymbol(fir: FirRegularClass): KtFirNamedClassOrObjectSymbol {
|
||||||
|
return symbolsCache.cache(fir) { KtFirNamedClassOrObjectSymbol(fir, resolveState, token, this) }
|
||||||
|
}
|
||||||
|
|
||||||
|
fun buildAnonymousObjectSymbol(fir: FirAnonymousObject): KtAnonymousObjectSymbol {
|
||||||
|
return symbolsCache.cache(fir) { KtFirAnonymousObjectSymbol(fir, resolveState, token, this) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun buildClassifierSymbol(firSymbol: FirClassifierSymbol<*>): KtClassifierSymbol = when (val fir = firSymbol.fir) {
|
fun buildClassifierSymbol(firSymbol: FirClassifierSymbol<*>): KtClassifierSymbol = when (val fir = firSymbol.fir) {
|
||||||
@@ -118,10 +136,6 @@ internal class KtSymbolByFirBuilder private constructor(
|
|||||||
TODO(fir::class.toString())
|
TODO(fir::class.toString())
|
||||||
}
|
}
|
||||||
|
|
||||||
fun buildClassSymbol(fir: FirRegularClass) = symbolsCache.cache(fir) { KtFirClassOrObjectSymbol(fir, resolveState, token, this) }
|
|
||||||
|
|
||||||
fun buildAnonymousObjectSymbol(fir: FirAnonymousObject) =
|
|
||||||
symbolsCache.cache(fir) { KtFirAnonymousObjectSymbol(fir, resolveState, token, this) }
|
|
||||||
|
|
||||||
// TODO it can be a constructor parameter, which may be split into parameter & property
|
// TODO it can be a constructor parameter, which may be split into parameter & property
|
||||||
// we should handle them both
|
// we should handle them both
|
||||||
|
|||||||
+4
-2
@@ -24,13 +24,15 @@ import org.jetbrains.kotlin.idea.frontend.api.components.KtScopeProvider
|
|||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder
|
import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.scopes.*
|
import org.jetbrains.kotlin.idea.frontend.api.fir.scopes.*
|
||||||
|
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.*
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirAnonymousObjectSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirAnonymousObjectSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirClassOrObjectSymbol
|
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirEnumEntrySymbol
|
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirEnumEntrySymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirFileSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirFileSymbol
|
||||||
|
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirNamedClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.types.KtFirType
|
import org.jetbrains.kotlin.idea.frontend.api.fir.types.KtFirType
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.weakRef
|
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.weakRef
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.scopes.*
|
import org.jetbrains.kotlin.idea.frontend.api.scopes.*
|
||||||
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFileSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFileSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPackageSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPackageSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithDeclarations
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithDeclarations
|
||||||
@@ -59,7 +61,7 @@ internal class KtFirScopeProvider(
|
|||||||
private val packageMemberScopeCache = IdentityHashMap<KtPackageSymbol, KtPackageScope>()
|
private val packageMemberScopeCache = IdentityHashMap<KtPackageSymbol, KtPackageScope>()
|
||||||
|
|
||||||
private inline fun <T> KtSymbolWithMembers.withFirForScope(crossinline body: (FirClass<*>) -> T): T? = when (this) {
|
private inline fun <T> KtSymbolWithMembers.withFirForScope(crossinline body: (FirClass<*>) -> T): T? = when (this) {
|
||||||
is KtFirClassOrObjectSymbol -> firRef.withFir(FirResolvePhase.SUPER_TYPES, body)
|
is KtFirNamedClassOrObjectSymbol -> firRef.withFir(FirResolvePhase.SUPER_TYPES, body)
|
||||||
is KtFirAnonymousObjectSymbol -> firRef.withFir(FirResolvePhase.SUPER_TYPES, body)
|
is KtFirAnonymousObjectSymbol -> firRef.withFir(FirResolvePhase.SUPER_TYPES, body)
|
||||||
is KtFirEnumEntrySymbol -> firRef.withFir(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) {
|
is KtFirEnumEntrySymbol -> firRef.withFir(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) {
|
||||||
val initializer = it.initializer
|
val initializer = it.initializer
|
||||||
|
|||||||
+3
-3
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirIntersectionOverridePropertySymb
|
|||||||
import org.jetbrains.kotlin.idea.frontend.api.ValidityToken
|
import org.jetbrains.kotlin.idea.frontend.api.ValidityToken
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.components.KtSymbolDeclarationOverridesProvider
|
import org.jetbrains.kotlin.idea.frontend.api.components.KtSymbolDeclarationOverridesProvider
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirClassOrObjectSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirNamedClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.*
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.*
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithKind
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithKind
|
||||||
@@ -92,13 +92,13 @@ internal class KtFirSymbolDeclarationOverridesProvider(
|
|||||||
val containingDeclaration = with(analysisSession) {
|
val containingDeclaration = with(analysisSession) {
|
||||||
(callableSymbol as? KtSymbolWithKind)?.getContainingSymbol() as? KtClassOrObjectSymbol
|
(callableSymbol as? KtSymbolWithKind)?.getContainingSymbol() as? KtClassOrObjectSymbol
|
||||||
} ?: return
|
} ?: return
|
||||||
check(containingDeclaration is KtFirClassOrObjectSymbol)
|
check(containingDeclaration is KtFirNamedClassOrObjectSymbol)
|
||||||
|
|
||||||
processOverrides(containingDeclaration, callableSymbol, process)
|
processOverrides(containingDeclaration, callableSymbol, process)
|
||||||
}
|
}
|
||||||
|
|
||||||
private inline fun processOverrides(
|
private inline fun processOverrides(
|
||||||
containingDeclaration: KtFirClassOrObjectSymbol,
|
containingDeclaration: KtFirNamedClassOrObjectSymbol,
|
||||||
callableSymbol: KtFirSymbol<*>,
|
callableSymbol: KtFirSymbol<*>,
|
||||||
crossinline process: (FirTypeScope, FirDeclaration) -> Unit
|
crossinline process: (FirTypeScope, FirDeclaration) -> Unit
|
||||||
) {
|
) {
|
||||||
|
|||||||
+4
-3
@@ -14,10 +14,11 @@ import org.jetbrains.kotlin.idea.frontend.api.ValidityToken
|
|||||||
import org.jetbrains.kotlin.idea.frontend.api.components.KtBuiltinTypes
|
import org.jetbrains.kotlin.idea.frontend.api.components.KtBuiltinTypes
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.components.KtTypeProvider
|
import org.jetbrains.kotlin.idea.frontend.api.components.KtTypeProvider
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirClassOrObjectSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirNamedClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.types.KtFirType
|
import org.jetbrains.kotlin.idea.frontend.api.fir.types.KtFirType
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.types.PublicTypeApproximator
|
import org.jetbrains.kotlin.idea.frontend.api.fir.types.PublicTypeApproximator
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
|
||||||
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtNamedClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
|
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
|
||||||
import org.jetbrains.kotlin.types.TypeApproximatorConfiguration
|
import org.jetbrains.kotlin.types.TypeApproximatorConfiguration
|
||||||
|
|
||||||
@@ -40,8 +41,8 @@ internal class KtFirTypeProvider(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun buildSelfClassType(symbol: KtClassOrObjectSymbol): KtType {
|
override fun buildSelfClassType(symbol: KtNamedClassOrObjectSymbol): KtType {
|
||||||
require(symbol is KtFirClassOrObjectSymbol)
|
require(symbol is KtFirNamedClassOrObjectSymbol)
|
||||||
val type = symbol.firRef.withFir(FirResolvePhase.SUPER_TYPES) { firClass ->
|
val type = symbol.firRef.withFir(FirResolvePhase.SUPER_TYPES) { firClass ->
|
||||||
ConeClassLikeTypeImpl(
|
ConeClassLikeTypeImpl(
|
||||||
firClass.symbol.toLookupTag(),
|
firClass.symbol.toLookupTag(),
|
||||||
|
|||||||
+1
-1
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.CanNotCreateSymbo
|
|||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtPsiBasedSymbolPointer
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtPsiBasedSymbolPointer
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtSymbolPointer
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtSymbolPointer
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
internal class KtFirAnonymousObjectSymbol(
|
internal class KtFirAnonymousObjectSymbol(
|
||||||
fir: FirAnonymousObject,
|
fir: FirAnonymousObject,
|
||||||
@@ -34,7 +35,6 @@ internal class KtFirAnonymousObjectSymbol(
|
|||||||
) : KtAnonymousObjectSymbol(), KtFirSymbol<FirAnonymousObject> {
|
) : KtAnonymousObjectSymbol(), KtFirSymbol<FirAnonymousObject> {
|
||||||
private val builder by weakRef(_builder)
|
private val builder by weakRef(_builder)
|
||||||
override val firRef = firRef(fir, resolveState)
|
override val firRef = firRef(fir, resolveState)
|
||||||
override val symbolKind: KtSymbolKind = KtSymbolKind.LOCAL
|
|
||||||
override val psi: PsiElement? by firRef.withFirAndCache { fir -> fir.findPsi(fir.session) }
|
override val psi: PsiElement? by firRef.withFirAndCache { fir -> fir.findPsi(fir.session) }
|
||||||
|
|
||||||
override val annotations: List<KtAnnotationCall> by cached { firRef.toAnnotationsList() }
|
override val annotations: List<KtAnnotationCall> by cached { firRef.toAnnotationsList() }
|
||||||
|
|||||||
+9
-9
@@ -15,12 +15,12 @@ import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder
|
|||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.annotations.containsAnnotation
|
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.annotations.containsAnnotation
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.annotations.getAnnotationClassIds
|
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.annotations.getAnnotationClassIds
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.annotations.toAnnotationsList
|
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.annotations.toAnnotationsList
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.pointers.KtFirClassOrObjectInLibrarySymbol
|
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.pointers.KtFirClassOrObjectInLibrarySymbolPointer
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached
|
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.firRef
|
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.firRef
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.weakRef
|
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.weakRef
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtNamedClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.*
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.*
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.CanNotCreateSymbolPointerForLocalLibraryDeclarationException
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.CanNotCreateSymbolPointerForLocalLibraryDeclarationException
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtPsiBasedSymbolPointer
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtPsiBasedSymbolPointer
|
||||||
@@ -28,16 +28,16 @@ import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtSymbolPointer
|
|||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
internal class KtFirClassOrObjectSymbol(
|
internal class KtFirNamedClassOrObjectSymbol(
|
||||||
fir: FirRegularClass,
|
fir: FirRegularClass,
|
||||||
resolveState: FirModuleResolveState,
|
resolveState: FirModuleResolveState,
|
||||||
override val token: ValidityToken,
|
override val token: ValidityToken,
|
||||||
_builder: KtSymbolByFirBuilder
|
_builder: KtSymbolByFirBuilder
|
||||||
) : KtClassOrObjectSymbol(), KtFirSymbol<FirRegularClass> {
|
) : KtNamedClassOrObjectSymbol(), KtFirSymbol<FirRegularClass> {
|
||||||
private val builder by weakRef(_builder)
|
private val builder by weakRef(_builder)
|
||||||
override val firRef = firRef(fir, resolveState)
|
override val firRef = firRef(fir, resolveState)
|
||||||
override val psi: PsiElement? by firRef.withFirAndCache { fir -> fir.findPsi(fir.session) }
|
override val psi: PsiElement? by firRef.withFirAndCache { fir -> fir.findPsi(fir.session) }
|
||||||
override val name: Name get() = firRef.withFir { it.symbol.classId.shortClassName }
|
override val name: Name get() = firRef.withFir { it.name }
|
||||||
override val classIdIfNonLocal: ClassId?
|
override val classIdIfNonLocal: ClassId?
|
||||||
get() = firRef.withFir { fir ->
|
get() = firRef.withFir { fir ->
|
||||||
fir.symbol.classId.takeUnless { it.isLocal }
|
fir.symbol.classId.takeUnless { it.isLocal }
|
||||||
@@ -58,8 +58,8 @@ internal class KtFirClassOrObjectSymbol(
|
|||||||
|
|
||||||
override val isExternal: Boolean get() = firRef.withFir(FirResolvePhase.STATUS) { it.isExternal }
|
override val isExternal: Boolean get() = firRef.withFir(FirResolvePhase.STATUS) { it.isExternal }
|
||||||
|
|
||||||
override val companionObject: KtClassOrObjectSymbol? by firRef.withFirAndCache(FirResolvePhase.RAW_FIR) { fir ->
|
override val companionObject: KtFirNamedClassOrObjectSymbol? by firRef.withFirAndCache { fir ->
|
||||||
fir.companionObject?.let { builder.buildClassSymbol(it) }
|
fir.companionObject?.let { builder.buildNamedClassOrObjectSymbol(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override val superTypes: List<KtTypeAndAnnotations> by cached {
|
override val superTypes: List<KtTypeAndAnnotations> by cached {
|
||||||
@@ -92,11 +92,11 @@ internal class KtFirClassOrObjectSymbol(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun createPointer(): KtSymbolPointer<KtClassOrObjectSymbol> {
|
override fun createPointer(): KtSymbolPointer<KtNamedClassOrObjectSymbol> {
|
||||||
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
|
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
|
||||||
if (symbolKind == KtSymbolKind.LOCAL) {
|
if (symbolKind == KtSymbolKind.LOCAL) {
|
||||||
throw CanNotCreateSymbolPointerForLocalLibraryDeclarationException(classIdIfNonLocal?.asString().orEmpty())
|
throw CanNotCreateSymbolPointerForLocalLibraryDeclarationException(classIdIfNonLocal?.asString().orEmpty())
|
||||||
}
|
}
|
||||||
return KtFirClassOrObjectInLibrarySymbol(classIdIfNonLocal!!)
|
return KtFirClassOrObjectInLibrarySymbolPointer(classIdIfNonLocal!!)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+10
-4
@@ -99,9 +99,15 @@ internal class KtFirSymbolProvider(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun getClassOrObjectSymbol(psi: KtClassOrObject): KtClassOrObjectSymbol = withValidityAssertion {
|
override fun getClassOrObjectSymbol(psi: KtClassOrObject): KtClassOrObjectSymbol = withValidityAssertion {
|
||||||
check(psi !is KtObjectDeclaration || psi.parent !is KtObjectLiteralExpression)
|
psi.withFirDeclarationOfType<FirClass<*>, KtClassOrObjectSymbol>(resolveState) {
|
||||||
psi.withFirDeclarationOfType<FirRegularClass, KtClassOrObjectSymbol>(resolveState) {
|
firSymbolBuilder.buildClassOrObjectSymbol(it)
|
||||||
firSymbolBuilder.buildClassSymbol(it)
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getNamedClassOrObjectSymbol(psi: KtClassOrObject): KtNamedClassOrObjectSymbol = withValidityAssertion {
|
||||||
|
require(psi !is KtObjectDeclaration || psi.parent !is KtObjectLiteralExpression)
|
||||||
|
psi.withFirDeclarationOfType<FirRegularClass, KtNamedClassOrObjectSymbol>(resolveState) {
|
||||||
|
firSymbolBuilder.buildNamedClassOrObjectSymbol(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,7 +119,7 @@ internal class KtFirSymbolProvider(
|
|||||||
|
|
||||||
override fun getClassOrObjectSymbolByClassId(classId: ClassId): KtClassOrObjectSymbol? = withValidityAssertion {
|
override fun getClassOrObjectSymbolByClassId(classId: ClassId): KtClassOrObjectSymbol? = withValidityAssertion {
|
||||||
val symbol = firSymbolProvider.getClassLikeSymbolByFqName(classId) as? FirRegularClassSymbol ?: return null
|
val symbol = firSymbolProvider.getClassLikeSymbolByFqName(classId) as? FirRegularClassSymbol ?: return null
|
||||||
firSymbolBuilder.buildClassSymbol(symbol.fir)
|
firSymbolBuilder.buildNamedClassOrObjectSymbol(symbol.fir)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): Sequence<KtSymbol> {
|
override fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): Sequence<KtSymbol> {
|
||||||
|
|||||||
+6
-6
@@ -7,16 +7,16 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.symbols.pointers
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
||||||
|
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirNamedClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
|
||||||
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtNamedClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtSymbolPointer
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtSymbolPointer
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
|
|
||||||
class KtFirClassOrObjectInLibrarySymbol(private val classId: ClassId) : KtSymbolPointer<KtClassOrObjectSymbol>() {
|
class KtFirClassOrObjectInLibrarySymbolPointer(private val classId: ClassId) : KtSymbolPointer<KtNamedClassOrObjectSymbol>() {
|
||||||
override fun restoreSymbol(analysisSession: KtAnalysisSession): KtClassOrObjectSymbol? {
|
override fun restoreSymbol(analysisSession: KtAnalysisSession): KtNamedClassOrObjectSymbol? {
|
||||||
require(analysisSession is KtFirAnalysisSession)
|
require(analysisSession is KtFirAnalysisSession)
|
||||||
val firClass = analysisSession.firSymbolBuilder.buildClassLikeSymbolByClassId(
|
val firClass = analysisSession.firSymbolBuilder.buildClassLikeSymbolByClassId(classId) ?: return null
|
||||||
classId
|
return analysisSession.firSymbolBuilder.buildNamedClassOrObjectSymbol(firClass)
|
||||||
) ?: return null
|
|
||||||
return analysisSession.firSymbolBuilder.buildClassSymbol(firClass)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.idea.references
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirClassOrObjectSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirNamedClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
@@ -30,7 +30,7 @@ internal class KtFirSimpleNameReference(
|
|||||||
if (resultsToFix.isEmpty() || !isAnnotationCall) return resultsToFix
|
if (resultsToFix.isEmpty() || !isAnnotationCall) return resultsToFix
|
||||||
|
|
||||||
return resultsToFix.map { targetSymbol ->
|
return resultsToFix.map { targetSymbol ->
|
||||||
if (targetSymbol is KtFirClassOrObjectSymbol && targetSymbol.classKind == KtClassKind.ANNOTATION_CLASS) {
|
if (targetSymbol is KtFirNamedClassOrObjectSymbol && targetSymbol.classKind == KtClassKind.ANNOTATION_CLASS) {
|
||||||
targetSymbol.getMemberScope().getConstructors().firstOrNull() ?: targetSymbol
|
targetSymbol.getMemberScope().getConstructors().firstOrNull() ?: targetSymbol
|
||||||
} else targetSymbol
|
} else targetSymbol
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ CLASSIFIER NAMES:
|
|||||||
[C, I]
|
[C, I]
|
||||||
|
|
||||||
CLASSIFIER SYMBOLS:
|
CLASSIFIER SYMBOLS:
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: C
|
classIdIfNonLocal: C
|
||||||
@@ -76,7 +76,7 @@ KtFirClassOrObjectSymbol:
|
|||||||
typeParameters: []
|
typeParameters: []
|
||||||
visibility: PUBLIC
|
visibility: PUBLIC
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: I
|
classIdIfNonLocal: I
|
||||||
|
|||||||
@@ -1282,7 +1282,7 @@ KtFirFunctionSymbol:
|
|||||||
valueParameters: []
|
valueParameters: []
|
||||||
visibility: PUBLIC
|
visibility: PUBLIC
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: kotlin/Int.Companion
|
classIdIfNonLocal: kotlin/Int.Companion
|
||||||
|
|||||||
@@ -1231,7 +1231,7 @@ KtFirFunctionSymbol:
|
|||||||
valueParameters: [KtFirFunctionValueParameterSymbol(index)]
|
valueParameters: [KtFirFunctionValueParameterSymbol(index)]
|
||||||
visibility: PUBLIC
|
visibility: PUBLIC
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: java/lang/String.CaseInsensitiveComparator
|
classIdIfNonLocal: java/lang/String.CaseInsensitiveComparator
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
class: kotlin/Lazy
|
class: kotlin/Lazy
|
||||||
|
|
||||||
// SYMBOLS:
|
// SYMBOLS:
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: kotlin/Lazy
|
classIdIfNonLocal: kotlin/Lazy
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
class: java/lang/String
|
class: java/lang/String
|
||||||
|
|
||||||
// SYMBOLS:
|
// SYMBOLS:
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: java/lang/String
|
classIdIfNonLocal: java/lang/String
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
class: kotlin/collections/MutableMap.MutableEntry
|
class: kotlin/collections/MutableMap.MutableEntry
|
||||||
|
|
||||||
// SYMBOLS:
|
// SYMBOLS:
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: kotlin/collections/MutableMap.MutableEntry
|
classIdIfNonLocal: kotlin/collections/MutableMap.MutableEntry
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@ class A {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SYMBOLS:
|
// SYMBOLS:
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: A
|
classIdIfNonLocal: A
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ KtFirConstructorSymbol:
|
|||||||
valueParameters: []
|
valueParameters: []
|
||||||
visibility: PUBLIC
|
visibility: PUBLIC
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: A
|
classIdIfNonLocal: A
|
||||||
|
|||||||
+1
-1
@@ -73,7 +73,7 @@ KtFirConstructorSymbol:
|
|||||||
valueParameters: Could not render due to java.lang.ClassCastException: org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirFunctionValueParameterSymbol cannot be cast to org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirConstructorValueParameterSymbol
|
valueParameters: Could not render due to java.lang.ClassCastException: org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirFunctionValueParameterSymbol cannot be cast to org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirConstructorValueParameterSymbol
|
||||||
visibility: PUBLIC
|
visibility: PUBLIC
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: A
|
classIdIfNonLocal: A
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@ KtFirEnumEntrySymbol:
|
|||||||
origin: SOURCE
|
origin: SOURCE
|
||||||
symbolKind: MEMBER
|
symbolKind: MEMBER
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: X
|
classIdIfNonLocal: X
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ KtFirFunctionSymbol:
|
|||||||
valueParameters: []
|
valueParameters: []
|
||||||
visibility: PUBLIC
|
visibility: PUBLIC
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: A
|
classIdIfNonLocal: A
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ KtFirKotlinPropertySymbol:
|
|||||||
symbolKind: MEMBER
|
symbolKind: MEMBER
|
||||||
visibility: PUBLIC
|
visibility: PUBLIC
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: A
|
classIdIfNonLocal: A
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
class: kotlin/collections/Iterator
|
class: kotlin/collections/Iterator
|
||||||
|
|
||||||
// SYMBOLS:
|
// SYMBOLS:
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: kotlin/collections/Iterator
|
classIdIfNonLocal: kotlin/collections/Iterator
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
class: kotlin/io/FileWalkDirection
|
class: kotlin/io/FileWalkDirection
|
||||||
|
|
||||||
// SYMBOLS:
|
// SYMBOLS:
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: kotlin/io/FileWalkDirection
|
classIdIfNonLocal: kotlin/io/FileWalkDirection
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ KtFirConstructorSymbol:
|
|||||||
valueParameters: Could not render due to java.lang.ClassCastException: org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirFunctionValueParameterSymbol cannot be cast to org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirConstructorValueParameterSymbol
|
valueParameters: Could not render due to java.lang.ClassCastException: org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirFunctionValueParameterSymbol cannot be cast to org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirConstructorValueParameterSymbol
|
||||||
visibility: PUBLIC
|
visibility: PUBLIC
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: Anno
|
classIdIfNonLocal: Anno
|
||||||
@@ -84,7 +84,7 @@ KtFirFunctionSymbol:
|
|||||||
valueParameters: []
|
valueParameters: []
|
||||||
visibility: PUBLIC
|
visibility: PUBLIC
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: [Anno]
|
annotationClassIds: [Anno]
|
||||||
annotations: [Anno(param1 = param, param2 = 2)]
|
annotations: [Anno(param1 = param, param2 = 2)]
|
||||||
classIdIfNonLocal: X
|
classIdIfNonLocal: X
|
||||||
|
|||||||
@@ -57,6 +57,9 @@ KtFirKotlinPropertySymbol:
|
|||||||
KtFirAnonymousObjectSymbol:
|
KtFirAnonymousObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
|
classIdIfNonLocal: null
|
||||||
|
classKind: ANONYMOUS_OBJECT
|
||||||
|
name: null
|
||||||
origin: SOURCE
|
origin: SOURCE
|
||||||
superTypes: [[] java/lang/Runnable]
|
superTypes: [[] java/lang/Runnable]
|
||||||
symbolKind: LOCAL
|
symbolKind: LOCAL
|
||||||
@@ -85,7 +88,7 @@ KtFirKotlinPropertySymbol:
|
|||||||
symbolKind: MEMBER
|
symbolKind: MEMBER
|
||||||
visibility: PUBLIC
|
visibility: PUBLIC
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: AnonymousContainer
|
classIdIfNonLocal: AnonymousContainer
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@ class A {
|
|||||||
|
|
||||||
// SYMBOLS:
|
// SYMBOLS:
|
||||||
/*
|
/*
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: A
|
classIdIfNonLocal: A
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ KtFirFunctionSymbol:
|
|||||||
valueParameters: []
|
valueParameters: []
|
||||||
visibility: PUBLIC
|
visibility: PUBLIC
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: A
|
classIdIfNonLocal: A
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ KtFirTypeParameterSymbol:
|
|||||||
upperBounds: [kotlin/Any?]
|
upperBounds: [kotlin/Any?]
|
||||||
variance: INVARIANT
|
variance: INVARIANT
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: A
|
classIdIfNonLocal: A
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ KtFirFunctionSymbol:
|
|||||||
valueParameters: []
|
valueParameters: []
|
||||||
visibility: LOCAL
|
visibility: LOCAL
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: null
|
classIdIfNonLocal: null
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class X : @Anno1 I {
|
|||||||
|
|
||||||
// SYMBOLS:
|
// SYMBOLS:
|
||||||
/*
|
/*
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: [kotlin/annotation/Target]
|
annotationClassIds: [kotlin/annotation/Target]
|
||||||
annotations: [kotlin/annotation/Target(allowedTargets = KtUnsupportedConstantValue)]
|
annotations: [kotlin/annotation/Target(allowedTargets = KtUnsupportedConstantValue)]
|
||||||
classIdIfNonLocal: Anno1
|
classIdIfNonLocal: Anno1
|
||||||
@@ -36,7 +36,7 @@ KtFirClassOrObjectSymbol:
|
|||||||
typeParameters: []
|
typeParameters: []
|
||||||
visibility: PUBLIC
|
visibility: PUBLIC
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: [kotlin/annotation/Target]
|
annotationClassIds: [kotlin/annotation/Target]
|
||||||
annotations: [kotlin/annotation/Target(allowedTargets = KtUnsupportedConstantValue)]
|
annotations: [kotlin/annotation/Target(allowedTargets = KtUnsupportedConstantValue)]
|
||||||
classIdIfNonLocal: Anno2
|
classIdIfNonLocal: Anno2
|
||||||
@@ -55,7 +55,7 @@ KtFirClassOrObjectSymbol:
|
|||||||
typeParameters: []
|
typeParameters: []
|
||||||
visibility: PUBLIC
|
visibility: PUBLIC
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: [kotlin/annotation/Target]
|
annotationClassIds: [kotlin/annotation/Target]
|
||||||
annotations: [kotlin/annotation/Target(allowedTargets = KtUnsupportedConstantValue)]
|
annotations: [kotlin/annotation/Target(allowedTargets = KtUnsupportedConstantValue)]
|
||||||
classIdIfNonLocal: Anno3
|
classIdIfNonLocal: Anno3
|
||||||
@@ -74,7 +74,7 @@ KtFirClassOrObjectSymbol:
|
|||||||
typeParameters: []
|
typeParameters: []
|
||||||
visibility: PUBLIC
|
visibility: PUBLIC
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: [kotlin/annotation/Target]
|
annotationClassIds: [kotlin/annotation/Target]
|
||||||
annotations: [kotlin/annotation/Target(allowedTargets = KtUnsupportedConstantValue)]
|
annotations: [kotlin/annotation/Target(allowedTargets = KtUnsupportedConstantValue)]
|
||||||
classIdIfNonLocal: Anno4
|
classIdIfNonLocal: Anno4
|
||||||
@@ -93,7 +93,7 @@ KtFirClassOrObjectSymbol:
|
|||||||
typeParameters: []
|
typeParameters: []
|
||||||
visibility: PUBLIC
|
visibility: PUBLIC
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: I
|
classIdIfNonLocal: I
|
||||||
@@ -167,7 +167,7 @@ KtFirKotlinPropertySymbol:
|
|||||||
symbolKind: MEMBER
|
symbolKind: MEMBER
|
||||||
visibility: PUBLIC
|
visibility: PUBLIC
|
||||||
|
|
||||||
KtFirClassOrObjectSymbol:
|
KtFirNamedClassOrObjectSymbol:
|
||||||
annotationClassIds: []
|
annotationClassIds: []
|
||||||
annotations: []
|
annotations: []
|
||||||
classIdIfNonLocal: X
|
classIdIfNonLocal: X
|
||||||
|
|||||||
Reference in New Issue
Block a user