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? =
|
fun ConeClassLikeLookupTag.toFirRegularClass(session: FirSession): FirRegularClass? =
|
||||||
session.firSymbolProvider.getSymbolByLookupTag(this)?.fir as? 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 FirRegularClassSymbol -> buildResolvedQualifierForClass(symbol, sourceElement = null)
|
||||||
is FirTypeAliasSymbol -> {
|
is FirTypeAliasSymbol -> {
|
||||||
val type = symbol.fir.expandedTypeRef.coneTypeUnsafe<ConeClassLikeType>().fullyExpandedType(session)
|
val type = symbol.fir.expandedTypeRef.coneTypeUnsafe<ConeClassLikeType>().fullyExpandedType(session)
|
||||||
val expansionRegularClass = type.lookupTag.toSymbol(session)?.fir as? FirRegularClass
|
val expansionRegularClassSymbol = type.lookupTag.toSymbolOrError(session)
|
||||||
buildResolvedQualifierForClass(expansionRegularClass!!.symbol, sourceElement = symbol.fir.source)
|
buildResolvedQualifierForClass(expansionRegularClassSymbol, sourceElement = symbol.fir.source)
|
||||||
}
|
}
|
||||||
else -> throw AssertionError()
|
else -> throw AssertionError()
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -393,7 +393,9 @@ abstract class AbstractFirStatusResolveTransformer(
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
require(file != null)
|
require(file != null) {
|
||||||
|
"Containing file was not found for\n${regularClass.render()}"
|
||||||
|
}
|
||||||
val symbol = regularClass.symbol
|
val symbol = regularClass.symbol
|
||||||
var declarationToStart: FirDeclaration? = null
|
var declarationToStart: FirDeclaration? = null
|
||||||
val designation = designationMapForLocalClasses[regularClass]?.let(::listOf)?.also {
|
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 FirAnonymousObjectSymbol -> symbol.fir.typeParameters[index].symbol.toLookupTag()
|
||||||
is FirRegularClassSymbol -> symbol.fir.typeParameters[index].symbol.toLookupTag()
|
is FirRegularClassSymbol -> symbol.fir.typeParameters[index].symbol.toLookupTag()
|
||||||
is FirTypeAliasSymbol -> 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() {
|
fun initialize() {
|
||||||
assert(!supertypesLocked)
|
assert(!supertypesLocked) {
|
||||||
|
"Supertypes were locked for ${this::class}"
|
||||||
|
}
|
||||||
supertypesLocked = true
|
supertypesLocked = true
|
||||||
|
|
||||||
if (supertypesDeque == null) {
|
if (supertypesDeque == null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user