diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 55b2846f..61c7649d 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -11763,7 +11763,7 @@ void BfExprEvaluator::Visit(BfMixinExpression* mixinExpr) void BfExprEvaluator::Visit(BfSizedArrayCreateExpression* createExpr) { - auto type = mModule->ResolveTypeRef(createExpr->mTypeRef); + auto type = mModule->ResolveTypeRef(createExpr->mTypeRef, NULL, BfPopulateType_Data, BfResolveTypeRefFlag_AllowInferredSizedArray); if (type == NULL) return; @@ -11789,6 +11789,14 @@ void BfExprEvaluator::Visit(BfSizedArrayCreateExpression* createExpr) return; } + if (type->IsUndefSizedArray()) + { + int arraySize = 0; + if (createExpr->mInitializer != NULL) + arraySize = (int)createExpr->mInitializer->mValues.size(); + type = mModule->CreateSizedArrayType(type->GetUnderlyingType(), arraySize); + } + BfSizedArrayType* arrayType = (BfSizedArrayType*)type; if (createExpr->mInitializer == NULL)