1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 04:22:20 +02:00

Allow expression-bodied mixins

This commit is contained in:
Brian Fiete 2021-11-04 08:05:33 -07:00
parent 344b8d0181
commit 869d626412

View file

@ -15966,6 +15966,7 @@ void BfExprEvaluator::InjectMixin(BfAstNode* targetSrc, BfTypedValue target, boo
}
if (auto blockBody = BfNodeDynCast<BfBlock>(methodDef->mBody))
{
mModule->VisitCodeBlock(blockBody);
if (mixinState->mResultExpr != NULL)
@ -15979,12 +15980,17 @@ void BfExprEvaluator::InjectMixin(BfAstNode* targetSrc, BfTypedValue target, boo
VisitChild(exprNode);
FinishExpressionResult();
ResolveGenericType();
//mResult = mModule->LoadValue(mResult);
}
}
}
GetResult();
}
else if (auto expr = BfNodeDynCast<BfExpression>(methodDef->mBody))
{
mModule->UpdateSrcPos(expr);
mResult = mModule->CreateValueFromExpression(expr);
}
if (!mResult)
{
@ -16013,8 +16019,15 @@ void BfExprEvaluator::InjectMixin(BfAstNode* targetSrc, BfTypedValue target, boo
}
if (auto blockBody = BfNodeDynCast<BfBlock>(methodDef->mBody))
{
if (blockBody->mCloseBrace != NULL)
mModule->UpdateSrcPos(blockBody->mCloseBrace);
}
else if (auto methodDeclaration = BfNodeDynCast<BfMethodDeclaration>(methodDef->mMethodDeclaration))
{
if (methodDeclaration->mFatArrowToken != NULL)
mModule->UpdateSrcPos(methodDeclaration->mFatArrowToken);
}
mModule->RestoreScopeState();