HomeFreeBSD

devel/cdecl: update to 18.0

Description

devel/cdecl: update to 18.0

ChangeLog:
Allowing blocks & user-defined literals in multi-declarations
Apple blocks and C++ user-defined literals are now correctly allowed in multi-declarations, e.g.:

int i, a[2], (^b)(char), f(double), operator~(S&), operator""_x(char)
cast & declare command executable name support
Support for the cast & declare command as the executable name has been dropped; only the explain command is still supported. (I didn't realize until now that declare conflicts with the shell built-in.)`

Cast to typedef
Casting to a typedefd type is fixed:

cdecl> typedef int T
cdecl> cast x into T
(T)x
C99 language extensions
Fixed printing of C99 language extention names.

CDECL_DEBUG environment variable
If set to an "affirmative" value (one of 1, t, true, y, or yes, case-insensitive), then cdecl will print its process ID and a "waiting for debugger to attach" message to standard error and wait indefinitely for a debugger to attach.

CDECL_TEST environment variable
If set to an "affirmative" value (one of 1, t, true, y, or yes, case-insensitive), then cdecl be in "testing mode" (see man page for details).

complex & imaginary help
Adding these missing modifiers to the help.

Constructor & pre-C99 function qualifiers
const, volatile, __restrict, final, and override qualifiers are now syntactically allowed on constructors and pre-c99 functions even though they are still semantically illegal to give better error messages.

Digraph & trigraph preprocessor support
Digraphs & trigraphs are now supported by the preprocessor:

multiline

%:define QD(X) %:X same as: #define QD(X) #X
??=define QT(X) ??=X
same as: #define QT(X) #X
Additionally when showing macros in either digraph or trigraph mode, the correct tokens are used:

cdecl> set digraphs
cdecl> show QD
%:define QD(X) %:X
Digraph & trigraph structured binding support
Digraphs & trigraphs are now correctly supported for structured bindings.

--echo-commands & config files
Commands are now also echoed for those in configuration files.

infer-command and constant cast
When infer-command mode is set, spelling out constant now works correctly:

constant cast p into pointer to int
File line number
When reading from a file via -f, now includes the file name and error line number in error messages.

Fixed multi-declaration of functions
A multi-declaration of functions with different signatures has been fixed, e.g.:

cdecl> explain int f(int), g(double)
declare f as function (integer) returning integer
declare g as function (double precision) returning integer
Invalid conf file is now fatal
An error in a conf file is now fatal.

New --lineno, -L option
Specifies an integer to add to all line numbers in error and warning messages as a debugging aid. (See the man page for details.)

show non-existent glob
An error message will now be printed if a glob has no matches.

More permissive scope
Now, scope can be used anywhere in a scoped declaration, i.e., something having the generic scope can have anything nest within it and scope can nest within anything.

C++ std namespace
Whenver "std" is used for a scope, cdecl now automatically makes it a namespace, e.g.:

c++decl> struct std::T
c++decl> explain std::T x
declare x as structure T of namespace std
Using predefined macro names elsewhere
Attempting to use a predefined macro name as an ordinary name now results in an error:

cdecl> explain int DATE

^

9: error: "DATE" is a predefined macro

Details

Provenance
lerAuthored on Jul 6 2024, 11:07 AM
Parents
R11:e96bf8752a22: x11/hyprlock: update to 0.4.0
Branches
Unknown
Tags
Unknown