From 92e189826b29603fb6f3a689c9c40f058e55d981 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Thu, 25 Jun 2020 10:21:51 -0700 Subject: [PATCH] Fixed initializer error for unknown-sized arrays --- IDEHelper/Compiler/BfExprEvaluator.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index ea35678a..51a067a9 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -16097,9 +16097,14 @@ void BfExprEvaluator::InitializedSizedArray(BfSizedArrayType* arrayType, BfToken _GetValues = [&](BfSizedArrayType* checkArrayType, BfTokenNode* openToken, const BfSizedArray& valueExprs, const BfSizedArray& commas, BfTokenNode* closeToken, bool ignore) { int64 initCountDiff = (int)valueExprs.size() - checkArrayType->mElementCount; - if ((initCountDiff != 0) && (!failedAt.Contains(depth))) + if ((initCountDiff != 0) && (!valueExprs.IsEmpty()) && (!failedAt.Contains(depth))) { - if (initCountDiff > 0) + if (checkArrayType->mElementCount == -1) + { + mModule->Fail("Initializers not supported for unknown-sized arrays", valueExprs[0]); + failedAt.Add(depth); + } + else if (initCountDiff > 0) { mModule->Fail(StrFormat("Too many initializers, expected %d fewer", initCountDiff), valueExprs[BF_MAX((int)checkArrayType->mElementCount, 0)]); failedAt.Add(depth);