aboutsummaryrefslogtreecommitdiff
path: root/src/parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.cpp')
-rw-r--r--src/parser.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/parser.cpp b/src/parser.cpp
index 9a85dc3b9e..943bd2c58d 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -2605,7 +2605,7 @@ static AstNode *ast_parse_use(ParseContext *pc, int *token_index,
/*
ContainerDecl = ("struct" | "enum" | "union") "Symbol" option(ParamDeclList) "{" many(StructMember) "}"
-StructMember = many(Directive) option(VisibleMod) (StructField | FnDef | GlobalVarDecl)
+StructMember = many(Directive) option(VisibleMod) (StructField | FnDef | GlobalVarDecl | ContainerDecl)
StructField : "Symbol" option(":" Expression) ",")
*/
static AstNode *ast_parse_container_decl(ParseContext *pc, int *token_index,
@@ -2675,6 +2675,12 @@ static AstNode *ast_parse_container_decl(ParseContext *pc, int *token_index,
continue;
}
+ AstNode *container_decl_node = ast_parse_container_decl(pc, token_index, directive_list, visib_mod);
+ if (container_decl_node) {
+ node->data.struct_decl.decls.append(container_decl_node);
+ continue;
+ }
+
Token *token = &pc->tokens->at(*token_index);
if (token->id == TokenIdRBrace) {