FIR: use more meaningful error messages
This commit is contained in:
@@ -33,6 +33,12 @@ fun ConeClassLikeLookupTag.toSymbol(useSiteSession: FirSession): FirClassLikeSym
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(LookupTagInternals::class)
|
||||
fun ConeClassLikeLookupTag.toSymbolOrError(useSiteSession: FirSession): FirClassLikeSymbol<*> =
|
||||
toSymbol(useSiteSession)
|
||||
?: error("Class symbol with classId $classId was not found")
|
||||
|
||||
|
||||
fun ConeClassLikeLookupTag.toFirRegularClass(session: FirSession): FirRegularClass? =
|
||||
session.firSymbolProvider.getSymbolByLookupTag(this)?.fir as? FirRegularClass
|
||||
|
||||
|
||||
+2
-2
@@ -262,8 +262,8 @@ private fun BodyResolveComponents.createExplicitReceiverForInvoke(
|
||||
is FirRegularClassSymbol -> buildResolvedQualifierForClass(symbol, sourceElement = null)
|
||||
is FirTypeAliasSymbol -> {
|
||||
val type = symbol.fir.expandedTypeRef.coneTypeUnsafe<ConeClassLikeType>().fullyExpandedType(session)
|
||||
val expansionRegularClass = type.lookupTag.toSymbol(session)?.fir as? FirRegularClass
|
||||
buildResolvedQualifierForClass(expansionRegularClass!!.symbol, sourceElement = symbol.fir.source)
|
||||
val expansionRegularClassSymbol = type.lookupTag.toSymbolOrError(session)
|
||||
buildResolvedQualifierForClass(expansionRegularClassSymbol, sourceElement = symbol.fir.source)
|
||||
}
|
||||
else -> throw AssertionError()
|
||||
}
|
||||
|
||||
+3
-1
@@ -393,7 +393,9 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
}
|
||||
return
|
||||
}
|
||||
require(file != null)
|
||||
require(file != null) {
|
||||
"Containing file was not found for\n${regularClass.render()}"
|
||||
}
|
||||
val symbol = regularClass.symbol
|
||||
var declarationToStart: FirDeclaration? = null
|
||||
val designation = designationMapForLocalClasses[regularClass]?.let(::listOf)?.also {
|
||||
|
||||
@@ -221,7 +221,7 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty
|
||||
is FirAnonymousObjectSymbol -> symbol.fir.typeParameters[index].symbol.toLookupTag()
|
||||
is FirRegularClassSymbol -> symbol.fir.typeParameters[index].symbol.toLookupTag()
|
||||
is FirTypeAliasSymbol -> symbol.fir.typeParameters[index].symbol.toLookupTag()
|
||||
else -> error("?!:12")
|
||||
else -> error("Unexpected FirClassLikeSymbol $symbol for ${this::class}, with classId ${(this as? ConeClassLikeLookupTag)?.classId}")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -69,7 +69,9 @@ abstract class AbstractTypeCheckerContext : TypeSystemContext {
|
||||
|
||||
|
||||
fun initialize() {
|
||||
assert(!supertypesLocked)
|
||||
assert(!supertypesLocked) {
|
||||
"Supertypes were locked for ${this::class}"
|
||||
}
|
||||
supertypesLocked = true
|
||||
|
||||
if (supertypesDeque == null) {
|
||||
|
||||
Reference in New Issue
Block a user