1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-13 05:44:11 +02:00

Fixed empty return with lambda return type inference

This commit is contained in:
Brian Fiete 2021-02-28 12:56:02 -08:00
parent c598944f52
commit 97d9a4508d

View file

@ -4941,30 +4941,22 @@ void BfModule::Visit(BfReturnStatement* returnStmt)
if (returnStmt->mExpression == NULL) if (returnStmt->mExpression == NULL)
{ {
MarkScopeLeft(&mCurMethodState->mHeadScope); MarkScopeLeft(&mCurMethodState->mHeadScope);
if (retType->IsVoid())
if ((retType != NULL) && (retType->IsVoid()))
{ {
EmitReturn(BfTypedValue()); EmitReturn(BfTypedValue());
return; return;
} }
if (retType != NULL) Fail("Expected return value", returnStmt);
{ if (retType != NULL)
Fail("Expected return value", returnStmt); EmitReturn(GetDefaultTypedValue(retType));
return; else
} EmitReturn(BfTypedValue());
return;
EmitReturn(GetDefaultTypedValue(retType));
return;
} }
BfType* expectingReturnType = retType; BfType* expectingReturnType = retType;
if ((expectingReturnType != NULL) && (expectingReturnType->IsVar()))
{
NOP;
// expectingReturnType = NULL;
}
BfType* origType; BfType* origType;
BfExprEvaluator exprEvaluator(this); BfExprEvaluator exprEvaluator(this);
bool alreadyWritten = false; bool alreadyWritten = false;