FIR: use more meaningful error messages

This commit is contained in:
Ilya Kirillov
2020-12-31 11:35:32 +01:00
parent 4d07eb27bb
commit a52674f181
5 changed files with 15 additions and 5 deletions
@@ -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
@@ -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()
}
@@ -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) {