[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:
committed by
Space Team
parent
125b773205
commit
c98c8d3682
+2
-1
@@ -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.dfa.unwrapSmartcastExpression
|
||||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnmatchedTypeArgumentsError
|
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnmatchedTypeArgumentsError
|
||||||
import org.jetbrains.kotlin.fir.resolve.scope
|
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.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirImportResolveTransformer
|
import org.jetbrains.kotlin.fir.resolve.transformers.FirImportResolveTransformer
|
||||||
import org.jetbrains.kotlin.fir.scopes.FakeOverrideTypeCalculator
|
import org.jetbrains.kotlin.fir.scopes.FakeOverrideTypeCalculator
|
||||||
@@ -71,7 +72,7 @@ internal object FirReferenceResolveHelper {
|
|||||||
symbolBuilder: KtSymbolByFirBuilder,
|
symbolBuilder: KtSymbolByFirBuilder,
|
||||||
calleeReference: FirReference? = null,
|
calleeReference: FirReference? = null,
|
||||||
): KtSymbol? {
|
): KtSymbol? {
|
||||||
val classLikeDeclaration = this.toLookupTag().toSymbol(session)?.fir
|
val classLikeDeclaration = this.toSymbol(session)?.fir
|
||||||
if (classLikeDeclaration is FirRegularClass) {
|
if (classLikeDeclaration is FirRegularClass) {
|
||||||
if (calleeReference is FirResolvedNamedReference) {
|
if (calleeReference is FirResolvedNamedReference) {
|
||||||
val callee = calleeReference.resolvedSymbol.fir as? FirCallableDeclaration
|
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.getSymbolByLookupTag
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.firProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.firProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
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.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||||
import org.jetbrains.kotlin.fir.symbols.Fir2IrClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.Fir2IrClassSymbol
|
||||||
@@ -70,7 +71,7 @@ class Fir2IrClassifierStorage(
|
|||||||
|
|
||||||
fun preCacheBuiltinClasses() {
|
fun preCacheBuiltinClasses() {
|
||||||
for ((classId, irBuiltinSymbol) in typeConverter.classIdToSymbolMap) {
|
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
|
val irClass = irBuiltinSymbol.owner
|
||||||
classCache[firClass] = irClass
|
classCache[firClass] = irClass
|
||||||
processClassHeader(firClass, irClass)
|
processClassHeader(firClass, irClass)
|
||||||
|
|||||||
+4
@@ -116,6 +116,10 @@ fun FirSymbolProvider.getRegularClassSymbolByClassId(classId: ClassId): FirRegul
|
|||||||
return getClassLikeSymbolByClassId(classId) as? FirRegularClassSymbol
|
return getClassLikeSymbolByClassId(classId) as? FirRegularClassSymbol
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun ClassId.toSymbol(session: FirSession): FirClassifierSymbol<*>? {
|
||||||
|
return session.symbolProvider.getClassLikeSymbolByClassId(this)
|
||||||
|
}
|
||||||
|
|
||||||
val FirSession.symbolProvider: FirSymbolProvider by FirSession.sessionComponentAccessor()
|
val FirSession.symbolProvider: FirSymbolProvider by FirSession.sessionComponentAccessor()
|
||||||
|
|
||||||
const val DEPENDENCIES_SYMBOL_PROVIDER_QUALIFIED_KEY: String = "org.jetbrains.kotlin.fir.resolve.providers.FirDependenciesSymbolProvider"
|
const val DEPENDENCIES_SYMBOL_PROVIDER_QUALIFIED_KEY: String = "org.jetbrains.kotlin.fir.resolve.providers.FirDependenciesSymbolProvider"
|
||||||
|
|||||||
Reference in New Issue
Block a user