aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/parse.c
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-03-15 18:44:53 +0900
committernsfisis <nsfisis@gmail.com>2026-03-15 18:45:06 +0900
commit5eb0cc0948e306e12370f42fae95ace3ca6b3451 (patch)
treef77dae697c12b8512ad09c1b2078eea3886c1a59 /src/parse.c
parentc94f0562b8a0169438dccaea7d02f2b34c6f7795 (diff)
downloadducc-fix/nix-update.tar.gz
ducc-fix/nix-update.tar.zst
ducc-fix/nix-update.zip
Diffstat (limited to 'src/parse.c')
-rw-r--r--src/parse.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/src/parse.c b/src/parse.c
index 6bc782c..638ad0c 100644
--- a/src/parse.c
+++ b/src/parse.c
@@ -1894,7 +1894,6 @@ static AstNode* parse_member_declaration_list(Parser* p) {
static AstNode* parse_member_declaration(Parser* p) {
Type* base_ty = parse_specifier_qualifier_list(p);
- AstNode* decls = NULL;
if (consume_token_if(p, TokenKind_semicolon)) {
char* name = generate_anonymous_name(p);
AstNode* decls = ast_new_list(1);
@@ -1905,16 +1904,8 @@ static AstNode* parse_member_declaration(Parser* p) {
ast_append(decls, member);
return decls;
}
- decls = parse_member_declarator_list(p, base_ty);
-
+ AstNode* decls = parse_member_declarator_list(p, base_ty);
expect(p, TokenKind_semicolon);
-
- for (int i = 0; i < decls->as.list->len; i++) {
- const char* member_name = decls->as.list->items[i].as.declarator->name;
- decls->as.list->items[i].kind = AstNodeKind_struct_member;
- decls->as.list->items[i].as.struct_member = calloc(1, sizeof(StructMemberNode));
- decls->as.list->items[i].as.struct_member->name = member_name;
- }
return decls;
}
@@ -2115,8 +2106,9 @@ static AstNode* parse_member_declarator(Parser* p, Type* base_ty) {
fatal_error("parse_member_declarator: invalid bit-field");
int bit_width;
memcpy(&bit_width, bit_width_evaluated->blocks[0].as.bytes.buf, sizeof(int));
- (void)bit_width;
- // TODO: implement bit-fields.
+ decl->as.struct_member.is_bitfield = true;
+ decl->as.struct_member.bitfield_offset = -1; // TODO
+ decl->as.struct_member.bitfield_width = bit_width;
}
return decl;
}