1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 19:48:20 +02:00

File-scoped namespaces

This commit is contained in:
Brian Fiete 2022-04-17 08:40:25 -07:00
parent 2d808ec649
commit f3f2f4c6ec
8 changed files with 76 additions and 18 deletions

View file

@ -8537,14 +8537,22 @@ BfAstNode* BfReducer::CreateTopLevelObject(BfTokenNode* tokenNode, BfAttributeDi
ReplaceNode(tokenNode, namespaceDeclaration);
MoveNode(identifierNode, namespaceDeclaration);
auto blockNode = ExpectBlockAfter(namespaceDeclaration);
if (blockNode == NULL)
BfAstNode* bodyNode = NULL;
BfBlock* blockNode = NULL;
if (auto nextToken = BfNodeDynCast<BfTokenNode>(mVisitorPos.GetNext()))
bodyNode = ExpectTokenAfter(namespaceDeclaration, BfToken_Semicolon);
else
bodyNode = blockNode = ExpectBlockAfter(namespaceDeclaration);
if (bodyNode == NULL)
return namespaceDeclaration;
MoveNode(blockNode, namespaceDeclaration);
namespaceDeclaration->mBlock = blockNode;
MoveNode(bodyNode, namespaceDeclaration);
namespaceDeclaration->mBody = bodyNode;
mCurNamespaceStack.Add(namespaceDeclaration);
HandleTopLevel(namespaceDeclaration->mBlock);
if (blockNode != NULL)
HandleTopLevel(blockNode);
mCurNamespaceStack.pop_back();
return namespaceDeclaration;
}