mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 11:38:21 +02:00
Disallow argument cascade in indexer
This commit is contained in:
parent
e5d70947d9
commit
c939ec1cf6
2 changed files with 4 additions and 3 deletions
|
@ -5074,7 +5074,7 @@ void BfExprEvaluator::ResolveArgValues(BfResolvedArgs& resolvedArgs, BfResolveAr
|
|||
|
||||
if (auto unaryOpExpr = BfNodeDynCastExact<BfUnaryOperatorExpression>(argExpr))
|
||||
{
|
||||
if (unaryOpExpr->mOp == BfUnaryOp_Cascade)
|
||||
if ((unaryOpExpr->mOp == BfUnaryOp_Cascade) && ((flags & BfResolveArgsFlag_FromIndexer) == 0))
|
||||
{
|
||||
if ((mBfEvalExprFlags & BfEvalExprFlags_InCascade) != 0)
|
||||
mModule->Fail("Cascade already specified on call target", unaryOpExpr->mOpToken);
|
||||
|
@ -19471,7 +19471,7 @@ void BfExprEvaluator::Visit(BfIndexerExpression* indexerExpr)
|
|||
SizedArray<BfExpression*, 2> argExprs;
|
||||
BfSizedArray<BfExpression*> sizedArgExprs(indexerExpr->mArguments);
|
||||
BfResolvedArgs argValues(&sizedArgExprs);
|
||||
ResolveArgValues(argValues, BfResolveArgsFlag_DeferParamEval);
|
||||
ResolveArgValues(argValues, (BfResolveArgsFlags)(BfResolveArgsFlag_DeferParamEval | BfResolveArgsFlag_FromIndexer));
|
||||
//exprEvaluator.MatchMethod(elementExpr, NULL, initValue, false, false, "Add", argValues, NULL);
|
||||
|
||||
mIndexerValues = argValues.mResolvedArgs;
|
||||
|
|
|
@ -31,7 +31,8 @@ enum BfResolveArgsFlags
|
|||
BfResolveArgsFlag_DeferParamValues = 2, // We still evaluate but don't generate code until the method is selected (for SkipCall support)
|
||||
BfResolveArgsFlag_DeferParamEval = 4,
|
||||
BfResolveArgsFlag_AllowUnresolvedTypes = 8,
|
||||
BfResolveArgsFlag_InsideStringInterpolationAlloc = 0x10
|
||||
BfResolveArgsFlag_InsideStringInterpolationAlloc = 0x10,
|
||||
BfResolveArgsFlag_FromIndexer = 0x20
|
||||
};
|
||||
|
||||
enum BfResolveArgFlags
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue