]> git.draconx.ca Git - cdecl99.git/blobdiff - src/parse-decl.c
Fix parsing of int (x*).
[cdecl99.git] / src / parse-decl.c
index 4489532cdaa1f232862968c47871dafe53431f65..e96efb7073362ba47eda7e8c6341362cc1246980 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Parse and validate C declarations.
- *  Copyright © 2011-2012 Nick Bowler
+ *  Copyright © 2011-2012, 2020 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
@@ -116,12 +116,6 @@ static bool valid_declspecs(struct cdecl *decl, bool top)
  * if a declarator could be interpreted as something other than a function,
  * do that.
  *
- *   - The function declarator has a null child declarator.
- *   - The function declarator has exactly one parameter, and is not variadic.
- *   - The function parameter has a type specifier, and it is a typedef name.
- *   - The function parameter has no other declaration specifiers.
- *   - The function parameter does not declare an identifier.
- *
  * Since cdecl99 supports things like [*] in any context (in C, such constructs
  * are only valid in function parameter lists), we don't treat them specially
  * here.
@@ -165,6 +159,8 @@ static bool function_is_reducible(struct cdecl_declarator *d)
                return false; /* e.g. int (int) */
        if (d->u.function.parameters->specifiers->next)
                return false; /* e.g. int (size_t const) */
+       if (d->u.function.parameters->declarators->type == CDECL_DECL_POINTER)
+               return false; /* e.g. int (x *) */
 
        return true;
 }