X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/blobdiff_plain/b36da52d0e7798814d23cdc9979fc1900f8e9e51..0c61f9637a469ac7a28b5a329551b03e6ad14d62:/src/parse-decl.c diff --git a/src/parse-decl.c b/src/parse-decl.c index e96efb7..2757703 100644 --- a/src/parse-decl.c +++ b/src/parse-decl.c @@ -1,31 +1,30 @@ /* - * Parse and validate C declarations. - * Copyright © 2011-2012, 2020 Nick Bowler + * Parse and validate C declarations. + * Copyright © 2011-2012, 2020-2021 Nick Bowler * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ + #include #include #include #include #include "cdecl.h" -#include "typemap.h" +#include "cdecl-internal.h" #include "parse.h" #include "scan.h" -#include "i18n.h" -#include "normalize.h" /* * Verify the declaration specifiers of a declaration. If top is true, treat @@ -446,10 +445,12 @@ struct cdecl *cdecl_parse_decl(const char *declstr) * new specifier list. */ norm_specs = cdecl__normalize_specs(decl->specifiers); - for (struct cdecl *i = decl; i; i = i->next) { i->specifiers = norm_specs; + } + /* Now perform checks and simplifications on each declarator. */ + for (struct cdecl *i = decl; i; i = i->next) { if (!forall_declarators(i, reduce_parentheses)) goto err; if (!forall_declarators(i, simplify_functions))