Explorar o código

Fixed recursive constraint check in casting

Brian Fiete %!s(int64=3) %!d(string=hai) anos
pai
achega
c23d44502b
Modificáronse 1 ficheiros con 3 adicións e 0 borrados
  1. 3 0
      IDEHelper/Compiler/BfModuleTypeUtils.cpp

+ 3 - 0
IDEHelper/Compiler/BfModuleTypeUtils.cpp

@@ -11917,6 +11917,9 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
 					return mBfIRBuilder->GetFakeVal();
 					return mBfIRBuilder->GetFakeVal();
 			}
 			}
 
 
+			if ((genericParamInst->mTypeConstraint == toType) && (toType->IsUnspecializedType()))
+				return mBfIRBuilder->GetFakeVal();
+
 			auto castedVal = CastToValue(srcNode, typedVal, genericParamInst->mTypeConstraint, (BfCastFlags)(castFlags | BfCastFlags_SilentFail));
 			auto castedVal = CastToValue(srcNode, typedVal, genericParamInst->mTypeConstraint, (BfCastFlags)(castFlags | BfCastFlags_SilentFail));
 			if (castedVal)
 			if (castedVal)
 				return castedVal;
 				return castedVal;