aboutsummaryrefslogtreecommitdiff
path: root/src/parser.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2016-05-09 13:44:29 -0700
committerAndrew Kelley <superjoe30@gmail.com>2016-05-09 13:44:29 -0700
commitf1e5be96860406d7a4239b174c896799d8fd6545 (patch)
tree4b322fa179f2eaca32664d415a4c069777bd3e7f /src/parser.cpp
parent745c325d0f498406f229e532753e5d5712e824d4 (diff)
downloadzig-f1e5be96860406d7a4239b174c896799d8fd6545.tar.gz
zig-f1e5be96860406d7a4239b174c896799d8fd6545.zip
fix ability to use previous generic params and
add error when `%return` shows up in a function with incorrect return type
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) {