[FIR] Rename getClassLikeSymbolFqName to getClassLikeSymbolByClassId

This commit is contained in:
Ivan Kochurkin
2021-09-07 18:28:19 +03:00
committed by TeamCityServer
parent 69a13a3269
commit ee37768808
57 changed files with 76 additions and 76 deletions
@@ -42,7 +42,7 @@ abstract class AbstractFirLoadBinariesTest : AbstractFirResolveWithSessionTestCa
} }
for (name in declarationNames) { for (name in declarationNames) {
val classLikeSymbol = provider.getClassLikeSymbolByFqName(ClassId.topLevel(packageFqName.child(name))) ?: continue val classLikeSymbol = provider.getClassLikeSymbolByClassId(ClassId.topLevel(packageFqName.child(name))) ?: continue
classLikeSymbol.fir.accept(firRenderer) classLikeSymbol.fir.accept(firRenderer)
builder.appendLine() builder.appendLine()
} }
@@ -148,7 +148,7 @@ abstract class AbstractFirTypeEnhancementTest : KtUsefulTestCase() {
val processedJavaClasses = mutableSetOf<FirJavaClass>() val processedJavaClasses = mutableSetOf<FirJavaClass>()
fun processClassWithChildren(psiClass: PsiClass, parentFqName: FqName) { fun processClassWithChildren(psiClass: PsiClass, parentFqName: FqName) {
val classId = psiClass.classId(parentFqName) val classId = psiClass.classId(parentFqName)
val javaClass = javaProvider.getClassLikeSymbolByFqName(classId)?.fir val javaClass = javaProvider.getClassLikeSymbolByClassId(classId)?.fir
?: throw AssertionError(classId.asString()) ?: throw AssertionError(classId.asString())
if (javaClass !is FirJavaClass || javaClass in processedJavaClasses) { if (javaClass !is FirJavaClass || javaClass in processedJavaClasses) {
return return
@@ -32,7 +32,7 @@ object FirInterfaceDefaultMethodCallChecker : FirQualifiedAccessExpressionChecke
val symbol = expression.calleeReference.toResolvedCallableSymbol() val symbol = expression.calleeReference.toResolvedCallableSymbol()
val classId = symbol?.callableId?.classId ?: return val classId = symbol?.callableId?.classId ?: return
if (classId.isLocal) return if (classId.isLocal) return
val typeSymbol = context.session.symbolProvider.getClassLikeSymbolByFqName(classId) as? FirRegularClassSymbol ?: return val typeSymbol = context.session.symbolProvider.getClassLikeSymbolByClassId(classId) as? FirRegularClassSymbol ?: return
if (!supportsDefaults && if (!supportsDefaults &&
symbol.isStatic && symbol.isStatic &&
@@ -117,7 +117,7 @@ fun checkRepeatedAnnotation(
fun FirAnnotationCall.isRepeatable(session: FirSession): Boolean { fun FirAnnotationCall.isRepeatable(session: FirSession): Boolean {
val annotationClassId = this.toAnnotationClassId() ?: return false val annotationClassId = this.toAnnotationClassId() ?: return false
if (annotationClassId.isLocal) return false if (annotationClassId.isLocal) return false
val annotationClass = session.symbolProvider.getClassLikeSymbolByFqName(annotationClassId) ?: return false val annotationClass = session.symbolProvider.getClassLikeSymbolByClassId(annotationClassId) ?: return false
return annotationClass.containsRepeatableAnnotation(session) return annotationClass.containsRepeatableAnnotation(session)
} }
@@ -132,7 +132,7 @@ fun FirBasedSymbol<*>.getContainingClassSymbol(session: FirSession): FirClassLik
fun FirClassLikeSymbol<*>.outerClassSymbol(context: CheckerContext): FirClassLikeSymbol<*>? { fun FirClassLikeSymbol<*>.outerClassSymbol(context: CheckerContext): FirClassLikeSymbol<*>? {
if (this !is FirClassSymbol<*>) return null if (this !is FirClassSymbol<*>) return null
val outerClassId = classId.outerClassId ?: return null val outerClassId = classId.outerClassId ?: return null
return context.session.symbolProvider.getClassLikeSymbolByFqName(outerClassId) return context.session.symbolProvider.getClassLikeSymbolByClassId(outerClassId)
} }
/** /**
@@ -85,7 +85,7 @@ private fun FirAnnotatedDeclaration.getOwnSinceKotlinVersion(session: FirSession
if (this is FirConstructor) { if (this is FirConstructor) {
val classId = symbol.callableId.classId val classId = symbol.callableId.classId
if (classId != null) { if (classId != null) {
val classSymbol = session.symbolProvider.getClassLikeSymbolByFqName(classId) val classSymbol = session.symbolProvider.getClassLikeSymbolByClassId(classId)
classSymbol?.consider() classSymbol?.consider()
} }
} }
@@ -47,10 +47,10 @@ object FirExpectActualResolver {
var actualContainingClass: FirRegularClassSymbol? = null var actualContainingClass: FirRegularClassSymbol? = null
val candidates = when { val candidates = when {
classId != null -> { classId != null -> {
expectContainingClass = useSiteSession.dependenciesSymbolProvider.getClassLikeSymbolByFqName(classId)?.let { expectContainingClass = useSiteSession.dependenciesSymbolProvider.getClassLikeSymbolByClassId(classId)?.let {
it.fullyExpandedClass(it.moduleData.session) it.fullyExpandedClass(it.moduleData.session)
} }
actualContainingClass = useSiteSession.symbolProvider.getClassLikeSymbolByFqName(classId) actualContainingClass = useSiteSession.symbolProvider.getClassLikeSymbolByClassId(classId)
?.fullyExpandedClass(useSiteSession) ?.fullyExpandedClass(useSiteSession)
val expectTypeParameters = expectContainingClass?.typeParameterSymbols.orEmpty() val expectTypeParameters = expectContainingClass?.typeParameterSymbols.orEmpty()
@@ -87,7 +87,7 @@ object FirExpectActualResolver {
} }
is FirClassLikeSymbol<*> -> { is FirClassLikeSymbol<*> -> {
val expectClassSymbol = useSiteSession.dependenciesSymbolProvider val expectClassSymbol = useSiteSession.dependenciesSymbolProvider
.getClassLikeSymbolByFqName(actualSymbol.classId) as? FirRegularClassSymbol ?: return null .getClassLikeSymbolByClassId(actualSymbol.classId) as? FirRegularClassSymbol ?: return null
val compatibility = areCompatibleClassifiers(expectClassSymbol, actualSymbol, useSiteSession, scopeSession) val compatibility = areCompatibleClassifiers(expectClassSymbol, actualSymbol, useSiteSession, scopeSession)
mapOf(compatibility to listOf(expectClassSymbol)) mapOf(compatibility to listOf(expectClassSymbol))
} }
@@ -134,7 +134,7 @@ object FirImportsChecker : FirFileChecker() {
} }
private fun ClassId.resolveToClass(context: CheckerContext): FirRegularClassSymbol? { private fun ClassId.resolveToClass(context: CheckerContext): FirRegularClassSymbol? {
val classSymbol = context.session.symbolProvider.getClassLikeSymbolByFqName(this) ?: return null val classSymbol = context.session.symbolProvider.getClassLikeSymbolByClassId(this) ?: return null
return when (classSymbol) { return when (classSymbol) {
is FirRegularClassSymbol -> classSymbol is FirRegularClassSymbol -> classSymbol
is FirTypeAliasSymbol -> classSymbol.fullyExpandedClass(context.session) is FirTypeAliasSymbol -> classSymbol.fullyExpandedClass(context.session)
@@ -39,7 +39,7 @@ object FirSealedSupertypeChecker : FirClassChecker() {
continue continue
} }
val superClass = context.session.symbolProvider.getClassLikeSymbolByFqName(superClassId) as? FirRegularClassSymbol ?: continue val superClass = context.session.symbolProvider.getClassLikeSymbolByClassId(superClassId) as? FirRegularClassSymbol ?: continue
if (!superClass.isSealed) continue if (!superClass.isSealed) continue
if (superClass.origin == FirDeclarationOrigin.Java) { if (superClass.origin == FirDeclarationOrigin.Java) {
@@ -65,7 +65,7 @@ object FirSealedSupertypeChecker : FirClassChecker() {
continue continue
} }
val classSymbol = context.session.symbolProvider.getClassLikeSymbolByFqName(classId) as? FirRegularClassSymbol ?: continue val classSymbol = context.session.symbolProvider.getClassLikeSymbolByClassId(classId) as? FirRegularClassSymbol ?: continue
if (classSymbol.modality == Modality.SEALED) { if (classSymbol.modality == Modality.SEALED) {
reporter.reportOn(it.source, FirErrors.SEALED_SUPERTYPE_IN_LOCAL_CLASS, context) reporter.reportOn(it.source, FirErrors.SEALED_SUPERTYPE_IN_LOCAL_CLASS, context)
@@ -213,7 +213,7 @@ abstract class AbstractFirDeserializedSymbolsProvider(
destination += propertyCache.getValue(CallableId(packageFqName, name)) destination += propertyCache.getValue(CallableId(packageFqName, name))
} }
override fun getClassLikeSymbolByFqName(classId: ClassId): FirClassLikeSymbol<*>? { override fun getClassLikeSymbolByClassId(classId: ClassId): FirClassLikeSymbol<*>? {
return getClass(classId) ?: getTypeAlias(classId) return getClass(classId) ?: getTypeAlias(classId)
} }
@@ -72,9 +72,9 @@ open class FirBuiltinSymbolProvider(
return null return null
} }
override fun getClassLikeSymbolByFqName(classId: ClassId): FirRegularClassSymbol? { override fun getClassLikeSymbolByClassId(classId: ClassId): FirRegularClassSymbol? {
return allPackageFragments[classId.packageFqName]?.firstNotNullOfOrNull { return allPackageFragments[classId.packageFqName]?.firstNotNullOfOrNull {
it.getClassLikeSymbolByFqName(classId) it.getClassLikeSymbolByClassId(classId)
} ?: syntheticFunctionalInterfaceCache.tryGetSyntheticFunctionalInterface(classId) } ?: syntheticFunctionalInterfaceCache.tryGetSyntheticFunctionalInterface(classId)
} }
@@ -139,7 +139,7 @@ open class FirBuiltinSymbolProvider(
) )
} }
fun getClassLikeSymbolByFqName(classId: ClassId): FirRegularClassSymbol? = fun getClassLikeSymbolByClassId(classId: ClassId): FirRegularClassSymbol? =
findAndDeserializeClass(classId) findAndDeserializeClass(classId)
private fun findAndDeserializeClass( private fun findAndDeserializeClass(
@@ -964,7 +964,7 @@ class FirElementSerializer private constructor(
): FirElementSerializer { ): FirElementSerializer {
val parentClassId = klass.symbol.classId.outerClassId val parentClassId = klass.symbol.classId.outerClassId
val parent = if (parentClassId != null && !parentClassId.isLocal) { val parent = if (parentClassId != null && !parentClassId.isLocal) {
val parentClass = session.symbolProvider.getClassLikeSymbolByFqName(parentClassId)!!.fir as FirRegularClass val parentClass = session.symbolProvider.getClassLikeSymbolByClassId(parentClassId)!!.fir as FirRegularClass
parentSerializer ?: create(session, scopeSession, parentClass, extension, null, typeApproximator) parentSerializer ?: create(session, scopeSession, parentClass, extension, null, typeApproximator)
} else { } else {
createTopLevel(session, scopeSession, extension, typeApproximator) createTopLevel(session, scopeSession, extension, typeApproximator)
@@ -138,7 +138,7 @@ internal class KClassValue(value: Value) : ConstantValue<KClassValue.Value>(valu
is Value.LocalClass -> return value.type is Value.LocalClass -> return value.type
is Value.NormalClass -> { is Value.NormalClass -> {
val (classId, arrayDimensions) = value.value val (classId, arrayDimensions) = value.value
val klass = session.symbolProvider.getClassLikeSymbolByFqName(classId)?.fir as? FirRegularClass ?: return null val klass = session.symbolProvider.getClassLikeSymbolByClassId(classId)?.fir as? FirRegularClass ?: return null
var type: ConeKotlinType = klass.defaultType().replaceArgumentsWithStarProjections() var type: ConeKotlinType = klass.defaultType().replaceArgumentsWithStarProjections()
repeat(arrayDimensions) { repeat(arrayDimensions) {
type = type.createArrayType() type = type.createArrayType()
@@ -19,7 +19,7 @@ class FirJvmBackendClassResolver(val components: Fir2IrComponents) : JvmBackendC
override fun resolveToClassDescriptors(type: Type): List<ClassDescriptor> { override fun resolveToClassDescriptors(type: Type): List<ClassDescriptor> {
if (type.sort != Type.OBJECT) return emptyList() if (type.sort != Type.OBJECT) return emptyList()
val symbol = components.session.symbolProvider.getClassLikeSymbolByFqName(type.classId) ?: return emptyList() val symbol = components.session.symbolProvider.getClassLikeSymbolByClassId(type.classId) ?: return emptyList()
require(symbol is FirClassSymbol<*>) require(symbol is FirClassSymbol<*>)
return listOf(components.classifierStorage.getIrClassSymbol(symbol).descriptor) return listOf(components.classifierStorage.getIrClassSymbol(symbol).descriptor)
} }
@@ -88,7 +88,7 @@ open class FirJvmMangleComputer(
else -> return else -> return
} }
if (parentClassId != null && !parentClassId.isLocal) { if (parentClassId != null && !parentClassId.isLocal) {
val parentClassLike = this@FirJvmMangleComputer.session.symbolProvider.getClassLikeSymbolByFqName(parentClassId)?.fir val parentClassLike = this@FirJvmMangleComputer.session.symbolProvider.getClassLikeSymbolByClassId(parentClassId)?.fir
?: error("Attempt to find parent ($parentClassId) for probably-local declaration!") ?: error("Attempt to find parent ($parentClassId) for probably-local declaration!")
if (parentClassLike is FirRegularClass || parentClassLike is FirTypeAlias) { if (parentClassLike is FirRegularClass || parentClassLike is FirTypeAlias) {
parentClassLike.accept(this@FirJvmMangleComputer, false) parentClassLike.accept(this@FirJvmMangleComputer, false)
@@ -108,7 +108,7 @@ class FirJvmTypeMapper(val session: FirSession) : TypeMappingContext<JvmSignatur
private fun ConeClassLikeType.parentClassOrNull(): FirRegularClassSymbol? { private fun ConeClassLikeType.parentClassOrNull(): FirRegularClassSymbol? {
val parentClassId = classId?.outerClassId ?: return null val parentClassId = classId?.outerClassId ?: return null
return session.symbolProvider.getClassLikeSymbolByFqName(parentClassId) as? FirRegularClassSymbol? return session.symbolProvider.getClassLikeSymbolByClassId(parentClassId) as? FirRegularClassSymbol?
} }
private fun ConeClassLikeType.buildPossiblyInnerType(classifier: FirRegularClassSymbol?, index: Int): PossiblyInnerConeType? { private fun ConeClassLikeType.buildPossiblyInnerType(classifier: FirRegularClassSymbol?, index: Int): PossiblyInnerConeType? {
@@ -256,12 +256,12 @@ class ConeTypeSystemCommonBackendContextForTypeMapping(
} }
override fun continuationTypeConstructor(): ConeClassLikeLookupTag { override fun continuationTypeConstructor(): ConeClassLikeLookupTag {
return symbolProvider.getClassLikeSymbolByFqName(StandardClassIds.Continuation)?.toLookupTag() return symbolProvider.getClassLikeSymbolByClassId(StandardClassIds.Continuation)?.toLookupTag()
?: error("Continuation class not found") ?: error("Continuation class not found")
} }
override fun functionNTypeConstructor(n: Int): TypeConstructorMarker { override fun functionNTypeConstructor(n: Int): TypeConstructorMarker {
return symbolProvider.getClassLikeSymbolByFqName(StandardClassIds.FunctionN(n))?.toLookupTag() return symbolProvider.getClassLikeSymbolByClassId(StandardClassIds.FunctionN(n))?.toLookupTag()
?: error("Function$n class not found") ?: error("Function$n class not found")
} }
} }
@@ -38,7 +38,7 @@ class Fir2IrBuiltIns(
flexibleNullabilityAnnotationSymbol?.toConstructorCall() flexibleNullabilityAnnotationSymbol?.toConstructorCall()
private fun annotationSymbolById(id: ClassId): IrClassSymbol? = private fun annotationSymbolById(id: ClassId): IrClassSymbol? =
provider?.getClassSymbolById(id) ?: session.symbolProvider.getClassLikeSymbolByFqName(id)?.toSymbol( provider?.getClassSymbolById(id) ?: session.symbolProvider.getClassLikeSymbolByClassId(id)?.toSymbol(
session, classifierStorage, ConversionTypeContext.DEFAULT session, classifierStorage, ConversionTypeContext.DEFAULT
) as? IrClassSymbol ) as? IrClassSymbol
@@ -449,7 +449,7 @@ class Fir2IrClassifierStorage(
firClass as FirRegularClass firClass as FirRegularClass
val classId = firClassSymbol.classId val classId = firClassSymbol.classId
val parentId = classId.outerClassId val parentId = classId.outerClassId
val parentClass = parentId?.let { session.symbolProvider.getClassLikeSymbolByFqName(it) } val parentClass = parentId?.let { session.symbolProvider.getClassLikeSymbolByClassId(it) }
val irParent = declarationStorage.findIrParent(classId.packageFqName, parentClass?.toLookupTag(), firClassSymbol)!! val irParent = declarationStorage.findIrParent(classId.packageFqName, parentClass?.toLookupTag(), firClassSymbol)!!
val symbol = Fir2IrClassSymbol(signature) val symbol = Fir2IrClassSymbol(signature)
val irClass = firClass.convertWithOffsets { startOffset, endOffset -> val irClass = firClass.convertWithOffsets { startOffset, endOffset ->
@@ -675,7 +675,7 @@ class IrBuiltInsOverFir(
referenceClassByClassId(ClassId(packageName, Name.identifier(identifier))) referenceClassByClassId(ClassId(packageName, Name.identifier(identifier)))
private fun referenceClassByClassId(classId: ClassId): IrClassSymbol? { private fun referenceClassByClassId(classId: ClassId): IrClassSymbol? {
val firSymbol = components.session.symbolProvider.getClassLikeSymbolByFqName(classId) ?: return null val firSymbol = components.session.symbolProvider.getClassLikeSymbolByClassId(classId) ?: return null
val firClassSymbol = firSymbol as? FirClassSymbol ?: return null val firClassSymbol = firSymbol as? FirClassSymbol ?: return null
return components.classifierStorage.getIrClassSymbol(firClassSymbol) return components.classifierStorage.getIrClassSymbol(firClassSymbol)
} }
@@ -131,7 +131,7 @@ class JavaSymbolProvider(
private fun List<JavaTypeParameter>.convertTypeParameters(stack: JavaTypeParameterStack): List<FirTypeParameter> = private fun List<JavaTypeParameter>.convertTypeParameters(stack: JavaTypeParameterStack): List<FirTypeParameter> =
map { it.toFirTypeParameter(stack) } map { it.toFirTypeParameter(stack) }
override fun getClassLikeSymbolByFqName(classId: ClassId): FirRegularClassSymbol? { override fun getClassLikeSymbolByClassId(classId: ClassId): FirRegularClassSymbol? {
return try { return try {
if (!hasTopLevelClassOf(classId)) return null if (!hasTopLevelClassOf(classId)) return null
getFirJavaClass(classId) getFirJavaClass(classId)
@@ -167,7 +167,7 @@ class JavaSymbolProvider(
val javaTypeParameterStack = JavaTypeParameterStack() val javaTypeParameterStack = JavaTypeParameterStack()
val outerClassId = classId.outerClassId val outerClassId = classId.outerClassId
val parentClassSymbol = if (outerClassId != null) { val parentClassSymbol = if (outerClassId != null) {
getClassLikeSymbolByFqName(outerClassId) getClassLikeSymbolByClassId(outerClassId)
} else null } else null
@@ -134,7 +134,7 @@ private fun buildArgumentMapping(
if (annotationArguments.none { it.name != null }) { if (annotationArguments.none { it.name != null }) {
return null return null
} }
val annotationClassSymbol = session.symbolProvider.getClassLikeSymbolByFqName(lookupTag.classId).also { val annotationClassSymbol = session.symbolProvider.getClassLikeSymbolByClassId(lookupTag.classId).also {
lookupTag.bindSymbolToLookupTag(session, it) lookupTag.bindSymbolToLookupTag(session, it)
} ?: return null } ?: return null
val annotationConstructor = val annotationConstructor =
@@ -54,7 +54,7 @@ class FirAnnotationTypeQualifierResolver(
val classId = firClass.symbol.classId val classId = firClass.symbol.classId
val outerClassId = classId.outerClassId val outerClassId = classId.outerClassId
val parentQualifiers = if (outerClassId != null) { val parentQualifiers = if (outerClassId != null) {
(session.symbolProvider.getClassLikeSymbolByFqName(outerClassId)?.fir as? FirRegularClass) (session.symbolProvider.getClassLikeSymbolByClassId(outerClassId)?.fir as? FirRegularClass)
?.let { extractDefaultQualifiers(it) } ?.let { extractDefaultQualifiers(it) }
} else { } else {
val forModule = javaModuleAnnotationsProvider.getAnnotationsForModuleOwnerOfClass(classId) val forModule = javaModuleAnnotationsProvider.getAnnotationsForModuleOwnerOfClass(classId)
@@ -15,6 +15,6 @@ import org.jetbrains.kotlin.fir.declarations.FirRegularClass
class FirJavaClassMapper(private val session: FirSession) : FirPlatformClassMapper() { class FirJavaClassMapper(private val session: FirSession) : FirPlatformClassMapper() {
override fun getCorrespondingPlatformClass(declaration: FirClassLikeDeclaration): FirRegularClass? { override fun getCorrespondingPlatformClass(declaration: FirClassLikeDeclaration): FirRegularClass? {
val javaClassId = JavaToKotlinClassMap.mapKotlinToJava(declaration.symbol.classId.asSingleFqName().toUnsafe()) val javaClassId = JavaToKotlinClassMap.mapKotlinToJava(declaration.symbol.classId.asSingleFqName().toUnsafe())
return javaClassId?.let { session.symbolProvider.getClassLikeSymbolByFqName(it)?.fir } as? FirRegularClass return javaClassId?.let { session.symbolProvider.getClassLikeSymbolByClassId(it)?.fir } as? FirRegularClass
} }
} }
@@ -31,7 +31,7 @@ fun wrapScopeWithJvmMapped(
val javaClassId = JavaToKotlinClassMap.mapKotlinToJava(kotlinUnsafeFqName) val javaClassId = JavaToKotlinClassMap.mapKotlinToJava(kotlinUnsafeFqName)
?: return declaredMemberScope ?: return declaredMemberScope
val symbolProvider = useSiteSession.symbolProvider val symbolProvider = useSiteSession.symbolProvider
val javaClass = symbolProvider.getClassLikeSymbolByFqName(javaClassId)?.fir as? FirRegularClass val javaClass = symbolProvider.getClassLikeSymbolByClassId(javaClassId)?.fir as? FirRegularClass
?: return declaredMemberScope ?: return declaredMemberScope
val preparedSignatures = JvmMappedScope.prepareSignatures(javaClass, JavaToKotlinClassMap.isMutable(kotlinUnsafeFqName)) val preparedSignatures = JvmMappedScope.prepareSignatures(javaClass, JavaToKotlinClassMap.isMutable(kotlinUnsafeFqName))
return if (preparedSignatures.isNotEmpty()) { return if (preparedSignatures.isNotEmpty()) {
@@ -24,7 +24,7 @@ class FirOuterClassManager(
val classId = classSymbol.classId val classId = classSymbol.classId
if (classId.isLocal) return outerLocalClassForNested[classSymbol] if (classId.isLocal) return outerLocalClassForNested[classSymbol]
val outerClassId = classId.outerClassId ?: return null val outerClassId = classId.outerClassId ?: return null
return symbolProvider.getClassLikeSymbolByFqName(outerClassId) return symbolProvider.getClassLikeSymbolByClassId(outerClassId)
} }
fun outerType(classLikeType: ConeClassLikeType): ConeClassLikeType? { fun outerType(classLikeType: ConeClassLikeType): ConeClassLikeType? {
@@ -29,7 +29,7 @@ fun ConeClassLikeLookupTag.toSymbol(useSiteSession: FirSession): FirClassLikeSym
val firSymbolProvider = useSiteSession.symbolProvider val firSymbolProvider = useSiteSession.symbolProvider
(this as? ConeClassLikeLookupTagImpl)?.boundSymbol?.takeIf { it.first === useSiteSession }?.let { return it.second } (this as? ConeClassLikeLookupTagImpl)?.boundSymbol?.takeIf { it.first === useSiteSession }?.let { return it.second }
return firSymbolProvider.getClassLikeSymbolByFqName(classId).also { return firSymbolProvider.getClassLikeSymbolByClassId(classId).also {
(this as? ConeClassLikeLookupTagImpl)?.bindSymbolToLookupTag(useSiteSession, it) (this as? ConeClassLikeLookupTagImpl)?.bindSymbolToLookupTag(useSiteSession, it)
} }
} }
@@ -393,7 +393,7 @@ fun FirAnnotationCall.getCorrespondingClassSymbolOrNull(session: FirSession): Fi
// TODO: How to retrieve local annotaiton's constructor? // TODO: How to retrieve local annotaiton's constructor?
null null
} else { } else {
(session.symbolProvider.getClassLikeSymbolByFqName(it) as? FirRegularClassSymbol) (session.symbolProvider.getClassLikeSymbolByClassId(it) as? FirRegularClassSymbol)
} }
} }
} }
@@ -511,7 +511,7 @@ fun FirClassLikeDeclaration.getContainingDeclaration(session: FirSession): FirCl
val parentId = classId.relativeClassName.parent() val parentId = classId.relativeClassName.parent()
if (!parentId.isRoot) { if (!parentId.isRoot) {
val containingDeclarationId = ClassId(classId.packageFqName, parentId, false) val containingDeclarationId = ClassId(classId.packageFqName, parentId, false)
return session.symbolProvider.getClassLikeSymbolByFqName(containingDeclarationId)?.fir return session.symbolProvider.getClassLikeSymbolByClassId(containingDeclarationId)?.fir
} }
} }
@@ -223,7 +223,7 @@ class ScopeTowerLevel(
private fun dispatchReceiverValue(candidate: FirCallableSymbol<*>): ReceiverValue? { private fun dispatchReceiverValue(candidate: FirCallableSymbol<*>): ReceiverValue? {
candidate.fir.importedFromObjectData?.let { data -> candidate.fir.importedFromObjectData?.let { data ->
val objectClassId = data.objectClassId val objectClassId = data.objectClassId
val symbol = session.symbolProvider.getClassLikeSymbolByFqName(objectClassId) val symbol = session.symbolProvider.getClassLikeSymbolByClassId(objectClassId)
if (symbol is FirRegularClassSymbol) { if (symbol is FirRegularClassSymbol) {
val resolvedQualifier = buildResolvedQualifier { val resolvedQualifier = buildResolvedQualifier {
packageFqName = objectClassId.packageFqName packageFqName = objectClassId.packageFqName
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.name.Name
annotation class FirSymbolProviderInternals annotation class FirSymbolProviderInternals
abstract class FirSymbolProvider(val session: FirSession) : FirSessionComponent { abstract class FirSymbolProvider(val session: FirSession) : FirSessionComponent {
abstract fun getClassLikeSymbolByFqName(classId: ClassId): FirClassLikeSymbol<*>? abstract fun getClassLikeSymbolByClassId(classId: ClassId): FirClassLikeSymbol<*>?
@OptIn(ExperimentalStdlibApi::class, FirSymbolProviderInternals::class) @OptIn(ExperimentalStdlibApi::class, FirSymbolProviderInternals::class)
open fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): List<FirCallableSymbol<*>> { open fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): List<FirCallableSymbol<*>> {
@@ -58,7 +58,7 @@ abstract class FirSymbolProvider(val session: FirSession) : FirSessionComponent
abstract class FirDependenciesSymbolProvider(session: FirSession) : FirSymbolProvider(session) abstract class FirDependenciesSymbolProvider(session: FirSession) : FirSymbolProvider(session)
private fun FirSymbolProvider.getClassDeclaredMemberScope(classId: ClassId): FirScope? { private fun FirSymbolProvider.getClassDeclaredMemberScope(classId: ClassId): FirScope? {
val classSymbol = getClassLikeSymbolByFqName(classId) as? FirRegularClassSymbol ?: return null val classSymbol = getClassLikeSymbolByClassId(classId) as? FirRegularClassSymbol ?: return null
return session.declaredMemberScope(classSymbol.fir) return session.declaredMemberScope(classSymbol.fir)
} }
@@ -68,7 +68,7 @@ class FirCloneableSymbolProvider(
} }
override fun getClassLikeSymbolByFqName(classId: ClassId): FirClassLikeSymbol<*>? { override fun getClassLikeSymbolByClassId(classId: ClassId): FirClassLikeSymbol<*>? {
return if (classId == CLONEABLE_CLASS_ID) klass.symbol else null return if (classId == CLONEABLE_CLASS_ID) klass.symbol else null
} }
@@ -46,7 +46,7 @@ class FirCompositeSymbolProvider(session: FirSession, val providers: List<FirSym
return providers.firstNotNullOfOrNull { it.getPackage(fqName) } return providers.firstNotNullOfOrNull { it.getPackage(fqName) }
} }
override fun getClassLikeSymbolByFqName(classId: ClassId): FirClassLikeSymbol<*>? { override fun getClassLikeSymbolByClassId(classId: ClassId): FirClassLikeSymbol<*>? {
return providers.firstNotNullOfOrNull { it.getClassLikeSymbolByFqName(classId) } return providers.firstNotNullOfOrNull { it.getClassLikeSymbolByClassId(classId) }
} }
} }
@@ -54,7 +54,7 @@ open class FirDependenciesSymbolProviderImpl(session: FirSession) : FirDependenc
dependencyProviders.firstNotNullOfOrNull { provider -> provider.getPackage(it) } dependencyProviders.firstNotNullOfOrNull { provider -> provider.getPackage(it) }
private fun computeClass(classId: ClassId): FirClassLikeSymbol<*>? = private fun computeClass(classId: ClassId): FirClassLikeSymbol<*>? =
dependencyProviders.firstNotNullOfOrNull { provider -> provider.getClassLikeSymbolByFqName(classId) } dependencyProviders.firstNotNullOfOrNull { provider -> provider.getClassLikeSymbolByClassId(classId) }
@FirSymbolProviderInternals @FirSymbolProviderInternals
@@ -76,7 +76,7 @@ open class FirDependenciesSymbolProviderImpl(session: FirSession) : FirDependenc
return topLevelCallableCache.getValue(CallableId(packageFqName, name)) return topLevelCallableCache.getValue(CallableId(packageFqName, name))
} }
override fun getClassLikeSymbolByFqName(classId: ClassId): FirClassLikeSymbol<*>? { override fun getClassLikeSymbolByClassId(classId: ClassId): FirClassLikeSymbol<*>? {
return classCache.getValue(classId) return classCache.getValue(classId)
} }
@@ -18,7 +18,7 @@ class FirLibrarySessionProvider(
override val symbolProvider: FirSymbolProvider override val symbolProvider: FirSymbolProvider
) : FirProvider() { ) : FirProvider() {
override fun getFirClassifierByFqName(classId: ClassId): FirClassLikeDeclaration? = override fun getFirClassifierByFqName(classId: ClassId): FirClassLikeDeclaration? =
symbolProvider.getClassLikeSymbolByFqName(classId)?.fir symbolProvider.getClassLikeSymbolByClassId(classId)?.fir
override fun getFirClassifierContainerFile(fqName: ClassId): FirFile = shouldNotBeCalled() override fun getFirClassifierContainerFile(fqName: ClassId): FirFile = shouldNotBeCalled()
@@ -51,7 +51,7 @@ class FirProviderImpl(val session: FirSession, val kotlinScopeProvider: FirKotli
} }
private inner class SymbolProvider : FirSymbolProvider(session) { private inner class SymbolProvider : FirSymbolProvider(session) {
override fun getClassLikeSymbolByFqName(classId: ClassId): FirClassLikeSymbol<*>? { override fun getClassLikeSymbolByClassId(classId: ClassId): FirClassLikeSymbol<*>? {
return getFirClassifierByFqName(classId)?.symbol return getFirClassifierByFqName(classId)?.symbol
} }
@@ -26,7 +26,7 @@ class FirQualifierResolverImpl(val session: FirSession) : FirQualifierResolver()
parts.drop(1).fold(prefix.relativeClassName) { result, suffix -> result.child(suffix.name) }, parts.drop(1).fold(prefix.relativeClassName) { result, suffix -> result.child(suffix.name) },
false false
) )
return symbolProvider.getClassLikeSymbolByFqName(fqName) return symbolProvider.getClassLikeSymbolByClassId(fqName)
} }
override fun resolveSymbol(parts: List<FirQualifierPart>): FirClassifierSymbol<*>? { override fun resolveSymbol(parts: List<FirQualifierPart>): FirClassifierSymbol<*>? {
@@ -45,7 +45,7 @@ class FirQualifierResolverImpl(val session: FirSession) : FirQualifierResolver()
firstPart.removeAt(firstPart.lastIndex) firstPart.removeAt(firstPart.lastIndex)
val fqName = ClassId(firstPart.toFqName(), lastPart.toFqName(), false) val fqName = ClassId(firstPart.toFqName(), lastPart.toFqName(), false)
val foundSymbol = firProvider.getClassLikeSymbolByFqName(fqName) val foundSymbol = firProvider.getClassLikeSymbolByClassId(fqName)
if (foundSymbol != null) { if (foundSymbol != null) {
return foundSymbol return foundSymbol
} }
@@ -50,7 +50,7 @@ class FirTypeResolverImpl(private val session: FirSession) : FirTypeResolver() {
private fun resolveBuiltInQualified(id: ClassId, session: FirSession): FirClassLikeSymbol<*> { private fun resolveBuiltInQualified(id: ClassId, session: FirSession): FirClassLikeSymbol<*> {
val nameInSession = ClassIdInSession(session, id) val nameInSession = ClassIdInSession(session, id)
return implicitBuiltinTypeSymbols.getOrPut(nameInSession) { return implicitBuiltinTypeSymbols.getOrPut(nameInSession) {
symbolProvider.getClassLikeSymbolByFqName(id)!! symbolProvider.getClassLikeSymbolByClassId(id)!!
} }
} }
@@ -107,7 +107,7 @@ fun resolveToPackageOrClass(symbolProvider: FirSymbolProvider, fqName: FqName):
FqName.fromSegments((prefixSize until pathSegments.size).map { pathSegments[it].asString() }) FqName.fromSegments((prefixSize until pathSegments.size).map { pathSegments[it].asString() })
val classId = ClassId(currentPackage, relativeClassFqName, false) val classId = ClassId(currentPackage, relativeClassFqName, false)
val symbol = symbolProvider.getClassLikeSymbolByFqName(classId) ?: return null val symbol = symbolProvider.getClassLikeSymbolByClassId(classId) ?: return null
return PackageOrClass(currentPackage, relativeClassFqName, symbol) return PackageOrClass(currentPackage, relativeClassFqName, symbol)
} }
@@ -511,7 +511,7 @@ class SupertypeComputationSession {
val parentId = classLikeDecl.symbol.classId.relativeClassName.parent() val parentId = classLikeDecl.symbol.classId.relativeClassName.parent()
if (!parentId.isRoot) { if (!parentId.isRoot) {
val parentSymbol = session.symbolProvider.getClassLikeSymbolByFqName(ClassId.fromString(parentId.asString())) val parentSymbol = session.symbolProvider.getClassLikeSymbolByClassId(ClassId.fromString(parentId.asString()))
if (parentSymbol is FirRegularClassSymbol) { if (parentSymbol is FirRegularClassSymbol) {
checkIsInLoop(parentSymbol.fir) checkIsInLoop(parentSymbol.fir)
} }
@@ -384,7 +384,7 @@ private object WhenOnSealedClassExhaustivenessChecker : WhenExhaustivenessChecke
} }
when { when {
fir.modality == Modality.SEALED -> fir.getSealedClassInheritors(session).forEach { fir.modality == Modality.SEALED -> fir.getSealedClassInheritors(session).forEach {
val symbol = session.symbolProvider.getClassLikeSymbolByFqName(it) as? FirRegularClassSymbol val symbol = session.symbolProvider.getClassLikeSymbolByClassId(it) as? FirRegularClassSymbol
symbol?.collectAllSubclassesTo(destination, session) symbol?.collectAllSubclassesTo(destination, session)
} }
fir.classKind == ClassKind.ENUM_CLASS -> fir.collectEnumEntries().mapTo(destination) { it.symbol } fir.classKind == ClassKind.ENUM_CLASS -> fir.collectEnumEntries().mapTo(destination) { it.symbol }
@@ -108,7 +108,7 @@ fun FirBlock.writeResultType(session: FirSession) {
fun ConstantValueKind<*>.expectedConeType(session: FirSession): ConeKotlinType { fun ConstantValueKind<*>.expectedConeType(session: FirSession): ConeKotlinType {
fun constructLiteralType(classId: ClassId, isNullable: Boolean = false): ConeKotlinType { fun constructLiteralType(classId: ClassId, isNullable: Boolean = false): ConeKotlinType {
val symbol = session.symbolProvider.getClassLikeSymbolByFqName(classId) val symbol = session.symbolProvider.getClassLikeSymbolByClassId(classId)
?: return ConeClassErrorType(ConeSimpleDiagnostic("Missing stdlib class: $classId", DiagnosticKind.MissingStdlibClass)) ?: return ConeClassErrorType(ConeSimpleDiagnostic("Missing stdlib class: $classId", DiagnosticKind.MissingStdlibClass))
return symbol.toLookupTag().constructClassType(emptyArray(), isNullable) return symbol.toLookupTag().constructClassType(emptyArray(), isNullable)
} }
@@ -70,7 +70,7 @@ abstract class FirAbstractImportingScope(
} }
fun getStaticsScope(classId: ClassId): FirScope? = fun getStaticsScope(classId: ClassId): FirScope? =
provider.getClassLikeSymbolByFqName(classId)?.fullyExpandedSymbol?.getStaticsScope() provider.getClassLikeSymbolByClassId(classId)?.fullyExpandedSymbol?.getStaticsScope()
protected fun findSingleClassifierSymbolByName(name: Name?, imports: List<FirResolvedImport>): FirClassLikeSymbol<*>? { protected fun findSingleClassifierSymbolByName(name: Name?, imports: List<FirResolvedImport>): FirClassLikeSymbol<*>? {
var result: FirClassLikeSymbol<*>? = null var result: FirClassLikeSymbol<*>? = null
@@ -78,7 +78,7 @@ abstract class FirAbstractImportingScope(
val importedName = name ?: import.importedName ?: continue val importedName = name ?: import.importedName ?: continue
val classId = import.resolvedClassId?.createNestedClassId(importedName) val classId = import.resolvedClassId?.createNestedClassId(importedName)
?: ClassId.topLevel(import.packageFqName.child(importedName)) ?: ClassId.topLevel(import.packageFqName.child(importedName))
val symbol = provider.getClassLikeSymbolByFqName(classId) ?: continue val symbol = provider.getClassLikeSymbolByClassId(classId) ?: continue
if (!filter.check(symbol, session)) continue if (!filter.check(symbol, session)) continue
result = when { result = when {
result == null || result == symbol -> symbol result == null || result == symbol -> symbol
@@ -29,7 +29,7 @@ class FirLazyNestedClassifierScope(
return return
} }
val child = classId.createNestedClassId(name) val child = classId.createNestedClassId(name)
val symbol = symbolProvider.getClassLikeSymbolByFqName(child) ?: return val symbol = symbolProvider.getClassLikeSymbolByClassId(child) ?: return
processor(symbol, ConeSubstitutor.Empty) processor(symbol, ConeSubstitutor.Empty)
} }
@@ -36,7 +36,7 @@ class FirPackageMemberScope(
val symbol = classifierCache.getOrPut(name) { val symbol = classifierCache.getOrPut(name) {
val unambiguousFqName = ClassId(fqName, name) val unambiguousFqName = ClassId(fqName, name)
symbolProvider.getClassLikeSymbolByFqName(unambiguousFqName) symbolProvider.getClassLikeSymbolByClassId(unambiguousFqName)
} }
if (symbol != null) { if (symbol != null) {
@@ -490,7 +490,7 @@ interface ConeInferenceContext : TypeSystemInferenceExtensionContext, ConeTypeCo
val classId = if (isSuspend) val classId = if (isSuspend)
StandardNames.getSuspendFunctionClassId(parametersNumber) StandardNames.getSuspendFunctionClassId(parametersNumber)
else StandardNames.getFunctionClassId(parametersNumber) else StandardNames.getFunctionClassId(parametersNumber)
return session.symbolProvider.getClassLikeSymbolByFqName(classId)?.toLookupTag() return session.symbolProvider.getClassLikeSymbolByClassId(classId)?.toLookupTag()
?: error("Can't find Function type") ?: error("Can't find Function type")
} }
@@ -498,7 +498,7 @@ interface ConeInferenceContext : TypeSystemInferenceExtensionContext, ConeTypeCo
val classId = if (isSuspend) val classId = if (isSuspend)
StandardNames.getKSuspendFunctionClassId(parametersNumber) StandardNames.getKSuspendFunctionClassId(parametersNumber)
else StandardNames.getKFunctionClassId(parametersNumber) else StandardNames.getKFunctionClassId(parametersNumber)
return session.symbolProvider.getClassLikeSymbolByFqName(classId)?.toLookupTag() return session.symbolProvider.getClassLikeSymbolByClassId(classId)?.toLookupTag()
?: error("Can't find KFunction type") ?: error("Can't find KFunction type")
} }
@@ -50,7 +50,7 @@ class FirScopeDumpHandler(testServices: TestServices) : FirAnalysisHandler(testS
private fun SmartPrinter.processClass(fqName: String, session: FirSession, scopeSession: ScopeSession, module: TestModule) { private fun SmartPrinter.processClass(fqName: String, session: FirSession, scopeSession: ScopeSession, module: TestModule) {
val classId = ClassId.topLevel(FqName.fromSegments(fqName.split("."))) val classId = ClassId.topLevel(FqName.fromSegments(fqName.split(".")))
val symbol = session.symbolProvider.getClassLikeSymbolByFqName(classId) ?: assertions.fail { val symbol = session.symbolProvider.getClassLikeSymbolByClassId(classId) ?: assertions.fail {
"Class $fqName not found in module ${module.name}" "Class $fqName not found in module ${module.name}"
} }
val firClass = symbol.fir as? FirRegularClass ?: assertions.fail { "$fqName is not a class but ${symbol.fir.render()}" } val firClass = symbol.fir as? FirRegularClass ?: assertions.fail { "$fqName is not a class but ${symbol.fir.render()}" }
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.name.Name
internal class FirIdeBuiltinsAndCloneableSessionProvider(override val symbolProvider: FirSymbolProvider) : FirProvider() { internal class FirIdeBuiltinsAndCloneableSessionProvider(override val symbolProvider: FirSymbolProvider) : FirProvider() {
override fun getFirClassifierByFqName(classId: ClassId): FirClassLikeDeclaration? = override fun getFirClassifierByFqName(classId: ClassId): FirClassLikeDeclaration? =
symbolProvider.getClassLikeSymbolByFqName(classId)?.fir symbolProvider.getClassLikeSymbolByClassId(classId)?.fir
override fun getFirClassifierContainerFile(fqName: ClassId): FirFile = shouldNotBeCalled() override fun getFirClassifierContainerFile(fqName: ClassId): FirFile = shouldNotBeCalled()
@@ -18,7 +18,7 @@ internal class FirIdeLibrariesSessionProvider(
override val symbolProvider: FirSymbolProvider override val symbolProvider: FirSymbolProvider
) : FirProvider() { ) : FirProvider() {
override fun getFirClassifierByFqName(classId: ClassId): FirClassLikeDeclaration? = override fun getFirClassifierByFqName(classId: ClassId): FirClassLikeDeclaration? =
symbolProvider.getClassLikeSymbolByFqName(classId)?.fir symbolProvider.getClassLikeSymbolByClassId(classId)?.fir
override fun getFirClassifierContainerFile(fqName: ClassId): FirFile = shouldNotBeCalled() override fun getFirClassifierContainerFile(fqName: ClassId): FirFile = shouldNotBeCalled()
@@ -129,7 +129,7 @@ internal class FirIdeProvider(
override fun getPackage(fqName: FqName): FqName? = override fun getPackage(fqName: FqName): FqName? =
providerHelper.getPackage(fqName) providerHelper.getPackage(fqName)
override fun getClassLikeSymbolByFqName(classId: ClassId): FirClassLikeSymbol<*>? { override fun getClassLikeSymbolByClassId(classId: ClassId): FirClassLikeSymbol<*>? {
return getFirClassifierByFqName(classId)?.symbol return getFirClassifierByFqName(classId)?.symbol
} }
} }
@@ -23,13 +23,13 @@ internal class FirModuleWithDependenciesSymbolProvider(
val dependencyProvider: DependentModuleProviders val dependencyProvider: DependentModuleProviders
) : FirSymbolProvider(session) { ) : FirSymbolProvider(session) {
override fun getClassLikeSymbolByFqName(classId: ClassId): FirClassLikeSymbol<*>? = override fun getClassLikeSymbolByClassId(classId: ClassId): FirClassLikeSymbol<*>? =
getClassLikeSymbolByFqNameWithoutDependencies(classId) getClassLikeSymbolByFqNameWithoutDependencies(classId)
?: dependencyProvider.getClassLikeSymbolByFqName(classId) ?: dependencyProvider.getClassLikeSymbolByClassId(classId)
fun getClassLikeSymbolByFqNameWithoutDependencies(classId: ClassId): FirClassLikeSymbol<*>? = fun getClassLikeSymbolByFqNameWithoutDependencies(classId: ClassId): FirClassLikeSymbol<*>? =
providers.firstNotNullOfOrNull { it.getClassLikeSymbolByFqName(classId) } providers.firstNotNullOfOrNull { it.getClassLikeSymbolByClassId(classId) }
@FirSymbolProviderInternals @FirSymbolProviderInternals
override fun getTopLevelCallableSymbolsTo(destination: MutableList<FirCallableSymbol<*>>, packageFqName: FqName, name: Name) { override fun getTopLevelCallableSymbolsTo(destination: MutableList<FirCallableSymbol<*>>, packageFqName: FqName, name: Name) {
@@ -78,11 +78,11 @@ internal class FirModuleWithDependenciesSymbolProvider(
} }
internal class DependentModuleProviders(session: FirSession, private val providers: List<FirSymbolProvider>) : FirDependenciesSymbolProvider(session) { internal class DependentModuleProviders(session: FirSession, private val providers: List<FirSymbolProvider>) : FirDependenciesSymbolProvider(session) {
override fun getClassLikeSymbolByFqName(classId: ClassId): FirClassLikeSymbol<*>? = override fun getClassLikeSymbolByClassId(classId: ClassId): FirClassLikeSymbol<*>? =
providers.firstNotNullOfOrNull { provider -> providers.firstNotNullOfOrNull { provider ->
when (provider) { when (provider) {
is FirModuleWithDependenciesSymbolProvider -> provider.getClassLikeSymbolByFqNameWithoutDependencies(classId) is FirModuleWithDependenciesSymbolProvider -> provider.getClassLikeSymbolByFqNameWithoutDependencies(classId)
else -> provider.getClassLikeSymbolByFqName(classId) else -> provider.getClassLikeSymbolByClassId(classId)
} }
} }
@@ -29,7 +29,7 @@ internal class FirDeclarationForCompiledElementSearcher(private val symbolProvid
val classId = declaration.getClassId() val classId = declaration.getClassId()
?: error("Non-local class should have classId. The class is ${declaration.getElementTextInContext()}") ?: error("Non-local class should have classId. The class is ${declaration.getElementTextInContext()}")
val classCandidate = symbolProvider.getClassLikeSymbolByFqName(classId) val classCandidate = symbolProvider.getClassLikeSymbolByClassId(classId)
?: error("We should be able to find a symbol for $classId") ?: error("We should be able to find a symbol for $classId")
return classCandidate.fir return classCandidate.fir
@@ -120,7 +120,7 @@ var KtFile.originalKtFile by UserDataProperty(ORIGINAL_KT_FILE_KEY)
private fun KtClassLikeDeclaration.findFir(firSymbolProvider: FirSymbolProvider): FirClassLikeDeclaration? { private fun KtClassLikeDeclaration.findFir(firSymbolProvider: FirSymbolProvider): FirClassLikeDeclaration? {
val classId = getClassId() ?: return null val classId = getClassId() ?: return null
return executeWithoutPCE { return executeWithoutPCE {
firSymbolProvider.getClassLikeSymbolByFqName(classId)?.fir as? FirRegularClass firSymbolProvider.getClassLikeSymbolByClassId(classId)?.fir as? FirRegularClass
} }
} }
@@ -178,7 +178,7 @@ internal class KtSymbolByFirBuilder private constructor(
} }
fun buildClassLikeSymbolByClassId(classId: ClassId): KtClassLikeSymbol? { fun buildClassLikeSymbolByClassId(classId: ClassId): KtClassLikeSymbol? {
val firClassLikeSymbol = firProvider.getClassLikeSymbolByFqName(classId) ?: return null val firClassLikeSymbol = firProvider.getClassLikeSymbolByClassId(classId) ?: return null
return buildClassLikeSymbol(firClassLikeSymbol.fir) return buildClassLikeSymbol(firClassLikeSymbol.fir)
} }
@@ -249,7 +249,7 @@ private class FirShorteningContext(val firResolveState: FirModuleResolveState) {
} }
fun toClassSymbol(classId: ClassId) = fun toClassSymbol(classId: ClassId) =
firSession.symbolProvider.getClassLikeSymbolByFqName(classId) firSession.symbolProvider.getClassLikeSymbolByClassId(classId)
fun convertToImportableName(callableSymbol: FirCallableSymbol<*>): FqName? = fun convertToImportableName(callableSymbol: FirCallableSymbol<*>): FqName? =
callableSymbol.computeImportableName(firSession) callableSymbol.computeImportableName(firSession)
@@ -27,7 +27,7 @@ internal class KtFirTypeCreator(
override fun buildClassType(builder: KtClassTypeBuilder): KtClassType = withValidityAssertion { override fun buildClassType(builder: KtClassTypeBuilder): KtClassType = withValidityAssertion {
val lookupTag = when (builder) { val lookupTag = when (builder) {
is KtClassTypeBuilder.ByClassId -> { is KtClassTypeBuilder.ByClassId -> {
val classSymbol = rootModuleSession.symbolProvider.getClassLikeSymbolByFqName(builder.classId) val classSymbol = rootModuleSession.symbolProvider.getClassLikeSymbolByClassId(builder.classId)
?: return ConeClassErrorType(ConeUnresolvedSymbolError(builder.classId)).asKtType() as KtClassType ?: return ConeClassErrorType(ConeUnresolvedSymbolError(builder.classId)).asKtType() as KtClassType
classSymbol.toLookupTag() classSymbol.toLookupTag()
} }
@@ -131,7 +131,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.getClassLikeSymbolByClassId(classId) as? FirRegularClassSymbol ?: return null
firSymbolBuilder.classifierBuilder.buildNamedClassOrObjectSymbol(symbol.fir) firSymbolBuilder.classifierBuilder.buildNamedClassOrObjectSymbol(symbol.fir)
} }
@@ -30,7 +30,7 @@ internal class KtFirEnumEntrySymbolPointer(
} }
private fun getEnumClass(analysisSession: KtFirAnalysisSession, classId: ClassId): FirRegularClass? { private fun getEnumClass(analysisSession: KtFirAnalysisSession, classId: ClassId): FirRegularClass? {
val enumClass = analysisSession.firSymbolProvider.getClassLikeSymbolByFqName(classId)?.fir as? FirRegularClass val enumClass = analysisSession.firSymbolProvider.getClassLikeSymbolByClassId(classId)?.fir as? FirRegularClass
?: return null ?: return null
if (enumClass.classKind != ClassKind.ENUM_CLASS) return null if (enumClass.classKind != ClassKind.ENUM_CLASS) return null
return enumClass return enumClass
@@ -55,4 +55,4 @@ internal fun FirDeclaration.createSignature(): IdSignature {
} }
internal fun KtFirAnalysisSession.getClassLikeSymbol(classId: ClassId) = internal fun KtFirAnalysisSession.getClassLikeSymbol(classId: ClassId) =
firResolveState.rootModuleSession.symbolProvider.getClassLikeSymbolByFqName(classId)?.fir firResolveState.rootModuleSession.symbolProvider.getClassLikeSymbolByClassId(classId)?.fir