From a9d9776bcbe59923daac6315b0b169107b3f3c8b Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 7 Nov 2020 06:37:41 -0800 Subject: [PATCH] Allow default param before params param --- IDEHelper/Compiler/BfDefBuilder.cpp | 2 +- IDEHelper/Compiler/BfExprEvaluator.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/IDEHelper/Compiler/BfDefBuilder.cpp b/IDEHelper/Compiler/BfDefBuilder.cpp index 5fe5d948..d74230b2 100644 --- a/IDEHelper/Compiler/BfDefBuilder.cpp +++ b/IDEHelper/Compiler/BfDefBuilder.cpp @@ -667,7 +667,7 @@ BfMethodDef* BfDefBuilder::CreateMethodDef(BfMethodDeclaration* methodDeclaratio if (paramDef->mParamDeclaration->mInitializer != NULL) hasDefault = true; - else if (hasDefault) + else if ((hasDefault) && (paramDef->mParamKind != BfParamKind_Params)) { if (!didDefaultsError) Fail("Optional parameters must appear after all required parameters", methodDef->mParams[paramIdx - 1]->mParamDeclaration); diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index c73dbaca..75c8ac93 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -5830,7 +5830,7 @@ BfTypedValue BfExprEvaluator::CreateCall(BfAstNode* targetSrc, const BfTypedValu if (!isDirectPass) { - int numElements = (int)argValues.size() - argIdx; + int numElements = BF_MAX((int)argValues.size() - argIdx, 0); if (methodDef->mMethodType == BfMethodType_Extension) numElements++;