aboutsummaryrefslogtreecommitdiff
path: root/src/parser.cpp
diff options
context:
space:
mode:
authorGinger Bill <bill@gingerbill.org>2017-09-21 23:18:28 +0100
committerGinger Bill <bill@gingerbill.org>2017-09-21 23:18:28 +0100
commitc43d66c286c0cf622402bd1e21f2bbc7de2a6b49 (patch)
tree71a723ef4583645ff20415c376272065f06e882b /src/parser.cpp
parent95fb5fa46cfb3c90d6d69027f090364333d8f821 (diff)
Use comma for struct field separators (disallow nesting)
Diffstat (limited to 'src/parser.cpp')
-rw-r--r--src/parser.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/parser.cpp b/src/parser.cpp
index 730f16d06..37412c157 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -130,6 +130,7 @@ enum FieldFlag {
FieldFlag_c_vararg = 1<<3,
FieldFlag_Signature = FieldFlag_ellipsis|FieldFlag_using|FieldFlag_no_alias|FieldFlag_c_vararg,
+ FieldFlag_Struct = FieldFlag_using,
};
enum StmtAllowFlag {
@@ -3478,6 +3479,11 @@ AstNode *parse_struct_field_list(AstFile *f, isize *name_count_) {
isize total_name_count = 0;
+ AstNode *params = parse_field_list(f, &total_name_count, FieldFlag_Struct, Token_CloseBrace, true, false);
+ if (name_count_) *name_count_ = total_name_count;
+ return params;
+
+#if 0
while (f->curr_token.kind != Token_CloseBrace &&
f->curr_token.kind != Token_EOF) {
AstNode *decl = parse_stmt(f);
@@ -3508,6 +3514,7 @@ AstNode *parse_struct_field_list(AstFile *f, isize *name_count_) {
if (name_count_) *name_count_ = total_name_count;
return ast_field_list(f, start_token, decls);
+#endif
}
AstNode *parse_field_list(AstFile *f, isize *name_count_, u32 allowed_flags, TokenKind follow, bool allow_default_parameters, bool allow_type_token) {