X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=src%2Fparser_proc_grammar.y;h=af5216514061644518283d7f23593199f7dde66e;hb=53495ef4bd0321f7f92dd05eef8e01b90d7b415a;hp=22733b78c6c19bae89eb6c547973b5cf8e28a0ad;hpb=77d63a537de5430f5f8f177c842fa99d65f685bf;p=m6w6%2Fext-psi diff --git a/src/parser_proc_grammar.y b/src/parser_proc_grammar.y index 22733b7..af52165 100644 --- a/src/parser_proc_grammar.y +++ b/src/parser_proc_grammar.y @@ -62,7 +62,6 @@ static inline void psi_parser_proc_add_typedef(struct psi_parser *P, struct psi_ P->types = psi_plist_init((psi_plist_dtor) psi_decl_arg_free); } P->types = psi_plist_add(P->types, &def); - psi_parser_proc_add_from_typedef(P, def); } static inline void psi_parser_proc_add_const(struct psi_parser *P, struct psi_const *cnst) { assert(cnst); @@ -787,6 +786,7 @@ typedef[def]: $def->var->token = psi_token_copy($name_token); $def->type->token = psi_token_copy($enum->token); $def->type->real.enm = $enum; + psi_parser_proc_add_enum(P, $enum); } | struct_name[struct] align_and_size[as] struct_args_block[args] decl_var[var] { $def = psi_decl_arg_init(psi_decl_type_init(PSI_T_STRUCT, $struct->text), $var); @@ -795,6 +795,7 @@ typedef[def]: $def->type->real.strct->token = psi_token_copy($struct); $def->type->real.strct->align = $as.pos; $def->type->real.strct->size = $as.len; + psi_parser_proc_add_struct(P, $def->type->real.strct); } | union_name[union] align_and_size[as] struct_args_block[args] decl_var[var] { $def = psi_decl_arg_init(psi_decl_type_init(PSI_T_UNION, $union->text), $var); @@ -803,6 +804,7 @@ typedef[def]: $def->type->real.unn->token = psi_token_copy($union); $def->type->real.unn->align = $as.pos; $def->type->real.unn->size = $as.len; + psi_parser_proc_add_union(P, $def->type->real.unn); } | const_decl_type[type] decl_stdint_type[stdint] { $stdint->type = PSI_T_NAME;