Skip to content

Commit 5b91c50

Browse files
YuriUfimtsevmrbean-bremen
authored andcommitted
Add support for parsing enum class declarations
1 parent 6f75669 commit 5b91c50

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

generator/parser/parser.cpp

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1389,9 +1389,25 @@ bool Parser::parseEnumSpecifier(TypeSpecifierAST *&node)
13891389

13901390
CHECK(Token_enum);
13911391

1392+
if (token_stream.lookAhead() == Token_class)
1393+
{
1394+
token_stream.nextToken();
1395+
}
1396+
13921397
NameAST *name = 0;
13931398
parseName(name);
13941399

1400+
if(token_stream.lookAhead() == ':')
1401+
{
1402+
token_stream.nextToken();
1403+
TypeSpecifierAST *ast = 0;
1404+
if (!parseSimpleTypeSpecifier(ast))
1405+
{
1406+
token_stream.rewind((int) start);
1407+
return false;
1408+
}
1409+
}
1410+
13951411
if (token_stream.lookAhead() != '{')
13961412
{
13971413
token_stream.rewind((int) start);
@@ -1796,12 +1812,17 @@ bool Parser::parseForwardDeclarationSpecifier(TypeSpecifierAST *&node)
17961812
std::size_t start = token_stream.cursor();
17971813

17981814
int kind = token_stream.lookAhead();
1799-
if (kind != Token_class && kind != Token_struct && kind != Token_union)
1815+
if (kind != Token_class && kind != Token_struct && kind != Token_union && kind != Token_enum)
18001816
return false;
18011817

18021818
std::size_t class_key = token_stream.cursor();
18031819
token_stream.nextToken();
18041820

1821+
if (kind == Token_enum && token_stream.lookAhead() == Token_class)
1822+
{
1823+
token_stream.nextToken();
1824+
}
1825+
18051826
NameAST *name = 0;
18061827
if (!parseName(name, false)) {
18071828
token_stream.rewind((int) start);

0 commit comments

Comments
 (0)