devel/cdecl: update to 16.3
ChangeLog:
Better destructor parameter error message
Attempting either to explain or declare a destructor having a parameter list now prints "destructors may not have parameters" explicitly.
Defining a type more than once
If a type is defined again where the current language is older than the language in which it was previously defined, the type's set of languages is now updated to be the current language and newer. For example, previously:
cdecl> set c23
cdecl> typedef int Int
cdecl> show
typedef int Int;
cdecl> set c17
cdecl> typedef int Int Already exists so did nothing.
cdecl> show Would NOT show anything.
cdecl>
Now the second typedef would update Int to make it available in C17 and newer so the second show would show it.
Multiple conflicting declarations
Now exhaustively checking multiple declarations for conflicts in C. Previously, multiple declarations of a variable or function with conflicting types that was separated by a different variable or function wasn't caught:
int x, x; OK in C
int x, *x; error (different types)
int x, y, *x; // error, but wasn't caught
Now it is.
Using macros elsewhere
Previously, attempting to use a macro where names are generally allowed would result in an error like:
cdecl> #define N 5
cdecl> explain int a[N]
^
15: syntax error: "N": ']' expected
because "N" was returned as a macro token by the lexer. Now, the lexer ignores the fact that a name might be a macro.