From 5902ee7f3822178c601edcb128a846c502bca3de Mon Sep 17 00:00:00 2001 From: Yong He Date: Mon, 14 Apr 2025 17:32:24 -0700 Subject: Consume `;` after parsing typedef decl. (#6759) * Consume `;` after parsing typedef decl. * Fix. * Fix regressions. --- source/slang/slang-parser.cpp | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) (limited to 'source/slang/slang-parser.cpp') 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(); - - // 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(); + + // 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(); -- cgit v1.2.3