Browse Source

Fixed expandedParamsArray in unspecialized sections

Brian Fiete 1 year ago
parent
commit
36700b39ab

+ 6 - 1
IDEHelper/Compiler/BfExprEvaluator.cpp

@@ -8438,7 +8438,12 @@ BfTypedValue BfExprEvaluator::CreateCall(BfAstNode* targetSrc, const BfTypedValu
 		{
 			if (argValue)
 			{
-				if (IsConstEval())
+				if (argValue.mValue.IsFake())
+				{
+					if ((!mModule->IsInUnspecializedGeneric()) && (!mModule->mBfIRBuilder->mIgnoreWrites))
+						mModule->InternalError("Invalid expandedParamsArray value");
+				}
+				else if (IsConstEval())
 				{
 					auto constant = mModule->mBfIRBuilder->GetConstant(expandedParamsArray.mValue);
 					BF_ASSERT(constant->mConstType == BfConstType_Agg);

+ 0 - 1
IDEHelper/Compiler/BfModuleTypeUtils.cpp

@@ -13280,7 +13280,6 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
 						}
 						else
 							fromTypedValue = BfTypedValue(mBfIRBuilder->GetFakeVal(), genericParamInst->mTypeConstraint, genericParamInst->mTypeConstraint->IsValueType());
-						prevIgnoreWrites.Restore();
 
 						auto result = CastToValue(srcNode, fromTypedValue, toType, (BfCastFlags)(castFlags | BfCastFlags_SilentFail));
 						if (result)