[FIR] Introduce utility searching for classifier symbol by ClassId

There were places which created lookupTag from classId just to call
  `lookupTag.toSymbol(session)`
This commit is contained in:
Dmitriy Novozhilov
2023-01-13 14:33:22 +02:00
committed by Space Team
parent 125b773205
commit c98c8d3682
3 changed files with 8 additions and 2 deletions
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.resolve.dfa.unwrapSmartcastExpression
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnmatchedTypeArgumentsError
import org.jetbrains.kotlin.fir.resolve.scope
import org.jetbrains.kotlin.fir.resolve.providers.toSymbol
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.resolve.transformers.FirImportResolveTransformer
import org.jetbrains.kotlin.fir.scopes.FakeOverrideTypeCalculator
@@ -71,7 +72,7 @@ internal object FirReferenceResolveHelper {
symbolBuilder: KtSymbolByFirBuilder,
calleeReference: FirReference? = null,
): KtSymbol? {
val classLikeDeclaration = this.toLookupTag().toSymbol(session)?.fir
val classLikeDeclaration = this.toSymbol(session)?.fir
if (classLikeDeclaration is FirRegularClass) {
if (calleeReference is FirResolvedNamedReference) {
val callee = calleeReference.resolvedSymbol.fir as? FirCallableDeclaration
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.fir.lazy.Fir2IrLazyClass
import org.jetbrains.kotlin.fir.resolve.getSymbolByLookupTag
import org.jetbrains.kotlin.fir.resolve.providers.firProvider
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
import org.jetbrains.kotlin.fir.resolve.providers.toSymbol
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.symbols.Fir2IrClassSymbol
@@ -70,7 +71,7 @@ class Fir2IrClassifierStorage(
fun preCacheBuiltinClasses() {
for ((classId, irBuiltinSymbol) in typeConverter.classIdToSymbolMap) {
val firClass = classId.toLookupTag().toSymbol(session)!!.fir as FirRegularClass
val firClass = classId.toSymbol(session)!!.fir as FirRegularClass
val irClass = irBuiltinSymbol.owner
classCache[firClass] = irClass
processClassHeader(firClass, irClass)
@@ -116,6 +116,10 @@ fun FirSymbolProvider.getRegularClassSymbolByClassId(classId: ClassId): FirRegul
return getClassLikeSymbolByClassId(classId) as? FirRegularClassSymbol
}
fun ClassId.toSymbol(session: FirSession): FirClassifierSymbol<*>? {
return session.symbolProvider.getClassLikeSymbolByClassId(this)
}
val FirSession.symbolProvider: FirSymbolProvider by FirSession.sessionComponentAccessor()
const val DEPENDENCIES_SYMBOL_PROVIDER_QUALIFIED_KEY: String = "org.jetbrains.kotlin.fir.resolve.providers.FirDependenciesSymbolProvider"