From: Matthias Kruk Date: Sat, 11 Jul 2020 08:58:54 +0000 (+0900) Subject: parser: Simplify specifier_qualifier_list type X-Git-Url: https://git.corax.cc/?a=commitdiff_plain;h=443ee931fa8582fa5d7283b047d2aa68fa452c52;p=ccc parser: Simplify specifier_qualifier_list type --- diff --git a/src/grammar.c b/src/grammar.c index e6bf406..d092852 100644 --- a/src/grammar.c +++ b/src/grammar.c @@ -1189,23 +1189,12 @@ struct specifier_qualifier_list *specifier_qualifier_list_new(void) void specifier_qualifier_list_free(struct specifier_qualifier_list *sql) { - switch(sql->type) { - case SQ_LIST_TYPE_SPECIFIER_LIST: - if(sql->data.tspec) { - type_specifier_free(sql->data.tspec); - } - - break; - - case SQ_LIST_TYPE_QUALIFIER_LIST: - if(sql->data.tqual) { - type_qualifier_free(sql->data.tqual); - } - - break; + if(sql->tspec) { + type_specifier_free(sql->tspec); + } - default: - break; + if(sql->tqual) { + type_qualifier_free(sql->tqual); } if(sql->next) { diff --git a/src/grammar.h b/src/grammar.h index a14bf2c..dbb7723 100644 --- a/src/grammar.h +++ b/src/grammar.h @@ -317,20 +317,9 @@ enum type_specifier_type { TYPE_SPECIFIER_TYPEDEF }; -enum sq_list_type { - SQ_LIST_TYPE_INVALID, - SQ_LIST_TYPE_SPECIFIER_LIST, - SQ_LIST_TYPE_QUALIFIER_LIST -}; - struct specifier_qualifier_list { - enum sq_list_type type; - - union { - struct type_specifier *tspec; - struct type_qualifier *tqual; - } data; - + struct type_specifier *tspec; + struct type_qualifier *tqual; struct specifier_qualifier_list *next; };