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

Appended fields

This commit is contained in:
Brian Fiete 2022-06-27 10:55:31 -07:00
parent 52544e6782
commit 1d2811f50d
22 changed files with 596 additions and 52 deletions

View file

@ -6319,6 +6319,7 @@ BfAstNode* BfReducer::ReadTypeMember(BfTokenNode* tokenNode, bool declStarted, i
case BfToken_Override:
case BfToken_Abstract:
case BfToken_Concrete:
case BfToken_Append:
case BfToken_Extern:
case BfToken_New:
case BfToken_Implicit:
@ -6575,6 +6576,30 @@ BfAstNode* BfReducer::ReadTypeMember(BfTokenNode* tokenNode, bool declStarted, i
if (token == BfToken_Extern)
{
if ((fieldDecl->mExternSpecifier != NULL) && (fieldDecl->mExternSpecifier->mToken == BfToken_Append))
{
Fail("Extern cannot be used with 'append' specified", tokenNode);
}
else if (fieldDecl->mExternSpecifier != NULL)
{
Fail("Extern already specified", tokenNode);
}
MEMBER_SET(fieldDecl, mExternSpecifier, tokenNode);
handled = true;
}
if (token == BfToken_Append)
{
if ((fieldDecl->mExternSpecifier != NULL) && (fieldDecl->mExternSpecifier->mToken == BfToken_Extern))
{
Fail("Append cannot be used with 'extern' specified", tokenNode);
}
else if (fieldDecl->mExternSpecifier != NULL)
{
Fail("Append already specified", tokenNode);
}
MEMBER_SET(fieldDecl, mExternSpecifier, tokenNode);
handled = true;
}