mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-09 20:12:21 +02:00
Allow static method overrides in extensions
This commit is contained in:
parent
16a4b36b17
commit
bd3fa65692
1 changed files with 13 additions and 10 deletions
|
@ -21542,16 +21542,6 @@ void BfModule::DoMethodDeclaration(BfMethodDeclaration* methodDeclaration, bool
|
|||
else if (methodDeclaration != NULL)
|
||||
virtualToken = methodDeclaration->mVirtualSpecifier;
|
||||
|
||||
if ((methodDef->mIsVirtual) && (methodDef->mIsStatic))
|
||||
{
|
||||
Fail("Static members cannot be marked as override, virtual, or abstract", virtualToken, true);
|
||||
}
|
||||
else if (methodDef->mIsVirtual)
|
||||
{
|
||||
if ((methodDef->mProtection == BfProtection_Private) && (virtualToken != NULL))
|
||||
Fail("Virtual or abstract members cannot be private", virtualToken, true);
|
||||
}
|
||||
|
||||
// Don't compare specialized generic methods against normal methods
|
||||
if ((((mCurMethodInstance->mIsUnspecialized) || (mCurMethodInstance->mMethodDef->mGenericParams.size() == 0))) &&
|
||||
(!methodDef->mIsLocalMethod))
|
||||
|
@ -21748,6 +21738,19 @@ void BfModule::DoMethodDeclaration(BfMethodDeclaration* methodDeclaration, bool
|
|||
}
|
||||
}
|
||||
|
||||
if ((methodDef->mIsVirtual) && (methodDef->mIsStatic) && (!methodInstance->mIsInnerOverride))
|
||||
{
|
||||
if ((virtualToken != NULL) && (virtualToken->mToken == BfToken_Override) && (methodDef->mDeclaringType->mTypeCode == BfTypeCode_Extension))
|
||||
Fail("No suitable method found to override", virtualToken, true);
|
||||
else
|
||||
Fail("Static members cannot be marked as override, virtual, or abstract", virtualToken, true);
|
||||
}
|
||||
else if (methodDef->mIsVirtual)
|
||||
{
|
||||
if ((methodDef->mProtection == BfProtection_Private) && (virtualToken != NULL))
|
||||
Fail("Virtual or abstract members cannot be private", virtualToken, true);
|
||||
}
|
||||
|
||||
mCompiler->mStats.mMethodDeclarations++;
|
||||
mCompiler->UpdateCompletion();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue