|
@@ -4181,20 +4181,14 @@ void BfModule::CreateFakeCallerMethod(const String& funcName)
|
|
}
|
|
}
|
|
|
|
|
|
void BfModule::CreateValueTypeEqualsMethod(bool strictEquals)
|
|
void BfModule::CreateValueTypeEqualsMethod(bool strictEquals)
|
|
-{
|
|
|
|
|
|
+{
|
|
if (mCurMethodInstance->mIsUnspecialized)
|
|
if (mCurMethodInstance->mIsUnspecialized)
|
|
return;
|
|
return;
|
|
|
|
|
|
if (mBfIRBuilder->mIgnoreWrites)
|
|
if (mBfIRBuilder->mIgnoreWrites)
|
|
return;
|
|
return;
|
|
|
|
|
|
- auto boolType = GetPrimitiveType(BfTypeCode_Boolean);
|
|
|
|
- if (mCurTypeInstance->IsValuelessType())
|
|
|
|
- {
|
|
|
|
- mBfIRBuilder->CreateRet(GetDefaultValue(boolType));
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ auto boolType = GetPrimitiveType(BfTypeCode_Boolean);
|
|
if (mCurTypeInstance->IsTypedPrimitive())
|
|
if (mCurTypeInstance->IsTypedPrimitive())
|
|
{
|
|
{
|
|
BfExprEvaluator exprEvaluator(this);
|
|
BfExprEvaluator exprEvaluator(this);
|
|
@@ -4210,6 +4204,12 @@ void BfModule::CreateValueTypeEqualsMethod(bool strictEquals)
|
|
auto compareType = mCurMethodInstance->mParams[0].mResolvedType;
|
|
auto compareType = mCurMethodInstance->mParams[0].mResolvedType;
|
|
bool isValid = true;
|
|
bool isValid = true;
|
|
|
|
|
|
|
|
+ if (compareType->IsValuelessType())
|
|
|
|
+ {
|
|
|
|
+ mBfIRBuilder->CreateRet(GetDefaultValue(boolType));
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
auto compareDType = compareType->ToDependedType();
|
|
auto compareDType = compareType->ToDependedType();
|
|
BfTypeInstance* compareTypeInst = compareType->ToTypeInstance();
|
|
BfTypeInstance* compareTypeInst = compareType->ToTypeInstance();
|
|
if (compareTypeInst != NULL)
|
|
if (compareTypeInst != NULL)
|