FIR IDE: make KtAnonymousObject symbol to extend KtClassObjectSymbol
This commit is contained in:
@@ -28,7 +28,7 @@ internal object KotlinFirIconProvider {
|
||||
}
|
||||
|
||||
if (symbol is KtClassOrObjectSymbol) {
|
||||
val isAbstract = symbol.modality == KtCommonSymbolModality.ABSTRACT
|
||||
val isAbstract = (symbol as? KtNamedClassOrObjectSymbol)?.modality == KtCommonSymbolModality.ABSTRACT
|
||||
|
||||
return when (symbol.classKind) {
|
||||
KtClassKind.CLASS -> if (isAbstract) KotlinIcons.ABSTRACT_CLASS else KotlinIcons.CLASS
|
||||
@@ -36,6 +36,7 @@ internal object KotlinFirIconProvider {
|
||||
KtClassKind.ANNOTATION_CLASS -> KotlinIcons.ANNOTATION
|
||||
KtClassKind.OBJECT, KtClassKind.COMPANION_OBJECT -> KotlinIcons.OBJECT
|
||||
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.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.KtTypeArgumentList
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
@@ -94,7 +95,8 @@ private data class VariableLookupObject(
|
||||
|
||||
private class ClassLookupElementFactory {
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
+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.refactoring.CHECK_SUPER_METHODS_YES_NO_DIALOG
|
||||
import org.jetbrains.kotlin.idea.refactoring.formatPsiClass
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext
|
||||
|
||||
class KotlinFindUsagesSupportFirImpl : KotlinFindUsagesSupport {
|
||||
@@ -81,7 +82,7 @@ class KotlinFindUsagesSupportFirImpl : KotlinFindUsagesSupport {
|
||||
val filteredDeclarations =
|
||||
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())
|
||||
}
|
||||
|
||||
+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.symbols.KtClassOrObjectSymbol
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtNamedClassOrObjectSymbol
|
||||
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
|
||||
|
||||
abstract class KtTypeProvider : KtAnalysisSessionComponent() {
|
||||
@@ -14,7 +15,7 @@ abstract class KtTypeProvider : KtAnalysisSessionComponent() {
|
||||
|
||||
abstract fun approximateToSuperPublicDenotableType(type: KtType): KtType?
|
||||
|
||||
abstract fun buildSelfClassType(symbol: KtClassOrObjectSymbol): KtType
|
||||
abstract fun buildSelfClassType(symbol: KtNamedClassOrObjectSymbol): KtType
|
||||
}
|
||||
|
||||
interface KtTypeProviderMixIn : KtAnalysisSessionMixIn {
|
||||
@@ -30,7 +31,7 @@ interface KtTypeProviderMixIn : KtAnalysisSessionMixIn {
|
||||
fun KtType.approximateToSuperPublicDenotable(): KtType? =
|
||||
analysisSession.typeProvider.approximateToSuperPublicDenotableType(this)
|
||||
|
||||
fun KtClassOrObjectSymbol.buildSelfClassType(): KtType =
|
||||
fun KtNamedClassOrObjectSymbol.buildSelfClassType(): KtType =
|
||||
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.types.KtType
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
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 override fun createPointer(): KtSymbolPointer<KtTypeParameterSymbol>
|
||||
@@ -21,13 +26,13 @@ abstract class KtTypeParameterSymbol : KtClassifierSymbol(), KtNamedSymbol {
|
||||
abstract val isReified: Boolean
|
||||
}
|
||||
|
||||
sealed class KtClassLikeSymbol : KtClassifierSymbol(), KtNamedSymbol, KtSymbolWithKind {
|
||||
sealed class KtClassLikeSymbol : KtClassifierSymbol(), KtSymbolWithKind {
|
||||
abstract val classIdIfNonLocal: ClassId?
|
||||
|
||||
abstract override fun createPointer(): KtSymbolPointer<KtClassLikeSymbol>
|
||||
}
|
||||
|
||||
abstract class KtTypeAliasSymbol : KtClassLikeSymbol() {
|
||||
abstract class KtTypeAliasSymbol : KtClassLikeSymbol(), KtNamedSymbol {
|
||||
abstract override val classIdIfNonLocal: ClassId
|
||||
|
||||
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.TOP_LEVEL
|
||||
@@ -35,13 +40,30 @@ abstract class KtTypeAliasSymbol : KtClassLikeSymbol() {
|
||||
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,
|
||||
KtSymbolWithModality<KtSymbolModality>,
|
||||
KtSymbolWithVisibility,
|
||||
KtAnnotatedSymbol,
|
||||
KtSymbolWithMembers {
|
||||
abstract val classKind: KtClassKind
|
||||
KtNamedSymbol {
|
||||
|
||||
abstract val isInner: Boolean
|
||||
abstract val isData: Boolean
|
||||
@@ -50,13 +72,11 @@ abstract class KtClassOrObjectSymbol : KtClassLikeSymbol(),
|
||||
|
||||
abstract val isExternal: Boolean
|
||||
|
||||
abstract val companionObject: KtClassOrObjectSymbol?
|
||||
abstract val companionObject: KtNamedClassOrObjectSymbol?
|
||||
|
||||
abstract val superTypes: List<KtTypeAndAnnotations>
|
||||
|
||||
abstract override fun createPointer(): KtSymbolPointer<KtClassOrObjectSymbol>
|
||||
abstract override fun createPointer(): KtSymbolPointer<KtNamedClassOrObjectSymbol>
|
||||
}
|
||||
|
||||
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 getAnonymousObjectSymbol(psi: KtObjectLiteralExpression): KtAnonymousObjectSymbol
|
||||
abstract fun getClassOrObjectSymbol(psi: KtClassOrObject): KtClassOrObjectSymbol
|
||||
abstract fun getNamedClassOrObjectSymbol(psi: KtClassOrObject): KtNamedClassOrObjectSymbol
|
||||
abstract fun getPropertyAccessorSymbol(psi: KtPropertyAccessor): KtPropertyAccessorSymbol
|
||||
|
||||
abstract fun getClassOrObjectSymbolByClassId(classId: ClassId): KtClassOrObjectSymbol?
|
||||
@@ -86,6 +87,9 @@ interface KtSymbolProviderMixIn : KtAnalysisSessionMixIn {
|
||||
fun KtClassOrObject.getClassOrObjectSymbol(): KtClassOrObjectSymbol =
|
||||
analysisSession.symbolProvider.getClassOrObjectSymbol(this)
|
||||
|
||||
fun KtClassOrObject.getNamedClassOrObjectSymbol(): KtNamedClassOrObjectSymbol =
|
||||
analysisSession.symbolProvider.getNamedClassOrObjectSymbol(this)
|
||||
|
||||
fun KtPropertyAccessor.getPropertyAccessorSymbol(): KtPropertyAccessorSymbol =
|
||||
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.name.Name
|
||||
|
||||
interface KtNamedSymbol : KtSymbol {
|
||||
val name: Name
|
||||
interface KtPossiblyNamedSymbol : KtSymbol {
|
||||
val name: Name?
|
||||
}
|
||||
|
||||
interface KtNamedSymbol : KtPossiblyNamedSymbol {
|
||||
abstract override val name: Name
|
||||
}
|
||||
|
||||
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.frontend.api.fir.analyzeWithSymbolAsContext
|
||||
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.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.*
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.isPrivateOrPrivateToThis
|
||||
|
||||
internal class FirLightAnnotationClassSymbol(
|
||||
private val classOrObjectSymbol: KtClassOrObjectSymbol,
|
||||
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||
manager: PsiManager
|
||||
) : FirLightInterfaceOrAnnotationClassSymbol(classOrObjectSymbol, manager) {
|
||||
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.psi.debugText.getDebugText
|
||||
import org.jetbrains.kotlin.psi.stubs.KotlinClassOrObjectStub
|
||||
|
||||
internal abstract class FirLightClassForClassOrObjectSymbol(
|
||||
private val classOrObjectSymbol: KtClassOrObjectSymbol,
|
||||
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||
manager: PsiManager
|
||||
) : FirLightClassBase(manager),
|
||||
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
|
||||
|
||||
internal class FirLightClassForSymbol(
|
||||
private val classOrObjectSymbol: KtClassOrObjectSymbol,
|
||||
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||
manager: PsiManager
|
||||
) : 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.KtClassOrObjectSymbol
|
||||
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
|
||||
|
||||
internal class FirLightInterfaceClassSymbol(
|
||||
private val classOrObjectSymbol: KtClassOrObjectSymbol,
|
||||
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||
manager: PsiManager
|
||||
) : 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.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.KtSymbolKind
|
||||
|
||||
internal abstract class FirLightInterfaceOrAnnotationClassSymbol(
|
||||
private val classOrObjectSymbol: KtClassOrObjectSymbol,
|
||||
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||
manager: PsiManager
|
||||
) : FirLightClassForClassOrObjectSymbol(classOrObjectSymbol, manager) {
|
||||
|
||||
|
||||
+10
-8
@@ -68,11 +68,13 @@ fun createFirLightClassNoCache(classOrObject: KtClassOrObject): KtLightClass? =
|
||||
|
||||
else -> {
|
||||
analyze(classOrObject) {
|
||||
val symbol = classOrObject.getClassOrObjectSymbol()
|
||||
when (symbol.classKind) {
|
||||
KtClassKind.INTERFACE -> FirLightInterfaceClassSymbol(symbol, classOrObject.manager)
|
||||
KtClassKind.ANNOTATION_CLASS -> FirLightAnnotationClassSymbol(symbol, classOrObject.manager)
|
||||
else -> FirLightClassForSymbol(symbol, classOrObject.manager)
|
||||
when (val symbol = classOrObject.getClassOrObjectSymbol()) {
|
||||
is KtAnonymousObjectSymbol -> FirLightAnonymousClassForSymbol(symbol, classOrObject.manager)
|
||||
is KtNamedClassOrObjectSymbol -> when (symbol.classKind) {
|
||||
KtClassKind.INTERFACE -> FirLightInterfaceClassSymbol(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
|
||||
|
||||
analyzeWithSymbolAsContext(this) {
|
||||
getDeclaredMemberScope().getAllSymbols().filterIsInstance<KtClassOrObjectSymbol>().mapTo(result) {
|
||||
getDeclaredMemberScope().getAllSymbols().filterIsInstance<KtNamedClassOrObjectSymbol>().mapTo(result) {
|
||||
FirLightClassForSymbol(it, manager)
|
||||
}
|
||||
}
|
||||
@@ -332,8 +334,8 @@ internal fun KtSymbolWithMembers.createInnerClasses(manager: PsiManager): List<F
|
||||
@OptIn(HackToForceAllowRunningAnalyzeOnEDT::class)
|
||||
internal fun KtClassOrObject.checkIsInheritor(baseClassOrigin: KtClassOrObject, checkDeep: Boolean): Boolean {
|
||||
return analyze(this) {
|
||||
val thisSymbol = this@checkIsInheritor.getClassOrObjectSymbol()
|
||||
val baseSymbol = baseClassOrigin.getClassOrObjectSymbol()
|
||||
val thisSymbol = this@checkIsInheritor.getNamedClassOrObjectSymbol()
|
||||
val baseSymbol = baseClassOrigin.getNamedClassOrObjectSymbol()
|
||||
|
||||
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.elements.FirLightIdentifier
|
||||
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
|
||||
|
||||
internal class FirLightFieldForObjectSymbol(
|
||||
private val objectSymbol: KtClassOrObjectSymbol,
|
||||
private val objectSymbol: KtNamedClassOrObjectSymbol,
|
||||
containingClass: KtLightClass,
|
||||
private val name: String,
|
||||
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.withFirDeclaration
|
||||
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.types.KtFirType
|
||||
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)
|
||||
}
|
||||
|
||||
internal fun KtClassOrObjectSymbol.typeForClassSymbol(psiElement: PsiElement): PsiType {
|
||||
require(this is KtFirClassOrObjectSymbol)
|
||||
internal fun KtNamedClassOrObjectSymbol.typeForClassSymbol(psiElement: PsiElement): PsiType {
|
||||
require(this is KtFirSymbol<*>)
|
||||
|
||||
val types = analyzeWithSymbolAsContext(this) {
|
||||
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.intellij.openapi.project.Project
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
@@ -82,33 +83,50 @@ internal class KtSymbolByFirBuilder private constructor(
|
||||
}
|
||||
|
||||
|
||||
fun buildSymbol(fir: FirDeclaration): KtSymbol = symbolsCache.cache(fir) {
|
||||
when (fir) {
|
||||
is FirRegularClass -> buildClassSymbol(fir)
|
||||
fun buildSymbol(fir: FirDeclaration): KtSymbol {
|
||||
return when (fir) {
|
||||
is FirClassLikeDeclaration<*> -> buildClassLikeSymbol(fir)
|
||||
is FirSimpleFunction -> buildFunctionSymbol(fir)
|
||||
is FirProperty -> buildVariableSymbol(fir)
|
||||
is FirValueParameter -> buildParameterSymbol(fir)
|
||||
is FirConstructor -> buildConstructorSymbol(fir)
|
||||
is FirTypeParameter -> buildTypeParameterSymbol(fir)
|
||||
is FirTypeAlias -> buildTypeAliasSymbol(fir)
|
||||
is FirEnumEntry -> buildEnumEntrySymbol(fir)
|
||||
is FirField -> buildFieldSymbol(fir)
|
||||
is FirAnonymousFunction -> buildAnonymousFunctionSymbol(fir)
|
||||
is FirPropertyAccessor -> buildPropertyAccessorSymbol(fir)
|
||||
is FirAnonymousObject -> buildAnonymousObjectSymbol(fir)
|
||||
else ->
|
||||
TODO(fir::class.toString())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// TODO Handle all relevant cases
|
||||
fun buildCallableSymbol(fir: FirCallableDeclaration<*>): KtCallableSymbol = buildSymbol(fir) as KtCallableSymbol
|
||||
|
||||
fun buildClassLikeSymbol(fir: FirClassLikeDeclaration<*>): KtClassLikeSymbol = when (fir) {
|
||||
is FirRegularClass -> buildClassSymbol(fir)
|
||||
is FirTypeAlias -> buildTypeAliasSymbol(fir)
|
||||
else ->
|
||||
TODO(fir::class.toString())
|
||||
|
||||
fun buildClassLikeSymbol(fir: FirClassLikeDeclaration<*>): KtClassLikeSymbol {
|
||||
return when (fir) {
|
||||
is FirClass<*> -> buildClassOrObjectSymbol(fir)
|
||||
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) {
|
||||
@@ -118,10 +136,6 @@ internal class KtSymbolByFirBuilder private constructor(
|
||||
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
|
||||
// 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.KtSymbolByFirBuilder
|
||||
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.KtFirClassOrObjectSymbol
|
||||
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.KtFirNamedClassOrObjectSymbol
|
||||
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.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.KtPackageSymbol
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithDeclarations
|
||||
@@ -59,7 +61,7 @@ internal class KtFirScopeProvider(
|
||||
private val packageMemberScopeCache = IdentityHashMap<KtPackageSymbol, KtPackageScope>()
|
||||
|
||||
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 KtFirEnumEntrySymbol -> firRef.withFir(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) {
|
||||
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.components.KtSymbolDeclarationOverridesProvider
|
||||
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.symbols.*
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithKind
|
||||
@@ -92,13 +92,13 @@ internal class KtFirSymbolDeclarationOverridesProvider(
|
||||
val containingDeclaration = with(analysisSession) {
|
||||
(callableSymbol as? KtSymbolWithKind)?.getContainingSymbol() as? KtClassOrObjectSymbol
|
||||
} ?: return
|
||||
check(containingDeclaration is KtFirClassOrObjectSymbol)
|
||||
check(containingDeclaration is KtFirNamedClassOrObjectSymbol)
|
||||
|
||||
processOverrides(containingDeclaration, callableSymbol, process)
|
||||
}
|
||||
|
||||
private inline fun processOverrides(
|
||||
containingDeclaration: KtFirClassOrObjectSymbol,
|
||||
containingDeclaration: KtFirNamedClassOrObjectSymbol,
|
||||
callableSymbol: KtFirSymbol<*>,
|
||||
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.KtTypeProvider
|
||||
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.PublicTypeApproximator
|
||||
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.types.TypeApproximatorConfiguration
|
||||
|
||||
@@ -40,8 +41,8 @@ internal class KtFirTypeProvider(
|
||||
}
|
||||
|
||||
|
||||
override fun buildSelfClassType(symbol: KtClassOrObjectSymbol): KtType {
|
||||
require(symbol is KtFirClassOrObjectSymbol)
|
||||
override fun buildSelfClassType(symbol: KtNamedClassOrObjectSymbol): KtType {
|
||||
require(symbol is KtFirNamedClassOrObjectSymbol)
|
||||
val type = symbol.firRef.withFir(FirResolvePhase.SUPER_TYPES) { firClass ->
|
||||
ConeClassLikeTypeImpl(
|
||||
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.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
internal class KtFirAnonymousObjectSymbol(
|
||||
fir: FirAnonymousObject,
|
||||
@@ -34,7 +35,6 @@ internal class KtFirAnonymousObjectSymbol(
|
||||
) : KtAnonymousObjectSymbol(), KtFirSymbol<FirAnonymousObject> {
|
||||
private val builder by weakRef(_builder)
|
||||
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 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.getAnnotationClassIds
|
||||
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.firRef
|
||||
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.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.pointers.CanNotCreateSymbolPointerForLocalLibraryDeclarationException
|
||||
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.Name
|
||||
|
||||
internal class KtFirClassOrObjectSymbol(
|
||||
internal class KtFirNamedClassOrObjectSymbol(
|
||||
fir: FirRegularClass,
|
||||
resolveState: FirModuleResolveState,
|
||||
override val token: ValidityToken,
|
||||
_builder: KtSymbolByFirBuilder
|
||||
) : KtClassOrObjectSymbol(), KtFirSymbol<FirRegularClass> {
|
||||
) : KtNamedClassOrObjectSymbol(), KtFirSymbol<FirRegularClass> {
|
||||
private val builder by weakRef(_builder)
|
||||
override val firRef = firRef(fir, resolveState)
|
||||
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?
|
||||
get() = firRef.withFir { fir ->
|
||||
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 companionObject: KtClassOrObjectSymbol? by firRef.withFirAndCache(FirResolvePhase.RAW_FIR) { fir ->
|
||||
fir.companionObject?.let { builder.buildClassSymbol(it) }
|
||||
override val companionObject: KtFirNamedClassOrObjectSymbol? by firRef.withFirAndCache { fir ->
|
||||
fir.companionObject?.let { builder.buildNamedClassOrObjectSymbol(it) }
|
||||
}
|
||||
|
||||
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 }
|
||||
if (symbolKind == KtSymbolKind.LOCAL) {
|
||||
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 {
|
||||
check(psi !is KtObjectDeclaration || psi.parent !is KtObjectLiteralExpression)
|
||||
psi.withFirDeclarationOfType<FirRegularClass, KtClassOrObjectSymbol>(resolveState) {
|
||||
firSymbolBuilder.buildClassSymbol(it)
|
||||
psi.withFirDeclarationOfType<FirClass<*>, KtClassOrObjectSymbol>(resolveState) {
|
||||
firSymbolBuilder.buildClassOrObjectSymbol(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 {
|
||||
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> {
|
||||
|
||||
+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.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.KtNamedClassOrObjectSymbol
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
class KtFirClassOrObjectInLibrarySymbol(private val classId: ClassId) : KtSymbolPointer<KtClassOrObjectSymbol>() {
|
||||
override fun restoreSymbol(analysisSession: KtAnalysisSession): KtClassOrObjectSymbol? {
|
||||
class KtFirClassOrObjectInLibrarySymbolPointer(private val classId: ClassId) : KtSymbolPointer<KtNamedClassOrObjectSymbol>() {
|
||||
override fun restoreSymbol(analysisSession: KtAnalysisSession): KtNamedClassOrObjectSymbol? {
|
||||
require(analysisSession is KtFirAnalysisSession)
|
||||
val firClass = analysisSession.firSymbolBuilder.buildClassLikeSymbolByClassId(
|
||||
classId
|
||||
) ?: return null
|
||||
return analysisSession.firSymbolBuilder.buildClassSymbol(firClass)
|
||||
val firClass = analysisSession.firSymbolBuilder.buildClassLikeSymbolByClassId(classId) ?: return null
|
||||
return analysisSession.firSymbolBuilder.buildNamedClassOrObjectSymbol(firClass)
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.idea.references
|
||||
import com.intellij.psi.PsiElement
|
||||
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.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.KtSymbol
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
@@ -30,7 +30,7 @@ internal class KtFirSimpleNameReference(
|
||||
if (resultsToFix.isEmpty() || !isAnnotationCall) return resultsToFix
|
||||
|
||||
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
|
||||
} else targetSymbol
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ CLASSIFIER NAMES:
|
||||
[C, I]
|
||||
|
||||
CLASSIFIER SYMBOLS:
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: C
|
||||
@@ -76,7 +76,7 @@ KtFirClassOrObjectSymbol:
|
||||
typeParameters: []
|
||||
visibility: PUBLIC
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: I
|
||||
|
||||
@@ -1282,7 +1282,7 @@ KtFirFunctionSymbol:
|
||||
valueParameters: []
|
||||
visibility: PUBLIC
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: kotlin/Int.Companion
|
||||
|
||||
@@ -1231,7 +1231,7 @@ KtFirFunctionSymbol:
|
||||
valueParameters: [KtFirFunctionValueParameterSymbol(index)]
|
||||
visibility: PUBLIC
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: java/lang/String.CaseInsensitiveComparator
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
class: kotlin/Lazy
|
||||
|
||||
// SYMBOLS:
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: kotlin/Lazy
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
class: java/lang/String
|
||||
|
||||
// SYMBOLS:
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: java/lang/String
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class: kotlin/collections/MutableMap.MutableEntry
|
||||
|
||||
// SYMBOLS:
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: kotlin/collections/MutableMap.MutableEntry
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ class A {
|
||||
}
|
||||
|
||||
// SYMBOLS:
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: A
|
||||
|
||||
@@ -15,7 +15,7 @@ KtFirConstructorSymbol:
|
||||
valueParameters: []
|
||||
visibility: PUBLIC
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
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
|
||||
visibility: PUBLIC
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: A
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ KtFirEnumEntrySymbol:
|
||||
origin: SOURCE
|
||||
symbolKind: MEMBER
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: X
|
||||
|
||||
@@ -46,7 +46,7 @@ KtFirFunctionSymbol:
|
||||
valueParameters: []
|
||||
visibility: PUBLIC
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: A
|
||||
|
||||
@@ -66,7 +66,7 @@ KtFirKotlinPropertySymbol:
|
||||
symbolKind: MEMBER
|
||||
visibility: PUBLIC
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: A
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class: kotlin/collections/Iterator
|
||||
|
||||
// SYMBOLS:
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: kotlin/collections/Iterator
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class: kotlin/io/FileWalkDirection
|
||||
|
||||
// SYMBOLS:
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
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
|
||||
visibility: PUBLIC
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: Anno
|
||||
@@ -84,7 +84,7 @@ KtFirFunctionSymbol:
|
||||
valueParameters: []
|
||||
visibility: PUBLIC
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: [Anno]
|
||||
annotations: [Anno(param1 = param, param2 = 2)]
|
||||
classIdIfNonLocal: X
|
||||
|
||||
@@ -57,6 +57,9 @@ KtFirKotlinPropertySymbol:
|
||||
KtFirAnonymousObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: null
|
||||
classKind: ANONYMOUS_OBJECT
|
||||
name: null
|
||||
origin: SOURCE
|
||||
superTypes: [[] java/lang/Runnable]
|
||||
symbolKind: LOCAL
|
||||
@@ -85,7 +88,7 @@ KtFirKotlinPropertySymbol:
|
||||
symbolKind: MEMBER
|
||||
visibility: PUBLIC
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: AnonymousContainer
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ class A {
|
||||
|
||||
// SYMBOLS:
|
||||
/*
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: A
|
||||
|
||||
@@ -50,7 +50,7 @@ KtFirFunctionSymbol:
|
||||
valueParameters: []
|
||||
visibility: PUBLIC
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: A
|
||||
|
||||
@@ -17,7 +17,7 @@ KtFirTypeParameterSymbol:
|
||||
upperBounds: [kotlin/Any?]
|
||||
variance: INVARIANT
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: A
|
||||
|
||||
@@ -35,7 +35,7 @@ KtFirFunctionSymbol:
|
||||
valueParameters: []
|
||||
visibility: LOCAL
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: null
|
||||
|
||||
@@ -17,7 +17,7 @@ class X : @Anno1 I {
|
||||
|
||||
// SYMBOLS:
|
||||
/*
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: [kotlin/annotation/Target]
|
||||
annotations: [kotlin/annotation/Target(allowedTargets = KtUnsupportedConstantValue)]
|
||||
classIdIfNonLocal: Anno1
|
||||
@@ -36,7 +36,7 @@ KtFirClassOrObjectSymbol:
|
||||
typeParameters: []
|
||||
visibility: PUBLIC
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: [kotlin/annotation/Target]
|
||||
annotations: [kotlin/annotation/Target(allowedTargets = KtUnsupportedConstantValue)]
|
||||
classIdIfNonLocal: Anno2
|
||||
@@ -55,7 +55,7 @@ KtFirClassOrObjectSymbol:
|
||||
typeParameters: []
|
||||
visibility: PUBLIC
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: [kotlin/annotation/Target]
|
||||
annotations: [kotlin/annotation/Target(allowedTargets = KtUnsupportedConstantValue)]
|
||||
classIdIfNonLocal: Anno3
|
||||
@@ -74,7 +74,7 @@ KtFirClassOrObjectSymbol:
|
||||
typeParameters: []
|
||||
visibility: PUBLIC
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: [kotlin/annotation/Target]
|
||||
annotations: [kotlin/annotation/Target(allowedTargets = KtUnsupportedConstantValue)]
|
||||
classIdIfNonLocal: Anno4
|
||||
@@ -93,7 +93,7 @@ KtFirClassOrObjectSymbol:
|
||||
typeParameters: []
|
||||
visibility: PUBLIC
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: I
|
||||
@@ -167,7 +167,7 @@ KtFirKotlinPropertySymbol:
|
||||
symbolKind: MEMBER
|
||||
visibility: PUBLIC
|
||||
|
||||
KtFirClassOrObjectSymbol:
|
||||
KtFirNamedClassOrObjectSymbol:
|
||||
annotationClassIds: []
|
||||
annotations: []
|
||||
classIdIfNonLocal: X
|
||||
|
||||
Reference in New Issue
Block a user