1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-23 18:18:00 +02:00

Anonymous subclassing in initializer blocks

This commit is contained in:
Brian Fiete 2025-01-04 10:57:37 -08:00
parent 01c2c35fc3
commit a5e9a33f64
25 changed files with 1111 additions and 608 deletions

View file

@ -358,6 +358,7 @@ class BfAttributedIdentifierNode;
class BfQualifiedNameNode;
class BfNamespaceDeclaration;
class BfTypeDeclaration;
class BfInitializerTypeDeclaration;
class BfTypeAliasDeclaration;
class BfMethodDeclaration;
class BfOperatorDeclaration;
@ -1809,6 +1810,7 @@ public:
ASTREF(BfTokenNode*) mCloseBrace;
//BfDebugArray<BfAstNode*> mChildArr;
BfSizedArray<ASTREF(BfAstNode*)> mChildArr;
int mParserBlockId;
public:
using BfAstNode::Init;
@ -2282,6 +2284,7 @@ public:
BfAstNode* mTarget;
BfTokenNode* mOpenBrace;
BfInlineTypeReference* mInlineTypeRef;
BfSizedArray<BfExpression*> mValues;
BfSizedArray<BfTokenNode*> mCommas;
BfTokenNode* mCloseBrace;
@ -2453,9 +2456,16 @@ public:
BfSizedArray<BfTypeDeclaration*> mAnonymousTypes;
bool IsAnonymous();
bool IsAnonymousInitializerType();
}; BF_AST_DECL(BfTypeDeclaration, BfAstNode);
class BfInitializerTypeDeclaration : public BfTypeDeclaration
{
public:
BF_AST_TYPE(BfInitializerTypeDeclaration, BfTypeDeclaration);
}; BF_AST_DECL(BfInitializerTypeDeclaration, BfTypeDeclaration);
class BfTypeAliasDeclaration : public BfTypeDeclaration
{
public:
@ -2965,6 +2975,14 @@ public:
BfSizedArray<BfTokenNode*> mCommas;
}; BF_AST_DECL(BfObjectCreateExpression, BfMethodBoundExpression);
class BfExtendExpression : public BfExpression
{
public:
BF_AST_TYPE(BfExtendExpression, BfExpression);
BfAstNode* mTarget;
BfTypeDeclaration* mTypeDecl;
}; BF_AST_DECL(BfExtendExpression, BfExpression);
class BfBoxExpression : public BfExpression
{
public: