From fbd4e14fb64b5e30c6e7e93b8950f0e11cb8d9f5 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Wed, 18 Sep 2019 17:10:06 -0700 Subject: [PATCH] Allowing allocation of arrays by uint size instead of just int --- IDEHelper/Compiler/BfExprEvaluator.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 36565494..40b9b989 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -10326,7 +10326,20 @@ void BfExprEvaluator::Visit(BfObjectCreateExpression* objCreateExpr) } if (arg != NULL) - dimLength = mModule->CreateValueFromExpression(expr, intType); + { + dimLength = mModule->CreateValueFromExpression(expr, intType, BfEvalExprFlags_NoCast); + + BfCastFlags castFlags = BfCastFlags_None; + if (dimLength.mType->IsInteger()) + { + // Allow uint for size - just force to int + if (!((BfPrimitiveType*)dimLength.mType)->IsSigned()) + castFlags = BfCastFlags_Explicit; + } + if (dimLength) + dimLength = mModule->Cast(expr, dimLength, intType, castFlags); + } + if (!dimLength) { dimLength = mModule->GetDefaultTypedValue(intType);