1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 04:22:20 +02:00

fixed crash when writing static unary operator

This commit is contained in:
EinBurgbauer 2021-05-02 12:11:16 +02:00
parent 4211c267a6
commit d25e815701

View file

@ -18586,18 +18586,21 @@ void BfModule::ProcessMethod(BfMethodInstance* methodInstance, bool isInlineDup)
{ {
if (methodDef->mIsStatic) if (methodDef->mIsStatic)
{ {
auto checkParam0 = mCurMethodInstance->GetParamType(0);
if ((checkParam0->IsRef()) && (!checkParam0->IsOut()))
checkParam0 = checkParam0->GetUnderlyingType();
if (methodDef->mParams.size() != 1) if (methodDef->mParams.size() != 1)
{ {
Fail("Unary operators must declare one parameter", paramErrorRefNode); Fail("Unary operators must declare one parameter", paramErrorRefNode);
} }
else if ((checkParam0 != mCurTypeInstance) && (!checkParam0->IsSelf())) else
{
auto checkParam0 = mCurMethodInstance->GetParamType(0);
if ((checkParam0->IsRef()) && (!checkParam0->IsOut()))
checkParam0 = checkParam0->GetUnderlyingType();
if ((checkParam0 != mCurTypeInstance) && (!checkParam0->IsSelf()))
{ {
Fail("The parameter of a unary operator must be the containing type", paramErrorRefNode); Fail("The parameter of a unary operator must be the containing type", paramErrorRefNode);
} }
}
if (((operatorDef->mOperatorDeclaration->mUnaryOp == BfUnaryOp_Increment) || if (((operatorDef->mOperatorDeclaration->mUnaryOp == BfUnaryOp_Increment) ||
(operatorDef->mOperatorDeclaration->mUnaryOp == BfUnaryOp_Decrement)) && (operatorDef->mOperatorDeclaration->mUnaryOp == BfUnaryOp_Decrement)) &&