浏览代码

Fixed expandedParamsArray in unspecialized sections

Brian Fiete 1 年之前
父节点
当前提交
36700b39ab
共有 2 个文件被更改,包括 6 次插入2 次删除
  1. 6 1
      IDEHelper/Compiler/BfExprEvaluator.cpp
  2. 0 1
      IDEHelper/Compiler/BfModuleTypeUtils.cpp

+ 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)