FIR checker: typed declaration's return type should be resolved

except for those in function contracts
This commit is contained in:
Jinseong Jeon
2021-02-09 23:59:36 -08:00
committed by Mikhail Glukhikh
parent 5f9357eb41
commit e67eb0c123
@@ -23,6 +23,10 @@ object FirConflictingProjectionChecker : FirBasicDeclarationChecker() {
}
if (declaration is FirTypedDeclaration) {
// The body of function contract is not fully resolved.
if (declaration.resolvePhase == FirResolvePhase.CONTRACTS) {
return
}
checkTypeRef(declaration.returnTypeRef, context, reporter)
}
@@ -44,10 +48,7 @@ object FirConflictingProjectionChecker : FirBasicDeclarationChecker() {
}
private fun checkTypeRef(typeRef: FirTypeRef, context: CheckerContext, reporter: DiagnosticReporter) {
// TODO: remaining implicit types should be resolved as an error type, along with proper error kind,
// e.g., type mismatch, can't infer parameter type, syntax error, etc.
val declaration = typeRef.safeAs<FirResolvedTypeRef>()
?.coneTypeSafe<ConeClassLikeType>()
val declaration = typeRef.coneTypeSafe<ConeClassLikeType>()
?.lookupTag
?.toSymbol(context.session)
?.fir.safeAs<FirRegularClass>()