diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index d4d30bc4..20598a8b 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -13146,13 +13146,20 @@ void BfExprEvaluator::CreateObject(BfObjectCreateExpression* objCreateExpr, BfAs auto genericParam = mModule->GetGenericParamInstance((BfGenericParamType*)resolvedTypeRef); if (genericParam->mTypeConstraint == NULL) { - if ((genericParam->mGenericParamFlags & BfGenericParamFlag_New) == 0) + if ((genericParam->mGenericParamFlags & BfGenericParamFlag_Var) != 0) { - mModule->Fail(StrFormat("Must add 'where %s : new' constraint to generic parameter to instantiate type", genericParam->GetName().c_str()), objCreateExpr->mTypeRef); + // Allow it } - if (objCreateExpr->mArguments.size() != 0) + else { - mModule->Fail(StrFormat("Only default parameterless constructors can be called on generic argument '%s'", genericParam->GetName().c_str()), objCreateExpr->mTypeRef); + if ((genericParam->mGenericParamFlags & BfGenericParamFlag_New) == 0) + { + mModule->Fail(StrFormat("Must add 'where %s : new' constraint to generic parameter to instantiate type", genericParam->GetName().c_str()), objCreateExpr->mTypeRef); + } + if (objCreateExpr->mArguments.size() != 0) + { + mModule->Fail(StrFormat("Only default parameterless constructors can be called on generic argument '%s'", genericParam->GetName().c_str()), objCreateExpr->mTypeRef); + } } }