瀏覽代碼

Continue searching in CastToValue constraint check on method return fail

Brian Fiete 3 年之前
父節點
當前提交
e4cac2ca24
共有 1 個文件被更改,包括 5 次插入1 次删除
  1. 5 1
      IDEHelper/Compiler/BfModuleTypeUtils.cpp

+ 5 - 1
IDEHelper/Compiler/BfModuleTypeUtils.cpp

@@ -13764,7 +13764,11 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
 		{
 			auto result = BfTypedValue(mBfIRBuilder->GetFakeVal(), operatorConstraintReturnType);
 			if (result.mType != toType)
-				return CastToValue(srcNode, result, toType, (BfCastFlags)(castFlags | BfCastFlags_Explicit | BfCastFlags_NoConversionOperator), resultFlags);
+			{
+				auto castedResult = CastToValue(srcNode, result, toType, (BfCastFlags)(castFlags | BfCastFlags_Explicit | BfCastFlags_NoConversionOperator), resultFlags);
+				if (castedResult)
+					return castedResult;
+			}
 			if (result)
 				return result.mValue;
 		}