From fcfa248e22372388d8357292aa6bba80af60a8a7 Mon Sep 17 00:00:00 2001 From: Ben Harshbarger Date: Fri, 31 Jan 2025 10:41:14 -0800 Subject: [PATCH] Improve comments, adjust return type to something more appropriate Signed-off-by: Ben Harshbarger --- frontend/lib/resolution/resolution-queries.cpp | 3 ++- frontend/lib/resolution/return-type-inference.cpp | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/frontend/lib/resolution/resolution-queries.cpp b/frontend/lib/resolution/resolution-queries.cpp index 4f91e13560a6..b77439e288f6 100644 --- a/frontend/lib/resolution/resolution-queries.cpp +++ b/frontend/lib/resolution/resolution-queries.cpp @@ -4033,7 +4033,8 @@ static bool resolveFnCallSpecial(Context* context, exprTypeOut = QualifiedType::makeParamString(context, oss.str()); return true; } else if (srcTy->isClassType() && dstTy->isClassType()) { - // cast (borrowed class) : unmanaged + // cast (borrowed class) : unmanaged, + // and (unmanaged class) : borrowed auto srcClass = srcTy->toClassType(); auto dstClass = dstTy->toClassType(); bool isValidDst = dstClass->manageableType()->isAnyClassType() && diff --git a/frontend/lib/resolution/return-type-inference.cpp b/frontend/lib/resolution/return-type-inference.cpp index 3592ddb46cd6..335b9436ea5d 100644 --- a/frontend/lib/resolution/return-type-inference.cpp +++ b/frontend/lib/resolution/return-type-inference.cpp @@ -1304,7 +1304,10 @@ static bool helpComputeReturnType(ResolutionContext* rc, result = QualifiedType(QualifiedType::CONST_VAR, VoidType::get(context)); return true; } else { - result = QualifiedType(QualifiedType::CONST_VAR, ErroneousType::get(context)); + // TODO: This is a workaround for a bug where the return type was + // not found for some reason. By returning a type we prevent an attempt + // to resolve the non-existent function body. + result = QualifiedType(QualifiedType::CONST_VAR, UnknownType::get(context)); return true; } } else if (fnAstReturnsNonVoid(context, ast->id()) == false) {