summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-parser.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2025-04-14 17:32:24 -0700
committerGitHub <noreply@github.com>2025-04-14 17:32:24 -0700
commit5902ee7f3822178c601edcb128a846c502bca3de (patch)
tree80950a5133c90a072d57dcebc4172b92735e04d9 /source/slang/slang-parser.cpp
parentc1d1e37c975f1800325bf28619db71fa762e1f1d (diff)
Consume `;` after parsing typedef decl. (#6759)
* Consume `;` after parsing typedef decl. * Fix. * Fix regressions.
Diffstat (limited to 'source/slang/slang-parser.cpp')
-rw-r--r--source/slang/slang-parser.cpp34
1 files changed, 18 insertions, 16 deletions
diff --git a/source/slang/slang-parser.cpp b/source/slang/slang-parser.cpp
index 97777c9fe..b7828999a 100644
--- a/source/slang/slang-parser.cpp
+++ b/source/slang/slang-parser.cpp
@@ -841,22 +841,6 @@ bool AdvanceIfMatch(Parser* parser, MatchedTokenType type)
return AdvanceIfMatch(parser, type, &ignored);
}
-NodeBase* parseTypeDef(Parser* parser, void* /*userData*/)
-{
- TypeDefDecl* typeDefDecl = parser->astBuilder->create<TypeDefDecl>();
-
- // TODO(tfoley): parse an actual declarator
- auto type = parser->ParseTypeExp();
-
- auto nameToken = parser->ReadToken(TokenType::Identifier);
- typeDefDecl->loc = nameToken.loc;
-
- typeDefDecl->nameAndLoc = NameLoc(nameToken);
- typeDefDecl->type = type;
-
- return typeDefDecl;
-}
-
// Add a modifier to a list of modifiers being built
static void AddModifier(Modifier*** ioModifierLink, Modifier* modifier)
{
@@ -4349,6 +4333,24 @@ static NodeBase* parseFuncDecl(Parser* parser, void* /*userData*/)
});
}
+NodeBase* parseTypeDef(Parser* parser, void* /*userData*/)
+{
+ TypeDefDecl* typeDefDecl = parser->astBuilder->create<TypeDefDecl>();
+
+ // TODO(tfoley): parse an actual declarator
+ auto type = parser->ParseTypeExp();
+
+ auto nameToken = parser->ReadToken(TokenType::Identifier);
+ typeDefDecl->loc = nameToken.loc;
+
+ typeDefDecl->nameAndLoc = NameLoc(nameToken);
+ typeDefDecl->type = type;
+
+ AdvanceIf(parser, TokenType::Semicolon);
+
+ return typeDefDecl;
+}
+
static NodeBase* parseTypeAliasDecl(Parser* parser, void* /*userData*/)
{
TypeAliasDecl* decl = parser->astBuilder->create<TypeAliasDecl>();