Fir2Ir converter: fix KNPE during use-site scope building for local
This commit is contained in:
@@ -30,7 +30,7 @@ fun ConeKotlinType.scope(useSiteSession: FirSession, scopeSession: ScopeSession)
|
||||
// TODO: support that case and switch back to `firUnsafe` instead of `firSafeNullable`
|
||||
val fir = this.lookupTag.toSymbol(useSiteSession)?.firSafeNullable<FirRegularClass>() ?: return null
|
||||
val companionScope = fir.companionObject?.buildUseSiteScope(useSiteSession, scopeSession)
|
||||
val ownScope = wrapSubstitutionScopeIfNeed(useSiteSession, fir.buildUseSiteScope(useSiteSession, scopeSession), scopeSession)
|
||||
val ownScope = wrapSubstitutionScopeIfNeed(useSiteSession, fir.buildUseSiteScope(useSiteSession, scopeSession)!!, scopeSession)
|
||||
if (companionScope != null) FirCompositeScope(mutableListOf(ownScope, companionScope)) else ownScope
|
||||
|
||||
}
|
||||
|
||||
@@ -51,9 +51,9 @@ val DECLARED = scopeSessionKey()
|
||||
|
||||
data class SubstitutionScopeKey<T : FirClassSubstitutionScope>(val type: ConeClassLikeType) : ScopeSessionKey<T>() {}
|
||||
|
||||
fun FirRegularClass.buildUseSiteScope(useSiteSession: FirSession, builder: ScopeSession): FirScope {
|
||||
fun FirRegularClass.buildUseSiteScope(useSiteSession: FirSession, builder: ScopeSession): FirScope? {
|
||||
val symbolProvider = useSiteSession.service<FirSymbolProvider>()
|
||||
return symbolProvider.getClassUseSiteMemberScope(this.classId, useSiteSession, builder)!!
|
||||
return symbolProvider.getClassUseSiteMemberScope(this.classId, useSiteSession, builder)
|
||||
}
|
||||
|
||||
fun FirTypeAlias.buildUseSiteScope(useSiteSession: FirSession, builder: ScopeSession): FirScope? {
|
||||
@@ -72,7 +72,7 @@ fun FirRegularClass.buildDefaultUseSiteScope(useSiteSession: FirSession, builder
|
||||
if (useSiteSuperType is ConeClassErrorType) return@mapNotNull null
|
||||
val symbol = useSiteSuperType.lookupTag.toSymbol(useSiteSession)
|
||||
if (symbol is FirClassSymbol) {
|
||||
val useSiteScope = symbol.fir.buildUseSiteScope(useSiteSession, builder)
|
||||
val useSiteScope = symbol.fir.buildUseSiteScope(useSiteSession, builder)!!
|
||||
useSiteSuperType.wrapSubstitutionScopeIfNeed(useSiteSession, useSiteScope, symbol.fir, builder)
|
||||
} else {
|
||||
null
|
||||
|
||||
Reference in New Issue
Block a user