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

Added support for global:: lookups

This commit is contained in:
Brian Fiete 2025-05-18 12:13:15 +02:00
parent ee50457885
commit 958a1630aa
13 changed files with 202 additions and 28 deletions

View file

@ -304,6 +304,7 @@ enum BfToken : uint8
BfToken_RDblChevron,
BfToken_Semicolon,
BfToken_Colon,
BfToken_ColonColon,
BfToken_Comma,
BfToken_Dot,
BfToken_DotDot,
@ -2014,6 +2015,13 @@ public:
BfTokenNode* mColonToken;
BfAstNode* mTargetNode; // . : or identifier
BfAttributeDirective* mAttributes;
BfAstNode* GetTargetNode()
{
if ((mColonToken != NULL) && (mColonToken->mToken == BfToken_ColonColon))
return mColonToken;
return mTargetNode;
}
}; BF_AST_DECL(BfScopeNode, BfAstNode);
class BfNewNode : public BfAstNode
@ -2108,6 +2116,12 @@ public:
ASTREF(BfIdentifierNode*) mLeft;
ASTREF(BfTokenNode*) mDot;
ASTREF(BfIdentifierNode*) mRight;
bool IsGlobalLookup()
{
return (mDot != NULL) && (mDot->mToken == BfToken_ColonColon);
}
}; BF_AST_DECL(BfQualifiedNameNode, BfIdentifierNode);
class BfUsingDirective : public BfStatement
@ -2599,6 +2613,12 @@ public:
ASTREF(BfTypeReference*) mLeft;
ASTREF(BfTokenNode*) mDot;
ASTREF(BfTypeReference*) mRight;
bool IsGlobalLookup()
{
return (mDot != NULL) && (mDot->mToken == BfToken_ColonColon);
}
}; BF_AST_DECL(BfQualifiedTypeReference, BfTypeReference);
class BfResolvedTypeReference : public BfTypeReference
@ -3036,6 +3056,13 @@ public:
BfAstNode* mTargetNode;
BfAstNode* GetScopeNameNode()
{
if ((mColonToken != NULL) && (mColonToken->mToken == BfToken_ColonColon))
return mColonToken;
return mScopeName;
}
// virtual bool IsMissingSemicolon() override
// {
// return BfNodeDynCastExact<BfBlock>(mTargetNode) == NULL;
@ -3059,6 +3086,13 @@ public:
BfAstNode* mTarget;
BfTokenNode* mColonToken;
BfAstNode* mScopeName; // :, mixin, or identifier
BfAstNode* GetScopeNameNode()
{
if ((mColonToken != NULL) && (mColonToken->mToken == BfToken_ColonColon))
return mColonToken;
return mScopeName;
}
}; BF_AST_DECL(BfScopedInvocationTarget, BfAstNode);
class BfInvocationExpression : public BfMethodBoundExpression