2024-09-08  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Compensating for the apparent fact that genuine GNU
     readline.h (wrongly) requires a manual #include <stdio.h>.
   * pjl_config.h: Added #ifdef WITH_READLINE.
   * autocomplete.c, pjl_config.h, prompt.c: Added #include <stdio.h> for
     broken readline.h versions.

2024-09-07  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c, c_ast.c, c_ast.h, c_ast_check.c, c_ast_util.c, c_sglob.c,
     c_sname.c, c_sname.h, c_type.c, cdecl_command.c, cli_options.c, dam_lev.c,
     did_you_mean.c, gibberish.c, lexer.l, p_macro.c, p_token.c, p_token.h,
     parse.c, parser.y, print.c, prompt.c, read_line.c, set_options.c, slist.c,
     strbuf.c, util.c, util.h: #include <stddef.h> clean-up.

2024-09-06  Paul J. Lucas <paul@lucasmail.org>

   * strbuf.c, strbuf.h: Eliminated strbuf_sepsn().
   * gibberish.c: Eliminated colon2.
   * p_macro.c, strbuf.h: Eliminated strbuf_sepc_putsn().
   * c_ast_warn.c, c_lang.h: Added LANG_register_NOT_DEPRECATED.
   * c_ast_check.c, c_ast_util.h, c_ast_warn.c, dump.c, english.c, gibberish.c:
     Added c_ast_is_param().
   * c_ast_warn.c: Factored out c_ast_warn_func_params().
   * c_ast_warn.c: s/ast/raw_ast/
   * src/Makefile.am, c_ast_check.c, c_ast_check.h, c_ast_util.h, c_ast_warn.c,
     c_ast_warn.h, parser.y: Split warning code into c_ast_warn.[ch].

2024-09-05  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c: Factored out c_ast_check_func_default_delete().
   * gibberish.c: graph_token_c() now rigorously checks token[1].
   * gibberish.c: alt_token_c() now rigorously checks token[1].

2024-09-04  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c: Factored out c_ast_check_oper_member().
   * c_ast_check.c: Removed uncessary asserts.
   * c_ast_check.c: Factored out c_ast_check_oper_num_params().
   * c_ast_check.c: Moved declaration of ret_ast.
   * cli_options.c, util.c, util.h: Eliminated STRTOULL_ERROR.

2024-09-03  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Updated version.
   * c_ast_check.c: Put %s back to eliminatw warning.

2024-09-02  Paul J. Lucas <paul@lucasmail.org>

   * read_line.c: Added TRI_BS.
   * read_line.c: Added missing #include.

2024-09-01  Paul J. Lucas <paul@lucasmail.org>

   * read_line.c: Made signature of getline_wrapper() match readline_wrapper().
   * share/man/man1/cdecl.1, c_lang.c, c_lang.h, help.c, parser.y,
     cli_options-error.out, help.out: Initial support for C++26 has been added,
     specifically `= delete("reason")` is now supported.

2024-08-29  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.h, config_file.c, config_file.h: Added CDECL_ENV_VAR_NAME.
   * util.h: Better IS_INTEGRAL_TYPE().
   * util.h: Better IS_SIGNED_TYPE().

2024-08-28  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Fix warning.
   * util.h: Fixed warning.
   * pjl_config.h: Fixed needing of declaration for rl_gnu_readline_p.
   * lexer.l, p_predefine.c, util.h: Added MAX_DEC_INT_DIGITS().
   * english.c: Factored out make_declare_ast_lists().
   * dump.c, english.c, gibberish.c: Eliminated some comma variables.
   * english.c: Factored out c_ast_is_likely_vla().
   * cli_options.c: Factored out check_options().
   * c_type.c: Eliminated hard-coding of CPP_MIN(23).

2024-08-27  Paul J. Lucas <paul@lucasmail.org>

   * english.c: Factored out c_ast_alignas_english().
   * english.c: Refactoring.
   * english.c: Factored out c_array_ast_english().
   * c_ast_check.c, english.c, gibberish.c: More consistent handline of
     K_PLACEHOLDER.
   * gibberish.c: Factored out c_ast_alignas_gibberish().
   * gibberish.c: Factored out c_ecsu_ast_gibberish().
   * gibberish.c: Factored out c_builtint_ast_gibberish().
   * gibberish.c: Factored out c_concept_ast_gibberish().
   * gibberish.c: Factored out c_lambda_ast_gibberish().
   * gibberish.c: Factored out c_ptr_mbr_ast_gibberish().
   * gibberish.c: Factored out c_ptr_ref_ast_gibberish().
   * gibberish.c: Factored out c_typedef_ast_gibberish().
   * gibberish.c: Factored out c_name_ast_gibberish().
   * gibberish.c: Factored out c_ast_capture_gibberish() and
     c_ast_cast_gibberish().
   * set_options.c: Moved switch ( found_opt->kind ).
   * set_options.c: Factored out find_option().
   * p_macro.c, show.c: Eliminated some "comma" variables.

2024-08-26  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c: Factored out c_ast_check_restrict().
   * c_ast_check.c: Factored out c_ast_check_op_less_equal_greater_ret_type().
   * c_ast_check.c: Factored out c_ast_check_op_minus_minus_plus_plus_params().
   * parser.y: Eliminated IS_SUPPORTED().

2024-08-25  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, color.c, util.c, util.h: Eliminated free_later() & free_now().
   * autocomplete.c: Eliminated use of free_later().
   * autocomplete.c, autocomplete.h, read_line.c:
     s/readline_init/autocomplete_init/; now calling once.

2024-08-24  Paul J. Lucas <paul@lucasmail.org>

   * pjl_config.h: Added defined(HAVE_DECL_RL_GNU_READLINE_P).
   * read_line.c: Now setting *pline_len even when line == NULL.
   * autocomplete.c: Now init'ing ac_keywords lazily.
   * autocomplete.c: Now free'ing ac_help_keywords.
   * autocomplete.c: Added ac_cleanup().
   * autocomplete.c: Now calling ac_keywords_new() from readline_init().
   * autocomplete.c: Added kg_state; split up keyword_generator().
   * autocomplete.c: Factored out command_alt_text().

2024-08-23  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Now handline "set no-" special-case only in state == 0.
   * autocomplete.h, pjl_config.h: Moved HAVE_GENUINE_GNU_READLINE.
   * autocomplete.h: Removed unnecessary #include.

2024-08-22  Paul J. Lucas <paul@lucasmail.org>

   * util.c, util.h: Now using EILSEQ.
   * util.c, util.h: Now always setting `errno` to 0 initially; now setting
     `errno` to `ERANGE` if the number < min or > max.

2024-08-20  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Put STATIC_CAST( size_t, ... ) back.
   * util.h: Added ASSERT_EXPR(); made FOR_N_TIMES() check N.

2024-08-19  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Removed INTEGER_CAST() -- not used.
   * p_macro.c, p_token.c, p_token.h: Moved p_token_is_macro().
   * p_macro.c, p_token.h: Moved p_token_list_emptyish().

2024-08-18  Paul J. Lucas <paul@lucasmail.org>

   * p_macro.c: Added assert()s.
   * src/Makefile.am, p_macro.c, p_predefine.c, types.h: Split out predefined
     macro code.

2024-08-16  Paul J. Lucas <paul@lucasmail.org>

   * p_macro.c, p_token.c, p_token.h, parser.y, expand.out, expand.test: An
     empty macro argument list can be 1 argument with no tokens.
   * p_macro.c: In mex_expand_all_params(), if arg_list == NULL or macro isn't
     func-like, return immediately.

2024-08-15  Paul J. Lucas <paul@lucasmail.org>

   * share/man/man1/cdecl.1, p_macro.c, expand.out, infer-command.out,
     show.out: The values of __FILE__ and __LINE__ arw now dynamic.

2024-08-14  Paul J. Lucas <paul@lucasmail.org>

   * p_token.c, p_token.h, expand-C23_std-6.10.4.1-ex-2.out,
     expand-va-opt-minutiae.out, expand-va-opt-minutiae.test: Updated.

2024-08-13  Paul J. Lucas <paul@lucasmail.org>

   * p_macro.c, expand-va-opt-minutiae.out, expand-va-opt-minutiae.test:
     Updated.
   * expand-va-opt-minutiae.out, expand-va-opt-minutiae.test: Another
     preprocessor test.
   * cli_options.c, cli_options-error.out, cli_options.out: Updated help for
     --permissive-types to match recent change.
   * p_macro.c, test/Makefile.am, expand-C23_std-6.10.4.1-ex-1.out,
     expand-C23_std-6.10.4.1-ex-1.test: Changed "assert( list_empty(
     &mex->va_args_token_list ) )" to "if ( !... )".
   * p_macro.c, test/Makefile.am, expand-C23_std-6.10.4.1-ex-2.out,
     expand-C23_std-6.10.4.5-ex-7.out, expand-va-opt-minutiae.out, expand.out,
     expand-va-opt-minutiae.test, expand.test: `__VA_ARGS__` as a `##` argument
     is now correctly not further expanded.

2024-08-12  Paul J. Lucas <paul@lucasmail.org>

   * dump.c, debug.out: Now dumping p_token location only if first_column > 0.
   * p_token.c, p_token.h: Moved p_is_operator_arg() out-of-line.

2024-08-11  Paul J. Lucas <paul@lucasmail.org>

   * p_macro.c: Eliminated va_args_str.
   * p_macro.c, expand.out, expand.test: Leading & trailing whitespace in
     `__VA_OPT__()` tokens is now trimmed.

2024-08-10  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: s/= xno/!= xyes/
   * util.c, util.h: free_later() now allows NULL.

2024-08-09  Paul J. Lucas <paul@lucasmail.org>

   * read_line.c: Removed assert().
   * configure.ac, pjl_config.h, util.h: Now using AC_C_TYPEOF.
   * configure.ac: Added AC_C__GENERIC.

2024-08-08  Paul J. Lucas <paul@lucasmail.org>

   * set_options.c, util.c, util.h, util_test.c: Replaced strn_nohyphen_equal()
     with strncmp_in_set().

2024-08-07  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Factored out determine_command().
   * autocomplete.c: Now using strbuf_t.

2024-08-06  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c, ac-set.exp: For the `set` command, if the user types
     `no-`, change it to `no`.
   * set_options.c: Now allowing optional '-' after "set no" for a "no" option.
   * set_options.c: Now checking for lang only if not is_no.

2024-08-05  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, cli_options.c, cli_options.h, unit_test.c, unit_test.h: Added
     more `const`s.

2024-08-04  Paul J. Lucas <paul@lucasmail.org>

   * show.h: Added missing PJL_DISCARD.
   * c_lang.h: Simplified LANG_MIN(); redefined LANG_CPP_ANY.

2024-08-03  Paul J. Lucas <paul@lucasmail.org>

   * p_macro.c: Better error location in mex_check_num_args().
   * print.c: Now printing the line number (and path) only if the line number >
     0.
   * cdecl_term.c: Moved code inside ENABLE_TERM_SIZE; combined if statements.

2024-08-02  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Updated.
   * share/man/man1/cdecl.1, cli_options.c, help.c, literals.c, literals.h,
     set_options.c, alt-tokens.out, cli_options.out, command_line.out,
     debug.out, explicit-ecsu.out, explicit-int.out, help.out,
     infer-command.out, lang.out, prompt.out, semicolon.out, set.out,
     symlinks.out, trigraphs.out, using.out, west-decl.out: Changed `lang`
     option to `language` to match `--language`.

2024-08-01  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, set_options.c, set-error.out, set-error.test: Fixed "set
     <lang>=xxx".
   * util.c: Now checking for ERANGE.
   * util.c: Eliminated unnecessary check.
   * cdecl.c, util.c, util.h: wait_for_debugger_attach() now always waits.

2024-07-31  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: In debug mode, not printing printable lookahead chars as char.
   * c_ast_check.c, parser.y: Moved most calls to c_sname_check() into
     c_ast_check.c.
   * c_ast_check.c, c_sname.c, c_sname.h, parser.y: Folded functionality of
     c_sname_error() into c_sname_check().
   * c_sname.c: No longer temporarily setting scope->next to NULL.
   * c_sname.c, c_sname.h: c_sname_check() no longer modifies sname.

2024-07-30  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.c, c_sname.h, parser.y: Eliminated c_sname_set_std_namespace().
   * c_sname.c, c_sname.h, parser.y: Eliminated
     c_sname_fill_in_namespace_types().
   * c_sname.c, c_sname.h: c_sname_check() no longer alters sname unless
     success.
   * parser.y: UNSUPPORTED() now calls PARSE_ABORT().
   * c_ast.c: Now using c_sname_cmp().

2024-07-29  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, share/man/man1/cdecl.1, c_ast_check.c, c_ast_util.c,
     c_ast_util.h, gibberish.c, parser.y, declare-error.out, declare.out,
     permissive-types.out, declare-error.test, declare.test,
     permissive-types.test: Now always permitting unknown names as types.

2024-07-21  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, cdecl_parser.h, parser.y: Added parser_init().
   * cdecl_parser.h, parse.c, parser.y: Factored out yyparse_sn().
   * c_lang.c, c_lang.h, cli_options.c, options.c, options.h, set_options.c:
     Moved c_lang_set() to lang_set() in options.c.

2024-07-20  Paul J. Lucas <paul@lucasmail.org>

   * types.h: Allowing EXPR in USER_DATA_UINT().

2024-07-19  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added missing "or macro name".
   * parser.y: Eliminated some *_HELPER() macros now that VA_OPT() is
     available.
   * c_kind.h, p_kind.h: Removed "u"s from enum values.
   * types.h: s/.i64/.ll/
   * src/Makefile.am, c_typedef.c, english.c, gibberish.c, parser.y, print.c,
     show.c, types.h: Made decl_flags an enum.
   * decl_flags.h, types.h: Revert "Better (?) way to silence warning."
   * decl_flags.h, types.h: Better (?) way to silence warning.
   * types.h: Silenced warning.
   * types.h: Changed USER_DATA_UINT() to using built-in types.

2024-07-18  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, types.h: Added USER_DATA_UINT() and USER_DATA_UINT_AS().
   * src/Makefile.am, red_black_test.c, slist_test.c, unit_test.c, unit_test.h,
     util_test.c: Unit test framework improvements and docs.
   * print.c: Added missing c_lang_oldest().

2024-07-17  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, permissive-types.out, permissive-types.test: Now setting
     c_name_ast::sname to full scoped name.
   * share/man/man1/cdecl.1, c_ast.c, c_ast.h, c_ast_check.c, c_kind.h,
     cli_options.c, dump.c, english.c, gibberish.c, options.c, options.h,
     parser.y, set_options.c, test/Makefile.am, alt-tokens.out,
     cli_options-error.out, cli_options.out, command_line.out, debug.out,
     explicit-ecsu.out, explicit-int.out, infer-command.out, lang.out,
     permissive-types.out, prompt.out, semicolon.out, set.out, symlinks.out,
     trigraphs.out, using.out, west-decl.out, permissive-types.test: Added
     --permissive-types option.
   * share/man/man1/cdecl.1: Added ".SS main()".
   * share/man/man1/cdecl.1: Added "or -{short option}" in a couple of places.
   * c_ast_check.c: Preventing double warning on same sname.
   * c_ast_check.c, parser.y, cast-error.out, explain_cast-error.out: Better
     locations.
   * share/man/man1/cdecl.1, cli_options.c, cli_options-error.out,
     cli_options.out: The short option for `--no-prompt` has been changed from
     `-p` to `-P`.

2024-07-16  Paul J. Lucas <paul@lucasmail.org>

   * print.c, command_line-error.out: No longer printing "1," line number in
     error/warning messages when command is from the command-line.
   * p_macro.c, prompt.c, set_options.c: Using STRLITLEN() more.
   * parser.y, explain.out: In C89, implicit `int` is now warned about in more
     cases.
   * c_ast_check.c, ntu.out, ntu.test: Defining types that are keywords in
     other languages are now warned about.

2024-07-15  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, c_kind.h, parser.y, debug.out, explain.out,
     explain.test: Fixed multi-declarations of enum, class, struct, union, and
     typedef.
   * c_ast.c: Added != NULL check now that c_ast_dup() no longer accepts NULL.
   * parser.y: Added assert().
   * c_ast.c, c_ast.h: c_ast_dup() no longer allows ast == NULL.
   * parser.y: Name handling in class_struct_union_declaration_c is now more
     consistent with that in enum_declaration_c.
   * parser.y: s/c_sname_append_name()/c_sname_init_name()/ in some cases.
   * parser.y: Added c_ast_is_name_error().
   * parser.y: Added "const".

2024-07-14  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added assert()s.
   * c_ast_check.c, explain.out, explain.test: Now calling c_sname_warn() on
     c_align::sname.
   * parser.y: Removed "file" parameter from static functions.
   * parser.y: Added missing NODISCARD.
   * parser.y: Added another missing c_sname_cleanup().
   * parser.y, declare-error.out, declare-error.test: Now checking for unknown
     names in pointer-to-member and reference declarations.
   * parser.y: Added missing c_sname_cleanup().

2024-07-13  Paul J. Lucas <paul@lucasmail.org>

   * parse.c, print.c, print.h, test/Makefile.am, command_line-error.out,
     command_line-error.test: Revert "Eliminated
     print_params.{command_line,command_line_len} -- apparently no longer
     needed."
   * parser.y: Better hanling of loc after c_ast_dup_gc().
   * parser.y, explain-error.out, explain-error.test: Attempting to use
     modifiers with `typedef`s is now correctly forbidden.
   * parser.y: In decl_c, moved ia_type_spec_ast() call inside
     join_type_decl().
   * util.h: Made TO_UNSIGNED() check for an integral expression.

2024-07-12  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.c, c_sname.h: c_sname now uses non-const char* since it takes
     ownership.
   * gibberish.c: s/is_implicit_int/printed_type/
   * parser.y: In define_command, Moved c_sname_set() later to get original
     name in error message.
   * english.c: Added: ast->param_of_ast != NULL
   * c_ast_check.c: No longer asserting on K_NAME.
   * c_ast_check.c, gibberish.c, declare.out, declare.test: Can now do: declare
     a as array 5 of T of struct S
   * english.c, explain.out: Now printing "as integer" in English for K&R C
     typeless function parameter in C89-C17.
   * gibberish.c, declare.out, declare.test: Fixed multi-declaration of
     _BitInt.
   * c_typedef.c, c_typedef.h, decl_flags.h, english.c, english.h, gibberish.c,
     gibberish.h, parser.y, print.c, print.h, show.c, show.h, types.h: Added
     decl_flags_t.
   * help.out: Now using *_ALL constants, part 2.

2024-07-11  Paul J. Lucas <paul@lucasmail.org>

   * help.c, help.out: Now using *_ALL constants.
   * c_ast.c, c_kind.c, c_lang.c, c_operator.c, c_sname.c, dump.c, p_macro.c:
     #include clean-up.
   * c_type.h: Make TS_ANY_STORAGE use C_TID_LIT().
   * autocomplete.c, c_type.h, p_macro.h, set_options.c: #include clean-up.
   * c_ast_check.c, c_operator.c, c_operator.h: Moved c_op_is_new_delete().
   * c_type.h: Added C_TID_LIT().
   * c_type.c, c_type.h: s/TX_MASK_TPID/TX_TPID_MASK/
   * c_ast_check.c, c_ast_util.h, c_type.h: Eliminated C_TYPE_LIT_*_ANY()
     macros.
   * c_ast_check.c, c_sname.c, c_type.c, c_type.h, dump.c, english.c,
     gibberish.c, parser.y: c_tid_*(), c_type_*() renaming.
   * c_ast_check.c, c_sname.c, c_sname.h, did_you_mean.c, dump.c, english.c,
     gibberish.c, gibberish.h, parser.y, print.c:
     s/c_sname_full_name()/c_sname_gibberish()/,
     s/c_sname_scope_name()/c_sname_scope_gibberish()/; moved code to
     gibberish.c.
   * c_ast_check.c, gibberish.c: s/c_sname_full_name/c_sname_local_name/ when
     possible.

2024-07-10  Paul J. Lucas <paul@lucasmail.org>

   * english.c, english.h: Made c_sname_english() static.
   * c_ast_check.c, c_sname.c, c_sname.h: Eliminated c_sname_cmp_name().
   * parser.y: Eliminated unused Y_exit.
   * configure.ac: -Wsign-conversion is already enabled via -Wconversion.
   * c_ast_util.c, c_sname.c, c_sname.h, lexer.l, slist.h: Replaced:
     s/SLIST_VAR_INIT/SLIST_LIT/, s/SNAME_VAR_INIT/C_SNAME_LIT/.
   * c_ast.c: Added NODISCARD.
   * c_ast.c: Added missing c_alignas_dup().
   * parser.y, debug.out: Now using complete location information for alignas.
   * c_ast.c, c_ast_check.c, dump.c, english.c, gibberish.c, parser.y, types.h,
     debug.out, declare.out, debug.test, declare.test: Can now alignas a scoped
     name.
   * parser.y: Added DUMP_*() macros to alignas_specifier_english.
   * c_ast_util.h, show.c, util.h: Added TO_UNSIGNED().

2024-07-09  Paul J. Lucas <paul@lucasmail.org>

   * p_macro.c: Adjusted LCOV_EXCL lines.
   * p_macro.c, p_token.c: Now using ARRAY_SIZE( "..." ) for char arrays.

2024-07-08  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.h, show.c, util.h: Revert "Added TO_UNSIGNED() macro."
   * c_sname.h, dam_lev.c: s/STATIC_CAST/POINTER_CAST/
   * c_ast_util.h, show.c, util.h: Added TO_UNSIGNED() macro.
   * c_sglob.c, show.c, show.out, show.test: Fixed a crash of `show ::FILE`;
     now showing predefined specific globs if no user-defined glob was shown.
   * help.c, help.out: Fixed glob help.

2024-07-07  Paul J. Lucas <paul@lucasmail.org>

   * share/man/man1/cdecl.1: Explained $LINENO more.
   * cli_options.c: Specifying the `--no-config` option now always works even
     when testing.
   * configure.ac, explain.test: Fixed CDECL_TEST=false tests.

2024-07-06  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.c, cli_options.c, config_file.c, p_macro.c, p_token.c, print.c,
     strbuf.c, strbuf.h: Several strbuf functions now return strbuf::str.
   * Doxyfile, Doxygen.sed: Now using file for sed.
   * cdecl_term.c: Using null_if_empty().
   * cdecl_term.c: Added missing `void`.

2024-07-05  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, cli_options.c, parse.c, print.c, explain_int_error-5.cdeclrc,
     explain-error.out, explain-error.test: Now printing line numbers whenever
     not interactive; --file and --lineno are now mutually exclusive.
   * cdecl_term.c, explain.out, explain.test: More tests.

2024-07-04  Paul J. Lucas <paul@lucasmail.org>

   * help.c, help.out: Added `complex` & `imaginary` to help.
   * configure.ac: Upped version.
   * c_typedef.c, cdecl.c, cdecl.h, config_file.c, lexer.l, parse.c, print.c,
     print.h: s/print_params.config_path/cdecl_input_path/
   * share/man/man1/cdecl.1, cdecl_term.c, run_test.sh: CDECL_TEST now always
     uses 80 for the number of columns.
   * run_test.sh, update_test.sh: Insisting on bash for $LINENO.
   * cli_options.c, lexer.h, read_line.c: Fixed warnings.
   * p_macro.c: Simplified mex_expand_stringify() by returning bool.
   * cdecl_term.c: Eliminated rv.
   * src/Makefile.am, cdecl.c, cdecl_term.c, cdecl_term.h, print.c: Broken out
     terminal column code into cdecl_term.[hc].

2024-07-03  Paul J. Lucas <paul@lucasmail.org>

   * parse.c, print.c, print.h: Eliminated
     print_params.{command_line,command_line_len} -- apparently no longer
     needed.
   * explain-error.out, explain-error.test: Another test.
   * c_ast_util.c, c_type.h, parser.y, explain-error.out: Eliminated apparently
     unnecessary TS_FUNC_LIKE_NOT_CTOR.
   * c_sname.c: Eliminated apparently dead code in c_sname_set_all_types().
   * c_sname.c, c_sname.h, parser.y: Cdecl now automatically makes a scope
     named `std` be a namespace.
   * run_test.sh, update_test.sh: Fixed test script temp file location.
   * c_sname.c, c_type.c, c_type.h, define-error.out, define-error.test: Now
     more lax with scope ordering in that either "none" or "scope" can appear
     in any order.
   * c_sname.c, c_sname.h, gibberish.c, parser.y: c_sname global/local/type
     function clean-up.
   * util.h: Added () around macro parameters.
   * c_sname.c: Simplification.
   * c_sname.c, c_sname.h, parser.y: Eliminated "default_type" parameter from
     c_sname_set_all_types().
   * p_macro.c: mex_check_identifier() never returned false; change to void.
   * print.c: Eliminated apparently dead code in fl_print_error_unkown_name().
   * test/Makefile.am, misc-error-65.out, misc-error-65.test: Another test.

2024-07-02  Paul J. Lucas <paul@lucasmail.org>

   * util_test.c: Fixed test.
   * c_ast_check.c, c_sname.c, c_sname.h, p_macro.c, p_macro.h,
     explain-error.out, explain-error.test: Using a predefined macro name as an
     ordinary name now results in an error.
   * read_line.c: Added wrappers around getline() and readline().
   * read_line.c: Fixed LCOV_EXCL_START.
   * read_line.c, expand.out, expand.test: Now support ??/ in the preprocessor.
   * lexer.l: Added missing ??/ trigraph.
   * gibberish.c: Eliminated noexcept => throw case since it can never happen.
   * debug.out, debug.test: More tests.
   * east-const.out, east-const.test: Fixed east-const structured binding test.
   * gibberish.c: Eliminated apparently dead code in c_ast_name_gibberish().
   * gibberish.c, cast.out, cast.test: Casting to a `typedef`d type is fixed.
   * src/Makefile.am, util_test.c: Added util_test.
   * util.c: Added LCOV_EXCL_LINE.
   * config_file.c: Added LCOV_EXCL_START/STOP.
   * run_test.sh, update_test.sh: Now using $TMPDIR, if set.
   * cli_options.out, cli_options.test: Added --output test.
   * cli_options.out, cli_options.test: Added --no-prompt test.
   * cli_options.out, cli_options.test: Another test.
   * update_test.sh: Now setting CDECL_TEST in update_test.sh.
   * cli_options-error.out, cli_options-error.test: More coverage tests.
   * cli_options-error.test: Eliminated "exit 1".
   * run_test.sh, show.test: Now setting CDECL_TEST in run_test.sh.
   * share/man/man1/cdecl.1, cli_options.c: If cdecl is testing, will not read
     any config file by default.
   * cli_options.c: Added LCOV_EXCL_LINE.
   * cli_options-error.out, cli_options-error.test: Updated.
   * util.c: s/_Exit()/exit()/ so fatal_error() is counted in coverage -- don't
     recall why _Exit() in the first place.
   * lcovrc, test/Makefile.am: Removed tests that compared output of strerror()
     since it could vary by OS.
   * c_typedef.c, debug.out: Now setting print_params.config_path = __FILE__
     during predefining types.
   * infer-command.out, infer-command.test: Another cdecl_command.c coverage
     test.
   * c_sname.c, cdecl_command.c, cli_options.c, set_options.c, util.h: Added
     STRNCMPLIT().
   * lexer.l: More coverage exclusions.
   * test/Makefile.am, include-recursive.cdeclrc, include-recursive.out,
     include-recursive.test: Added recursive include file test.
   * lexer.l: Added missing call to newline().
   * lexer.l, include-too_many_files.out, include-unquoted.out: Put quotes
     around paths, part 2.
   * lexer.l: Better handling of "q x."
   * src/Makefile.am: Dropped support for `cast` & `declare` as the command
     name, part 2.

2024-07-01  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l, include-err-01.out: Put quotes around paths.
   * cdecl_command.c, infer-command.out, infer-command.test: When
     `infer-command` mode is set, spelling out `constant` now works correctly.
   * parser.y: Added LCOV_EXCL_LINE.
   * gnu_attributes.out, gnu_attributes.test: Another attribute test.
   * ntu-error.out, ntu-error.test: Another test.
   * define.out, define.test: Another test.
   * parser.y, show.out, show.test: Fixed "show" command with a NULL glob.
   * share/man/man1/cdecl.1, cdecl_command.c, cdecl_command.h: Dropped support
     for `cast` & `declare` as the command name.
   * test/Makefile.am, symlinks.out, symlinks.test: Added symlinked executable
     tests.
   * src/Makefile.am: Now creating cast, declare, & explain symlinks in src.
   * parse.c: Added LCOV_EXCL_LINE.
   * config-error.test: Added config-error.test again??
   * test/Makefile.am, config-error.out: Another test.
   * test/Makefile.am, file-error.out, file-error.test: Test consolidation.
   * test/Makefile.am, file.out, file.test: Test consolidation.
   * p_token.c, parse.c: Added LCOV_EXCL_LINE.
   * debug.out, debug.test: More tests.
   * debug.out, debug.test: More preprocessor debug tests.
   * dump.c, dump.h, parser.y: Eliminated str_list_dump() -- never called.
   * dump.c, dump.h: Eliminated p_token_dump() -- never called.
   * debug.out, debug.test: More coverage tests.
   * config_file.c, config.out: Changed //... to /*...*/.
   * config_file.c, config.out: Now echoing comments when echoing commands for
     config files.
   * config.out: Commands are now also echoed for those in configuration files,
     part 2.
   * config_err-1.cdeclrc, config-error.out, config-error.test: Commands are
     now also echoed for those in configuration files.
   * config-error.test: chmod -x.
   * test/Makefile.am, config-error.out, config-error.test: Another test.
   * test/Makefile.am, config.out, config.test: Test consolidation.

2024-06-30  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am, cli_options.out, cli_options-error.test,
     cli_options.test, digraphs.test, trigraphs.test: Testing more command-line
     options.
   * share/man/man1/cdecl.1, cdecl.c, cdecl.h, p_macro.c, util.c, util.h,
     show.out, show.test: Added CDECL_TEST environment variable.
   * show.c: Undid apparently useless check for '*' when showing globs.
   * slist.c, slist.h: Comparison functions can no longer be null.
   * alt-tokens.out, declare.out, east-const.out, west-decl.out,
     alt-tokens.test, declare.test, east-const.test, west-decl.test: Test
     re-org.
   * declare.out, declare.test: Another test.
   * c_lang.h, explain.out, explain.test: Fixed printing of C99 language
     extention names.

2024-06-29  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, explain-error.out, explain-error.test: `const`, `volatile`,
     `__restrict`, `final`, and `override` qualifiers are now syntactically
     allowed on constructors and pre-c99 functions even though they are still
     sematically illegal to give better error messages.
   * c_ast_check.c, c_kind.h: Eliminated K_ANY_MULTI_DECL & K_ANY_NAMEABLE.
   * c_ast.h, c_ast_check.c, c_kind.h, explain_operator.out,
     explain_operator.test: Added K_ANY_NAMEABLE.
   * c_ast.c, c_ast.h, c_ast_check.c, types.h: Added c_named_ast.
   * c_ast_check.c: Eliminated apparently redundant c_ast_visitor_type() check
     of function parameters.
   * explain-error.out, explain-error.test: Another test.
   * lexer.l, digraphs.out, trigraphs.out, digraphs.test, trigraphs.test:
     Digraphs & trigraphs are now correctly supported for structured bindings.
   * parser.y, show.c, show.h: Now prints an error message if a glob has no
     matches.
   * debug.out, debug.test: Fixed test.

2024-06-28  Paul J. Lucas <paul@lucasmail.org>

   * parse.c: Added coverage exlusion.
   * p_macro.c: Added coverage exlusions.
   * infer-command.out, infer-command.test: Additional test.
   * gibberish.c, lexer.l, p_macro.c, p_token.c, show.c, expand.out,
     expand.test: Added digraph & trigraph support to the preprocessor.
   * lcovrc: Added EX_UNAVAILABLE; removed fatal_error.
   * test/Makefile.am, include-empty_path.out, include-empty_path.test: More
     tests.
   * debug.out, debug.test: More tests.
   * cli_options.c: Exluded some lines from coverage.
   * options.c, options.h: Eliminated any_explicit_int().
   * options.c, p_macro.c, west-decl.out, west-decl.test: More tests.
   * explicit-ecsu.out, explicit-ecsu.test: More tests.
   * preprocessor-error.out, preprocessor-error.test: More tests.
   * print.c: Exluded lines from test coverage.
   * show.out, show.test: More tests.
   * west-decl.out, west-decl.test: More tests.
   * using.out, using.test: More tests.
   * test/Makefile.am, declare.out, trailing-return.out, declare.test,
     trailing-return.test: More tests.
   * set_options.c: Put quotes around option names.
   * explicit-ecsu.out, explicit-ecsu.test: More tests.
   * set_options.c, set-error.out: Now using OPTION_INVALID_VALUE().
   * set_options.c, test/Makefile.am, echo-commands.out, echo-commands.test:
     More tests.
   * alt-tokens.out, alt-tokens.test: More tests.
   * east-const.out, east-const.test: More tests.
   * declare.out, declare.test: More tests.
   * ntu.out, ntu.test: More tests.
   * declare.out, declare.test: Another test.
   * command_line-noinput_error.out, command_line-noinput_error.test: Added
     test.
   * conf_file.c: Put quotes around file name.
   * Makefile.am: Tests are not in color.
   * test/Makefile.am, cli_options-error.out, command_line-noinput_error.out,
     cli_options-error.test, command_line-noinput_error.test: More tests.
   * test/Makefile.am: Test consolidation.
   * test/Makefile.am: Renamed test.
   * cli_options.c, cli_options-error.out: Now using OPT_INVALID_VALUE() macro.
   * cli_options-error.out, cli_options-error.test: More CLI error tests.
   * util.h: Eliminated is_01_bit_only_in_set().
   * c_ast_util.c, c_ast_util.h: Eliminated nonconst_c_ast_leaf().
   * alt-tokens.out, concept.out, declare.out, declare_operator.out,
     east-const.out, english-types.out, expand-C23_std-6.10.4.1-ex-2.out,
     expand-error.out, expand-robertelder.out, expand.out, explain.out,
     explain_cast.out, explain_operator.out, explain_udc.out,
     explicit-ecsu.out, explicit-int.out, help.out, lang.out, ntu.out,
     semicolon.out, show.out, trigraphs.out, using.out, west-decl.out,
     alt-tokens.test, concept.test, declare.test, declare_operator.test,
     east-const.test, english-types.test, expand-C23_std-6.10.4.1-ex-2.test,
     expand-error.test, expand-robertelder.test, expand.test, explain.test,
     explain_cast.test, explain_operator.test, explain_udc.test,
     explicit-ecsu.test, explicit-int.test, help.test, lang.test, ntu.test,
     semicolon.test, show.test, trigraphs.test, using.test, west-decl.test:
     Removed blank lines before END.
   * concept.out, concept.test: Added pointer to concept tests.
   * parser.y, explain-error.out, explain-error.test: Now syntactically
     allowing more storage classes in storage_class_subset_english_stid to give
     better error messages, e.g., "explain [] extern".
   * c_ast.c, c_ast.h: Eliminated nonconst_c_ast_visit().
   * util.c: Added lcov comments.
   * read_line.c, util.c, util.h: Eliminated str_chomp().

2024-06-27  Paul J. Lucas <paul@lucasmail.org>

   * read_line.c: readline_line is no longer static.
   * read_line.c: Fixed heap-overflow bug.
   * c_sname.h: Converted c_scope_data() into an inline function.
   * c_sname.c: Added assert().
   * read_line.c: Now using getline()'s return value; calling str_chomp() only
     in getline() case.
   * read_line.c, util.c, util.h: Finally (?) proper newline handling.
   * c_typedef.c, debug.out: Now setting yylineno to pt->line.
   * show.c: Now showing a predefined specific type if no user-defined type was
     shown.
   * share/man/man1/cdecl.1, cdecl.c, cli_options.c, lexer.l, options.c,
     options.h, p_macro.c, p_token.c, parser.y, print.c, util.c, util.h,
     __declspec.out, cast-error.out, cast.out, cdecl--help.out,
     cdecl--options.out, concept-error.out, debug.out, declare-error.out,
     declare.out, declare_operator-error.out, declare_synonyms.out,
     declare_udc-error.out, declare_udl-error.out, declare_udl.out,
     define-error.out, digraphs.out, expand-C23_std-6.10.4.3-ex-1.out,
     expand-C23_std-6.10.4.5-ex-4.out, expand-error.out,
     expand-robertelder.out, expand.out, explain-error.out, explain.out,
     explain_cast-error.out, explain_operator-error.out, explain_operator.out,
     explain_udc-error.out, explain_udl-error.out, explain_udl.out,
     gnu_attributes.out, help-error.out, include-too_many_files.out,
     include-unquoted.out, ntu-error.out, preprocessor-error.out,
     set-error.out, show-error.out, trigraphs.out, xec-error.out,
     xupc-error.out, __declspec.test, alt-tokens.test, cast-error.test,
     cast.test, cdecl--no-typedefs.test, cl.test, concept-error.test,
     concept.test, debug.test, declare-error.test, declare.test,
     declare_config_tdu.test, declare_operator-error.test,
     declare_operator.test, declare_synonyms.test, declare_udc-error.test,
     declare_udc.test, declare_udl-error.test, declare_udl.test,
     define-error.test, define.test, digraphs.test, east-const.test,
     english-types.test, expand-C23_std-6.10.4.1-ex-2.test,
     expand-C23_std-6.10.4.3-ex-1.test, expand-C23_std-6.10.4.5-ex-4.test,
     expand-C23_std-6.10.4.5-ex-5.test, expand-C23_std-6.10.4.5-ex-7.test,
     expand-error.test, expand-robertelder.test, expand.test,
     explain-error.test, explain.test, explain_cast-error.test,
     explain_cast.test, explain_config_tdu.test, explain_operator-error.test,
     explain_operator.test, explain_udc-error.test, explain_udc.test,
     explain_udl-error.test, explain_udl.test, explicit-ecsu.test,
     explicit-int.test, gnu_attributes.test, help-error.test, help.test,
     include-err-01.test, include-ok-nested-01.test, include-ok.test,
     include-too_many_files.test, include-unquoted.test, infer-command.test,
     integers.test, lang.test, ntu-error.test, ntu.test,
     preprocessor-error.test, prompt.test, semicolon.test, set-error.test,
     set.test, show-error.test, show.test, trigraphs.test, using.test,
     using_config_i.test, west-decl.test, xec-error.test, xec.test,
     xupc-error.test, xupc.test: Added --lineno/-L option.
   * p_token.c: Removed unnecessary "break"s.

2024-06-26  Paul J. Lucas <paul@lucasmail.org>

   * lexer.h, lexer.l, p_token.c, parser.y: Eliminated lexer_token in favor of
     just using yytext directly.
   * lexer.l: Added missing SET_TOKEN;.
   * configure.ac, share/man/man1/cdecl.1, cdecl.c, util.c, util.h: Added
     CDECL_DEBUG debugger attach support.
   * p_macro.c: Eliminated C_LOC_COL() and C_LOC_NEXT_COL() in favor or
     C_LOC_NUM_T().
   * p_macro.c: Eliminated str_loc().
   * lexer.h, lexer.l, parse.c, read_line.c, read_line.h: Now incremening
     yylineno when escaped newlines are elided.

2024-06-25  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Added missing yylineno_stack_top = -1;
   * lexer.l: Now using strbuf_t in lexer.
   * file-cast_i.test, file-cast_x.test, file-declare_i.test,
     file-declare_x.test, file-explain_i.test, file-explain_x.test: Eliminted
     unnecessary "here" documents.
   * cli_options.c, conf_file.c, print.c: Removed #include <errno.h>.
   * util.h: Added #include <errno.h>.
   * lexer.h, lexer.l, p_token.c, read_line.c, alt-tokens.out, cast-error.out,
     cast.out, concept-error.out, concept.out, debug.out, declare-error.out,
     declare.out, declare_operator-error.out, declare_operator.out,
     declare_synonyms.out, declare_udc.out, declare_udl.out, define-error.out,
     define.out, digraphs.out, east-const.out, english-types.out,
     expand-C23_std-6.10.4.1-ex-2.out, expand-C23_std-6.10.4.3-ex-1.out,
     expand-C23_std-6.10.4.5-ex-4.out, expand-C23_std-6.10.4.5-ex-5.out,
     expand-C23_std-6.10.4.5-ex-7.out, expand-error.out,
     expand-robertelder.out, expand.out, explain-error.out, explain.out,
     explain_cast-error.out, explain_cast.out, explain_operator-error.out,
     explain_operator.out, explain_udc-error.out, explain_udc.out,
     explicit-ecsu.out, explicit-int.out, gnu_attributes.out, help-error.out,
     help.out, infer-command.out, integers.out, lang.out, ntu-error.out,
     ntu.out, preprocessor-error.out, semicolon.out, show-error.out, show.out,
     trigraphs.out, using.out, west-decl.out, concept-error.test, debug.test,
     declare_operator-error.test, define-error.test, explain-error.test,
     explain_cast-error.test, explain_operator-error.test,
     explain_udc-error.test, help-error.test, infer-command.test,
     ntu-error.test, preprocessor-error.test, show-error.test: Reworked
     strbuf_read_line() to return lines always terminated with '\n' including
     empty lines so the lexer can keep track of the correct line number.
   * parse.c: no_infer_command() now returns true for empty strings also.

2024-06-24  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Undid returning other escaped whitespace characters; now
     returning NULL for '\n'.
   * cli_options.c, options.c, options.h, print.c, print.h, file-cast_x.out,
     file-declare_x.out, file-explain_x.out: Added file path and error line
     number when an error occurs in a file.
   * conf_file.c: Invalid conf file is now fatal.
   * options.c, options.h, set_options.c, set-error.out, set-error.test: Added
     OPT_CDECL_DEBUG_ALL, OPT_ECSU_ALL, OPT_WEST_DECL_ALL.
   * c_ast_check.c, c_kind.h, explain.out, explain.test: Now allowing blocks &
     user-defined literals in multi-declarations.
   * configure.ac, c_ast.c, slist.c, slist.h, explain.out, explain.test: Fixed
     multi-declaration of functions.

2024-06-23  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c: s/unsigned/size_t/
   * set_options.c: Added missing 's'.
   * decl_flags.h: Sorted C_GIB_OPT_MULTI_DECL's value.
   * lexer.l: Added other escaped whitespace characters.

2024-06-18  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l, print.c: Made yylineno correctly 1-based.
   * strbuf.c: Now always setting sbuf->len = 0.
   * p_macro.c: Avoid possible free() of non-malloc()'d memory.
   * autocomplete.c, autocomplete.h, parse.c, read_line.c, read_line.h:
     Eliminated prog_name from readline_init() and strbuf_read_line().
   * c_ast_check.c: Eliminated c_ast_check_fn_t.
   * c_ast_check.c: Removed unnecessary forward declaration of
     c_ast_visitor_warning().
   * c_ast_check.c, c_lang.c, c_lang.h, c_sname.c, c_sname.h: Moved
     c_sname_warn().
   * test/Makefile.am, set-error.out, set-error.test: "set" test reform, part
     2.
   * configure.ac: Updated version.
   * test/Makefile.am, set-error.out, set.out, set.test: "set" test reform.

2024-06-17  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, c_ast_check.c, parser.y, explain-error.out,
     explain-error.test: Functions returning parameter packs is now correctly
     illegal.
   * c_ast_check.c, c_ast_util.h, gibberish.c:
     s/c_ast_parent_is_kind()/c_ast_parent_is_kind_any()/
   * parser.y, debug.out: Added DUMP_*() macros to decl_list_c_opt:
     decl_list_c.
   * c_ast.c, c_ast.h, dump.c: s/dup_from_id/dup_from_ast/

2024-06-16  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c: Added c_ast_check_param_pack().

2024-06-15  Paul J. Lucas <paul@lucasmail.org>

   * slist.h: Now using designated initializer.
   * c_ast_check.c, c_sname.h, c_typedef.c, lexer.l, red_black.c, util.h: Put
     more macro arguments inside parentheses.

2024-06-14  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Now using VA_OPT() in IGNORING() and UNSUPPORTED().
   * util.h: Now using VA_OPT() in INTERNAL_ERROR().

2024-06-13  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Updated version to 17.0.
   * util.h: Proper __VA_OPT__ substitute.
   * util.h: Eliminated ARGS_COUNT().
   * configure.ac, pjl_config.h, util.h: Added PJL_TYPEOF.

2024-06-12  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, c_ast_util.c, c_ast_util.h, english.c, parser.y, util.h:
     Added VA_OPT_COMMA().

2024-06-11  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c, declare.out, west-decl.out, west-decl.test: Fixed issue #37:
     --west-decl=t for "pointer to const pointer to ..." has no effect.

2024-06-10  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c: c_ast_find_kind_any() can now accept kinds == 0
   * test/Makefile.am: s/west-pointer/west-decl/
   * c_ast_check.c, c_kind.h, gibberish.c: Added K_ANY_POINTER_OR_REFERENCE.

2024-06-09  Paul J. Lucas <paul@lucasmail.org>

   * help.c: Added command_is_any() macro.
   * help.c, help.out: Added help for "scope-e."
   * help.c, cl.out, help.out: The help text now defines "glob."
   * share/man/man1/cdecl.1: Clarified wording for "glob".
   * p_kind.h: Simplified definition of P_ANY_OPAQUE.
   * c_kind.h: Added K_CONCEPT to K_ANY_NAME.
   * parser.y: Added missing "parameter pack" from DUMP_START().

2024-06-08  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Removed -Wpedantic to suppress the "[[]] attributes are a
     C23 extension [-Wc23-extensions]" warning on clang.
   * cdecl.h, cli_options.c: Now conforming to the GNU Coding Standards for
     `--version`.
   * cli_options.c: s/fputs()/PUTS()/
   * autocomplete.c, did_you_mean.c, did_you_mean.h, help.c, help.h,
     help-error.out: Added suggestions to error messages for the help options.
   * options.c: Added *_ALL constants.
   * help.c: s/print_help_options()/print_help_set_options()/

2024-06-07  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS, share/man/man1/cdecl.1, c_ast.c, c_ast.h, c_ast_check.c,
     c_ast_util.c, c_kind.c, c_kind.h, c_sname.c, c_sname.h, c_type.h, dump.c,
     english.c, gibberish.c, help.c, lexer.l, parser.y, types.h,
     test/Makefile.am, concept-error.out, concept.out, debug.out, help.out,
     ntu-error.out, concept-error.test, concept.test, ntu-error.test: Added
     support for constrained via concepts auto abbreviated function template
     parameters.
   * c_ast_check.c, c_ast_check.h, parser.y, ntu-error.out, ntu-error.test: Use
     of `auto` in `typedef` function-like parameters is now correctly reported
     as an error.

2024-06-06  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c: Put additional check for == K_BUILTIN.
   * options.c: Added missing 's'.
   * lexer.l, explain_operator-error.out, explain_operator-error.test: Fixed
     `operator` declaration core dump, e.g. `explain bool int::operator!()`.
   * c_sname.c: s/return 0/goto error/
   * lexer.l, parser.y, debug.out: Renamed typedef tokens and any_typedef.

2024-06-04  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c, help.c, help.out: Added missing 's' from west-decl.
   * share/man/man1/cdecl.1, cli_options.c, gibberish.c, help.c, options.c,
     options.h, set_options.c, alt-tokens.out, cdecl--help.out,
     cdecl--options.out, cl.out, debug.out, declare.out, explicit-ecsu.out,
     explicit-int.out, help.out, infer-command.out, lang.out, prompt.out,
     semicolon.out, set.out, set_options.out, trigraphs.out, using.out,
     west-pointer.out, declare.test, west-pointer.test: Renamed west-pointer to
     west-decl.
   * AUTHORS, share/man/man1/cdecl.1, c_ast.c, c_ast.h, c_ast_check.c,
     c_lang.h, cdecl_keyword.c, dump.c, english.c, gibberish.c, help.c,
     literals.c, literals.h, parser.y, debug.out, declare.out,
     explain-error.out, explain.out, help.out, declare.test,
     explain-error.test, explain.test: Added support for abbreviated function
     template parameter packs.
   * cdecl_keyword.c, gibberish.c, lexer.l, literals.c, literals.h, p_macro.c,
     p_token.c, parser.y: s/Y_DOT_DOT_DOT/Y_ELLIPSIS/

2024-06-01  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: s/"..."/Y_DOT_DOT_DOT/

2024-05-31  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS, share/man/man1/cdecl.1, c_ast.c, c_ast.h, c_ast_check.c,
     c_ast_util.c, c_kind.c, c_kind.h, c_lang.h, c_type.h, cdecl_keyword.c,
     dump.c, english.c, gibberish.c, gibberish.h, help.c, lexer.h, lexer.l,
     literals.c, literals.h, options.c, parser.y, types.h, debug.out,
     declare-error.out, declare.out, explain-error.out, explain.out, help.out,
     declare-error.test, declare.test, explain-error.test, explain.test: Added
     support for C++ structured bindings.
   * lexer.l: Sorted.
   * lexer.l: s/YY_USER_ACTION_UNDO_FOR_REJECT/CDECL_REJECT/
   * parser.y, debug.out:
     s/lambda_param_c_ast_list_opt/paren_param_c_ast_list_opt/
   * parser.y, debug.out:
     s/atomic_builtin_typedef_type_c_ast/east_modifiable_type_c_ast/

2024-05-30  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c, util.c, util.h: Added fputsp_s().

2024-05-29  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Rework of checking sname_list in declare_command for future
     work.

2024-05-28  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Factored type_qualifier_list_c_stid_opt out into
     reference_decl_c_astp.
   * lexer.l, parser.y, explain-error.out, explain-error.test: Now recognizing
     structured binding declarations just to say they're not supported.
   * parser.y, explain-error.out, explain-error.test: Added "asm" and
     "decltype" tests.
   * configure.ac, parser.y: Now recognizing  just to say it's not supported.

2024-05-27  Paul J. Lucas <paul@lucasmail.org>

   * p_macro.c: s/2/STRLITLEN( ", " )/
   * p_macro.c: Now using static NAME_LOC.
   * autocomplete.c, c_keyword.c, cdecl_keyword.c, did_you_mean.c: Now always
     using sizeof( array[0] ).
   * p_keyword.c: Eliminated NULL element.

2024-05-26  Paul J. Lucas <paul@lucasmail.org>

   * p_macro.c, expand-error.out, preprocessor-error.out, expand-error.test,
     preprocessor-error.test: Better error message when attempting to #undef
     __VA_* macros; macro error tests reorganization.
   * p_macro.c, preprocessor-error.out, preprocessor-error.test: Better error
     message when expanding `__VA_*` macros.
   * share/man/man1/cdecl.1: Added missing commas.

2024-05-25  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, share/bash-completions/completions/Makefile.am,
     share/zsh/site-functions/Makefile.am: Fixed issue #36: DESTDIR not heeded
     during make install.
   * src/Makefile.am: Added TARGET_CPPDECL.
   * Makefile.am, share/Makefile.am, share/bash-completions/Makefile.am,
     share/bash-completions/completions/Makefile.am, share/man/Makefile.am,
     share/man/man1/Makefile.am, share/zsh/Makefile.am,
     share/zsh/site-functions/Makefile.am, test/Makefile.am: Suppress printing
     of "--- target ---" when -j is given to BSD's make, part 2.
   * src/Makefile.am, test/Makefile.am: Suppress printing of "--- target ---"
     when -j is given to BSD's make.
   * help.c, cl.out, help.out: Help now includes what a "number" is.

2024-05-22  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, c_ast_util.c, conf_file.c, lexer.l, p_macro.c, parse.c,
     parser.y, pjl_config.h, print.c, set_options.c, util.c:
     s/PJL_IGNORE_RV/PJL_DISCARD_RV/

2024-05-21  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: parse_int() comments + minor clean-up.

2024-05-20  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l, p_keyword.c, p_token.c, parser.y: s/PY_/Y_PRE_/

2024-05-19  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, define-error.out, explain-error.out, ntu-error.out,
     explain-error.test: Improved error messages for predefined types.

2024-05-17  Paul J. Lucas <paul@lucasmail.org>

   * options.c: Now using ARRAY_SIZE() got static buffer sizes.
   * options.c: Added missing '\0' in west_pointer_str(); added assert() calls
     to all *_str().
   * options.c: Added calls to c_tid_check().
   * help.c, help.out: Added missing *|- to help for options.

2024-05-16  Paul J. Lucas <paul@lucasmail.org>

   * set_options.c: Added quotes around "using" in warning message.

2024-05-14  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c: Removed 128 specified size of CLI_OPTIONS_HELP.
   * parser.y: fl_punct_expected() will now also print the look-ahead token's
     token-id in debug mode.
   * parser.y: Removed print_debug_file_line() duplicate call.

2024-05-09  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, c_ast_util.h, c_operator.h, options.h, parse.h, print.h,
     set_options.h, strbuf.h, util.h: #include clean-up and comments.

2024-04-28  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Put quotes around "int[eger]".

2024-04-27  Paul J. Lucas <paul@lucasmail.org>

   * Makefile.am, configure.ac, share/Makefile.am,
     share/bash-completions/Makefile.am,
     share/bash-completions/completions/Makefile.am,
     share/bash-completions/completions/_cdecl, share/zsh/Makefile.am,
     share/zsh/site-functions/Makefile.am, share/zsh/site-functions/_cdecl,
     cli_options.c, test/Makefile.am, cdecl--commands.out, cdecl--help.out,
     cdecl--options.out, cdecl--commands.test, cdecl--options.test: Added
     --commands/-K and --options/-O options facilitating implemting
     command-line completion for bash and zsh.

2024-04-24  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c: Added opt_help().
   * configure.ac, cdecl.1, cli_options.c, cdecl--help.out, __declspec.test,
     alt-tokens.test, cast-error.test, cast.test, cdecl--no-typedefs.test,
     cl.test, debug.test, declare-error.test, declare.test,
     declare_config_tdu.test, declare_operator-error.test,
     declare_operator.test, declare_synonyms.test, declare_udc-error.test,
     declare_udc.test, declare_udl-error.test, declare_udl.test,
     define-error.test, define.test, digraphs.test, east-const.test,
     english-types.test, expand-C23_std-6.10.4.1-ex-2.test,
     expand-C23_std-6.10.4.3-ex-1.test, expand-C23_std-6.10.4.5-ex-4.test,
     expand-C23_std-6.10.4.5-ex-5.test, expand-C23_std-6.10.4.5-ex-7.test,
     expand-error.test, expand-robertelder.test, expand.test,
     explain-error.test, explain.test, explain_cast-error.test,
     explain_cast.test, explain_config_tdu.test, explain_operator-error.test,
     explain_operator.test, explain_udc-error.test, explain_udc.test,
     explain_udl-error.test, explain_udl.test, explicit-ecsu.test,
     explicit-int.test, file-cast_i.test, file-cast_x.test,
     file-declare_i.test, file-declare_x.test, file-explain_i.test,
     file-explain_x.test, gnu_attributes.test, help-error.test, help.test,
     include-err-01.test, include-ok-nested-01.test, include-ok.test,
     include-too_many_files.test, include-unquoted.test, infer-command.test,
     integers.test, lang.test, ntu-error.test, ntu.test,
     preprocessor-error.test, prompt.test, semicolon.test, set.test,
     set_expl.test, set_expli.test, set_explicit-ecsu_x.test,
     set_explicit-int.test, set_explicit-int_x.test, set_graphs.test,
     set_lang_xxx.test, set_nodigraphs.test, set_noexplicit-int_u.test,
     set_options.test, set_prompt_x.test, set_xxx.test, show-error.test,
     show.test, trigraphs.test, using.test, using_config_i.test,
     west-pointer.test, xec-error.test, xec.test, xupc-error.test, xupc.test:
     The short option for `--echo-commands` has been changed from `-O` to `-E`.
   * cli_options.c, cdecl--help.out: Added CLI_OPTIONS_HELP[].

2024-04-16  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Reverted version to 16.3.

2024-04-14  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, parser.y, declare-error.out, explain-error.out,
     declare-error.test, explain-error.test: Now saying "destructors may not
     have parameters" explicitly.

2024-04-13  Paul J. Lucas <paul@lucasmail.org>

   * cast-error.out, cast-error.test: Removed old test files.

2024-04-12  Paul J. Lucas <paul@lucasmail.org>

   * dump.c: Changed !! to != 0.

2024-04-11  Paul J. Lucas <paul@lucasmail.org>

   * c_operator.h, c_type.h, did_you_mean.h, dump.c, types.h: Got rid of
     pointless `u` and () in enum declarations.

2024-03-19  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Eliminated extra "if ( opt_cdecl_debug ... )" check.
   * parser.y: Folded DUMP_PROD into DUMP_START.

2024-03-18  Paul J. Lucas <paul@lucasmail.org>

   * dump.c, print.c, types.h: Eliminated PRI_c_loc_num_t; just use %d instead.
   * c_sname.c, p_token.c, slist.c: Using compound literals more.
   * c_ast_check.c, c_kind.h: Added K_ANY_NAME.

2024-03-17  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, explain-error.out, explain-error.test: Now exhaustively
     checking multiple declarations for conflicts.
   * lexer.l, parser.y, expand.out, expand.test: No longer looking-up and
     returning macro names as macro name tokens.

2024-03-16  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, explain-error.out: For const &, now printing hint in C++ if
     deciphering C++.

2024-03-14  Paul J. Lucas <paul@lucasmail.org>

   * p_macro.c, util.c, util.h: s/check_strftime/STRFTIME/

2024-03-12  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h: Added DECL_UNUSED(c_ast_list_t) to c_udef_conv_ast.
   * gibberish.c: In c_ast_postfix_gibberish(), consolidated K_DESTRUCTOR &
     K_UDEF_CONV cases.
   * c_ast.h, c_ast_check.c, c_ast_util.c, english.c, gibberish.c: Eliminated
     c_ast_params_count() and c_ast_captures_count().

2024-03-10  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, c_lang.c, c_lang.h, c_sname.c, c_type.c, c_typedef.c,
     cdecl_keyword.h, cli_options.c, lexer.l, options.c, options.h, p_macro.c,
     parser.y, print.c, prompt.h, set_options.c: s/opt_lang/opt_lang_id/
   * c_lang.h: Changed definition of LANGX_MASK.
   * c_lang.c, c_lang.h, p_macro.c: c_lang___cplusplus(),
     c_lang___STDC_VERSION__(), and c_lang___STDC__() now take a c_lang_id_t
     parameter.

2024-03-09  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c: Now dynamically allocating a c_typedef only when actually
     inserted.

2024-03-08  Paul J. Lucas <paul@lucasmail.org>

   * parse.c: Added is_c_comment().

2024-03-05  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c: Now using K_ANY_REFERENCE.

2024-03-04  Paul J. Lucas <paul@lucasmail.org>

   * help.c: Added ATTRIBUTE_SENTINEL().
   * c_lang.h: Changed c_lang_newest() and c_lang_oldest() to exclude language
     extensions since they yield incorrect results.

2024-03-03  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, parser.y: 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.
   * strbuf.c: Removed #include <stdio.h>.
   * dam_lev.c, dam_lev.h: Removed mention of cdecl from generic code.
   * red_black.c, red_black.h, red_black_test.c, slist.c, slist.h, strbuf.c,
     strbuf.h: Removed mention of cdecl from generic code.
   * p_token.c, parser.y, slist.c, slist.h, slist_test.c, types.h: Made slist
     not use user_data to break dependency on types.h.
   * slist.h, types.h: Add typedefs for slist_t, slist_node_t to slist.h.
   * read_line.c, strbuf.c, strbuf.h: Fixed some #includes.

2024-03-02  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c: Now using slist_cmp() in c_ast_list_equal().
   * cdecl_keyword.c, p_keyword.c, types.h: Now using bsearch().
   * parser.y: Moved CONST_CAST().
   * c_ast.c, c_ast.h, c_ast_check.c, c_ast_util.c, c_ast_util.h, english.c,
     gibberish.c, p_macro.c, p_token.c, p_token.h, util.h: Added
     NONCONST_OVERLOAD() for several functions.
   * red_black.c: Eliminated nonconst_tree.

2024-03-01  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, c_keyword.c, c_type.c, cdecl.c, cdecl.h, did_you_mean.c,
     lexer.h, lexer.l, parser.y, print.c, print.h, types.h: Eliminated
     cdecl_mode.

2024-02-29  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.c: Added "const".
   * c_ast.c, c_typedef.c, p_macro.c, parser.y: s/FREE/free/
   * Makefile.am: Added missing cdecl.css and lcovrc to EXTRA_DIST.

2024-02-28  Paul J. Lucas <paul@lucasmail.org>

   * c_type.h, dump.c: s/PRIX_C_TID_T/PRIX_c_tid_t/
   * parser.y: Now using $$.

2024-02-27  Paul J. Lucas <paul@lucasmail.org>

   * p_macro.c: Added dump_state.
   * p_macro.c: s/FPRINTF/PRINTF/

2024-02-26  Paul J. Lucas <paul@lucasmail.org>

   * util.c: Added assert()s.
   * util.c, util.h: Added assert()s.
   * did_you_mean.c, did_you_mean.h: Added did_you_mean::literal_len.
   * did_you_mean.c: Factored out dym_copy().

2024-02-25  Paul J. Lucas <paul@lucasmail.org>

   * print.c: Now always printing "error: ".

2024-02-23  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added example for east const.

2024-02-22  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, cdecl.1, c_lang.h: long long is now supported in C++ only in
     C++11 and later.

2024-02-19  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Made --explicit-ecsu section more consistent.

2024-02-18  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, c_typedef.h, p_macro.c, p_macro.h, red_black.h:
     rb_tree_visit()'s return value is now discardable; other visitor functions
     now return void.

2024-02-17  Paul J. Lucas <paul@lucasmail.org>

   * dump.c: c_loc_dump() now dumps lines too (when > 1).
   * dump.c, print.c, types.h: Added PRI_c_loc_num_t.

2024-02-15  Paul J. Lucas <paul@lucasmail.org>

   * p_macro.c: s/stdout/mex->fout/
   * p_token.c: Moved Y_COLON_COLON_STAR.

2024-02-14  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, p_macro.c: Fixed macro argument list memory leak.
   * p_macro.c: Added "const".

2024-02-13  Paul J. Lucas <paul@lucasmail.org>

   * Doxyfile: Removed WITH_IS_SAME_TYPE -- no longer needed.
   * src/Makefile.am, p_kind.c, p_kind.h, p_token.c, p_token.h: Split out
     p_kind.[ch].
   * src/Makefile.am, dump.c, p_macro.c, p_macro.h, p_token.c, p_token.h,
     parser.y, show.c: Split out p_token.[ch].
   * p_macro.c: Removed extraneous ';'.

2024-02-09  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c: Simplification.

2024-02-08  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.h: Using designated initializers for C_TYPEDEF_LIT().

2024-02-07  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c, util.h: Now using simpler freopen().

2024-01-30  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, autocomplete.c, did_you_mean.c, parser.y, util.h: Eliminated
     MEM_ZERO(), IS_POINTER(), IS_SAME_TYPE(), __builtin_types_compatible_p().

2024-01-29  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Bumped version to 6.2.

2024-01-27  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added "const".

2024-01-25  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Better implementation of IS_ARRAY().
   * AUTHORS, cdecl.1, c_keyword.c, literals.c, literals.h, parser.y, print.c,
     explain-error.out, explain.out, ntu-error.out, explain-error.test,
     explain.test: Added typeof(type) support.

2024-01-23  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Added missing space.
   * util.h: Added IS_C_STR(); STRLITLEN() now checking for C string literal.
   * gibberish.c: Simplified is_more_than_plain_typedef.
   * gibberish.c: s/ast->type/type/
   * parser.y: Eliminated %s for CDECL.
   * options.h, types.h: Moved cdecl_debug to types.h.

2024-01-21  Paul J. Lucas <paul@lucasmail.org>

   * p_macro.c: Made __VA_OPT___node be pointer to const.

2024-01-15  Paul J. Lucas <paul@lucasmail.org>

   * p_macro.c: Added "const" in a few places.

2024-01-14  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, c_ast_util.c, c_keyword.c, c_operator.c, cdecl_keyword.c,
     lexer.l, p_macro.c, parser.y, types.h: [CY]_*2 renaming.
   * p_macro.c: Added missing "inline".

2024-01-13  Paul J. Lucas <paul@lucasmail.org>

   * dump.c, debug.out: Improved tid and type dumping.

2024-01-11  Paul J. Lucas <paul@lucasmail.org>

   * literals.c, literals.h, p_keyword.c, parser.y, preprocessor-error.out,
     preprocessor-error.test: "#file" isn't a preprocessor directive.

2024-01-10  Paul J. Lucas <paul@lucasmail.org>

   * Doxyfile, util.h: Better handling of IS_SAME_TYPE().
   * configure.ac, english.c, explain.out, explain_operator.out,
     explicit-ecsu.out, trigraphs.out, explicit-ecsu.test: `explicit-ecsu` now
     also applies in pseudo-English.

2024-01-07  Paul J. Lucas <paul@lucasmail.org>

   * p_macro.c: Now using strbuf_sepc_puts().
   * p_macro.c: Simpler check for "...".
   * p_macro.c: Added "const".
   * configure.ac, p_macro.c, expand-C23_std-6.10.4.5-ex-4.out: Fixed
     leading/trailing whitespace stringification.
   * parser.y, show.c, types.h:
     s/CDECL_SHOW_IGNORE_LANG/CDECL_SHOW_OPT_IGNORE_LANG/

2024-01-06  Paul J. Lucas <paul@lucasmail.org>

   * conf_file.c: Moved strbuf_cleanup() outside of "if".
   * cdecl.h, cli_options.c, conf_file.c: CONF_FILE_NAME_DEFAULT is now defined
     to start with '.' implicitly.
   * color.c: Added assert() for colors_parse().
   * Doxyfile: No longer need ENABLE_CDECL_DEBUG.
   * c_ast.c, c_sglob.h, dump.c, english.c, gibberish.c, slist.c, slist.h,
     strbuf.h: Now using compound literals more instead of MEM_ZERO().

2024-01-05  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS, configure.ac, cdecl.1, src/Makefile.am, autocomplete.c, c_lang.c,
     c_lang.h, cdecl.c, cdecl_command.c, cdecl_keyword.c, color.c, color.h,
     did_you_mean.c, did_you_mean.h, dump.c, dump.h, help.c, lexer.h, lexer.l,
     literals.c, literals.h, p_keyword.c, p_keyword.h, p_macro.c, p_macro.h,
     parse.c, parser.y, print.c, print.h, show.c, show.h, slist.c, slist.h,
     strbuf.c, strbuf.h, types.h, util.c, util.h, test/Makefile.am,
     alt-tokens.out, cl.out, debug.out, expand-C23_std-6.10.4.1-ex-2.out,
     expand-C23_std-6.10.4.3-ex-1.out, expand-C23_std-6.10.4.5-ex-4.out,
     expand-C23_std-6.10.4.5-ex-5.out, expand-C23_std-6.10.4.5-ex-7.out,
     expand-error.out, expand-robertelder.out, expand.out, help.out,
     infer-command.out, preprocessor-error.out, show-error.out, show.out,
     ac-explain.exp, alt-tokens.test, debug.test,
     expand-C23_std-6.10.4.1-ex-2.test, expand-C23_std-6.10.4.3-ex-1.test,
     expand-C23_std-6.10.4.5-ex-4.test, expand-C23_std-6.10.4.5-ex-5.test,
     expand-C23_std-6.10.4.5-ex-7.test, expand-error.test,
     expand-robertelder.test, expand.test, infer-command.test,
     preprocessor-error.test, show-error.test, show.test: Added macro expansion
     feature.
   * red_black_test.c: More red-black tree tests.
   * Doxyfile: Added red_black_test.c, slist_test.c to EXCLUDE.
   * print.c: Not printing ':' and ',' in color in print_loc().
   * strbuf.c, util.c, util.h: Eliminated TYPE parameter from REALLOC().
   * util.c: s/char*/char/ for REALLOC().

2024-01-04  Paul J. Lucas <paul@lucasmail.org>

   * slist_test.c: Using POINTER_CAST more -- eliminated clang warnings.
   * c_sname.h: Using POINTER_CAST more -- eliminated clang warnings.
   * c_ast_util.c, explain-error.out, explain-error.test: Fixed issue #32:
     Invalid function declarator accepted as valie -- part 2.
   * parser.y, explain-error.out, explain-error.test: Fixed issue #32: Invalid
     function declarator accepted as valie.
   * c_ast.c, c_ast.h: Using is_1_bit_only_in_set() more.
   * parser.y: Now calling ia_type_spec_ast() only if necessary.
   * parser.y: Now using ia_type_spec_ast() in func_cast_c_astp().
   * c_ast_util.c: Simpler condition.

2024-01-03  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Removed unecessary c_tid_check().
   * parser.y: Added call to c_tid_check().
   * c_ast_util.c, c_ast_util.h, parser.y: Moved "assume constructor" code into
     c_ast_is_likely_ctor() in c_ast_util.c.

2024-01-02  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Added ().
   * c_typedef.c: Removed unnecessary assert().
   * util.h: s/int/char/

2024-01-01  Paul J. Lucas <paul@lucasmail.org>

   * parse.c: Added LCOV_EXCL_START/LCOV_EXCL_STOP.
   * print.c, set_options.c: Added NODISCARD.
   * dump.c: Added NODISCARD.
   * c_sname.c: Added NODISCARD.
   * parse.c: Replaced cdecl_parse_comment_start() and cdecl_parse_q() with
     no_infer_command().
   * Doxyfile, Makefile.am, bootstrap, cdecl.css, configure.ac, lcovrc,
     pjl_compile.m4, makedoc.sh, man/Makefile.am, man/man1/Makefile.am,
     man/man1/c++decl.1, cdecl.1, src/Makefile.am, autocomplete.c,
     autocomplete.h, c_ast.c, c_ast.h, c_ast_check.c, c_ast_check.h,
     c_ast_util.c, c_ast_util.h, c_keyword.c, c_keyword.h, c_kind.c, c_kind.h,
     c_lang.c, c_lang.h, c_operator.c, c_operator.h, c_sglob.c, c_sglob.h,
     c_sname.c, c_sname.h, c_type.c, c_type.h, c_typedef.c, c_typedef.h,
     cdecl.c, cdecl.h, cdecl_command.c, cdecl_command.h, cdecl_keyword.c,
     cdecl_keyword.h, cdecl_lldb.py, cdecl_parser.h, cli_options.c,
     cli_options.h, color.c, color.h, conf_file.c, conf_file.h, dam_lev.c,
     dam_lev.h, decl_flags.h, did_you_mean.c, did_you_mean.h, dump.c, dump.h,
     english.c, english.h, gibberish.c, gibberish.h, help.c, help.h, lexer.h,
     lexer.l, lines.sh, literals.c, literals.h, options.c, options.h, parse.c,
     parse.h, parser.y, pjl_config.h, print.c, print.h, prompt.c, prompt.h,
     read_line.c, read_line.h, red_black.c, red_black.h, red_black_test.c,
     set_options.c, set_options.h, show.c, show.h, slist.c, slist.h,
     slist_test.c, strbuf.c, strbuf.h, types.h, unit_test.h, util.c, util.h,
     test/Makefile.am, not_in_Makefile.sh, run_test.sh, update_test.sh: Updated
     copyright year.
   * infer-command.out, infer-command.test: Added test for // and /* for
     infer-command.

2023-12-31  Paul J. Lucas <paul@lucasmail.org>

   * parse.c: Fixed a syntax error when in `infer-command` mode and a line
     starts with a comment.
   * man/man1/Makefile.am: Added pdf-local, clean-local, distclean-local
     targets.
   * parser.y: Added IGNORING() and UNSUPPORTED().
   * parser.y: s/IS_UNSUPPORTED/!IS_SUPPORTED/
   * parser.y: Added "(ignoring)" for consistency.

2023-12-30  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: More formatting.
   * cdecl.1: Fixed formatting.
   * cdecl.1: Added "east".
   * cdecl.1, cli_options.c, cdecl--help.out: --east-const's short option is
     now -e.
   * man/man1/Makefile.am: Added PDF target.
   * cdecl.1: s/CE/CW/
   * parser.y, explain-error.out, explain-error.test: Fixed parsing `struct`
     member with bit-field.

2023-12-29  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Moved CDECL_CFLAGS.
   * cdecl.1: Slight rewording: "containing".
   * cdecl.1: Removed mention of gcc color capabilities.
   * lexer.l, types.h: Added c_loc_num_t as short to halve size of c_loc_t.

2023-12-28  Paul J. Lucas <paul@lucasmail.org>

   * parse.c: Fixed handling of yyparse()'s return value and error message.
   * configure.ac, cdecl.1, src/Makefile.am, c_ast.c, c_ast.h, c_typedef.c,
     cli_options.c, dump.h, help.c, options.c, options.h, parser.y, print.c,
     set_options.c, test/Makefile.am: --disable-cdecl-debug has been removed.
   * parser.y: Eliminated cast_literal.
   * c_ast_check.c: Eliminated unused variadic_ast.
   * print.c: Removed `if` before subtracting print_params.inserted_len.
   * cdecl.1: Removed extra .RE.

2023-12-27  Paul J. Lucas <paul@lucasmail.org>

   * parse.c: Fixed having `q` be a synonym for `quit` in `infer-command`
     (formerly `explain-by-default`) mode.
   * cdecl.c, cdecl.h, parser.y: s/quit()/cdecl_quit()/ and moved into cdecl.c.
   * cdecl.1: Undid premature mention of "expand".
   * cdecl.1, autocomplete.c, cdecl_command.c, cli_options.c, help.c,
     options.c, options.h, parse.c, set_options.c, test/Makefile.am,
     alt-tokens.out, cdecl--help.out, cl.out, debug.out, explicit-ecsu.out,
     explicit-int.out, help.out, lang.out, prompt.out, semicolon.out, set.out,
     set_expl.out, set_options.out, trigraphs.out, using.out, west-pointer.out:
     Renamed --explain/-e to --infer-command/-I.
   * util.c, util.h: s/WS/WS_CHARS/
   * parse.c: s/ARRAY_SIZE/STRLITLEN/

2023-12-26  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: s/lexer_token/yytext/ in lexer_loc().

2023-12-24  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c: Using FOREACH_ARRAY_ELEMENT more.
   * cdecl.1: Added subheadings in EXAMPLES section.
   * cdecl.1, color.c: Removed GCC_COLORS support.

2023-12-23  Paul J. Lucas <paul@lucasmail.org>

   * color.c: colors_parse() now treats "" the same as NULL.

2023-12-22  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added <command> to help_what_opt error message.
   * util.h: s/Changed str_realloc_cat() to PJL_DISCARD.
   * util.c: Added +1 for \0 byte at end of string in str_realloc_cat().

2023-12-21  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Removed unecessary cast.
   * slist.c, slist.h: Made slist_free_if() return bool.
   * parser.y, slist.c, slist.h, slist_test.c: slist_free_if() now takes
     slist_node_t.

2023-12-17  Paul J. Lucas <paul@lucasmail.org>

   * print.c, prompt.c, prompt.h, util.h: Added cdecl_prompt_len().

2023-12-13  Paul J. Lucas <paul@lucasmail.org>

   * prompt.c, read_line.c, strbuf.c: Marked lines as LCOV_EXCL_LINE.
   * lexer.l: Marked lines as LCOV_EXCL_LINE.
   * dump.c: Marked lines as LCOV_EXCL_LINE.
   * did_you_mean.c: Marked line as LCOV_EXCL_LINE.
   * dam_lev.c: Marked lines as LCOV_EXCL_LINE.
   * c_sname.c: Marked lines as LCOV_EXCL_LINE.
   * c_typedef.c: Marked line as LCOV_EXCL_LINE.
   * c_type.c: Marked lines as LCOV_EXCL_LINE.
   * c_sglob.c: Marked line as LCOV_EXCL_LINE.
   * c_lang.c: Marked line as LCOV_EXCL_LINE.
   * test/Makefile.am: Renamed test.
   * print.c, explain-error.out, explain-error.test: Improved C99 with
     extension error messages.
   * c_lang.c: Marked line as LCOV_EXCL_LINE.
   * debug.out, debug.test: Added debug test to dump "name".
   * c_ast_util.c: Converted NULL check to assert().
   * c_ast_check.c: Marked line as LCOV_EXCL_LINE.
   * c_ast_check.c, explain-error.out, explain-error.test: Arrays being
     `restrict` except as function parameter is now correctly illegal.
   * explain.out, explain.test: Added "restrict" test.
   * c_ast_check.c: Coalesced K_CAPTURE, K_PLACEHOLDER, and K_VARIADIC.
   * declare-error.out, declare-error.test: Added negative user-defined literal
     test.
   * declare-error.out, declare-error.test: Added negative declare operator new
     test.
   * c_ast_check.c, explain-error.out, explain-error.test: Lambdas are now
     correctly illegal in C.
   * explain-error.out, explain.out, explain-error.test, explain.test: Added
     [this] and [*this] tests.
   * explain-error.out, explain-error.test: Fixed explain error test.
   * declare-error.out, declare-error.test: Added main() declare error tests.
   * explain-error.out, explain-error.test: Fixed tests.
   * declare-error.out, declare-error.test: Added declare array of void error
     test.
   * c_ast.h: Removed c_ast_captures() -- not used.

2023-12-12  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am, help-error.out, help-error.test: Added help error tests.
   * help.out, help.test: Added help tests.
   * dump.c: Put dumping of unique IDs inside LCOV_EXCL_START/LCOV_EXCL_STOP.
   * cli_options.c: Put print_version() inside LCOV_EXCL_START/LCOV_EXCL_STOP.
   * c_ast.c, c_ast.h: Made c_ast_list_equal() static.
   * c_ast.c, c_ast.h: Made c_ast_list_dup() static.
   * util.c: Added LCOV_EXCL_START/LCOV_EXCL_STOP for fatal_error().

2023-12-10  Paul J. Lucas <paul@lucasmail.org>

   * print.c: Added LCOV_EXCL_LINE.
   * lcovrc: Fixed exlude lines.

2023-12-09  Paul J. Lucas <paul@lucasmail.org>

   * Doxyfile, red_black.c, red_black.h, red_black_test.c: I discovered that
     the implementation from Apple, et al, even though it seems to work, didn't
     correctly preserve a red-black tree's properties; so I rewrote the code
     using the pseudo-code given in _Introduction to Algorithms_, 4th ed.,
     section 13. The rewritten code correctly preserves a red-black tree's
     properties.
   * red_black.c: Variable renaming to more closely match code in "Introduction
     to Algorithme," 4th ed.

2023-12-08  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c: Fixed "zero-length gnu_printf format string" warning.

2023-12-06  Paul J. Lucas <paul@lucasmail.org>

   * declare-error.out, declare_config_tdu.out, explain-error.out,
     explain_config_tdu.out, file-cast_i.out, file-cast_x.out,
     file-declare_i.out, file-declare_x.out, file-explain_i.out,
     file-explain_x.out, include-err-01.out, include-ok-nested-01.out,
     include-ok.out, include-too_many_files.out, include-unquoted.out,
     integers.out, set.out, set_expl.out, set_expli.out,
     set_explicit-ecsu_x.out, set_explicit-int.out, set_explicit-int_x.out,
     set_graphs.out, set_lang_xxx.out, set_nodigraphs.out,
     set_noexplicit-int_u.out, set_options.out, set_prompt_x.out, set_xxx.out,
     using_config_i.out, xec.out, xupc-error.out, xupc.out, __declspec.test,
     alt-tokens.test, cast-error.test, cast.test, cast_au.test, cast_pau.test,
     cdecl--no-typedefs.test, cl.test, debug.test, declare-error.test,
     declare.test, declare_+ctor-error.test, declare_a_nua_f.test,
     declare_ari.test, declare_ati-c++20.test, declare_aui-c++11.test,
     declare_cnmf_v.test, declare_config_tdu.test, declare_epf.test,
     declare_etmf.test, declare_exsti.test, declare_fcf.test,
     declare_fco_exclam_b.test, declare_nrfi_v-01-c++.test,
     declare_operator-error.test, declare_operator.test, declare_pmri.test,
     declare_pri.test, declare_rrgi.test, declare_rv.test, declare_stctor.test,
     declare_stmi.test, declare_synonyms.test, declare_udc-error.test,
     declare_udc.test, declare_udl-error.test, declare_udl.test,
     declare_v+f_v.test, declare_xvi.test, define-error.test, define.test,
     digraphs.test, east-const.test, english-types.test,
     explain-by-default.test, explain-error.test, explain.test,
     explain_cast-error.test, explain_cast.test, explain_config_tdu.test,
     explain_operator-error.test, explain_operator.test,
     explain_udc-error.test, explain_udc.test, explain_udl-error.test,
     explain_udl.test, explicit-ecsu.test, explicit-int.test, file-cast_i.test,
     file-cast_x.test, file-declare_i.test, file-declare_x.test,
     file-explain_i.test, file-explain_x.test, gnu_attributes.test, help.test,
     include-err-01.test, include-ok-nested-01.test, include-ok.test,
     include-too_many_files.test, include-unquoted.test, integers.test,
     lang.test, ntu-error.test, ntu.test, prompt.test, semicolon.test,
     set.test, set_expl.test, set_expli.test, set_explicit-ecsu_x.test,
     set_explicit-int.test, set_explicit-int_x.test, set_graphs.test,
     set_lang_xxx.test, set_nodigraphs.test, set_noexplicit-int_u.test,
     set_options.test, set_prompt_x.test, set_xxx.test, show-error.test,
     show.test, trigraphs.test, using.test, using_config_i.test,
     west-pointer.test, xec-error.test, xec.test, xupc-error.test, xupc.test:
     All tests now have -bO options.

2023-12-05  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: s/36/32/ for green color.

2023-12-04  Paul J. Lucas <paul@lucasmail.org>

   * red_black.c: More red_black latent fixes.

2023-12-03  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l, parser.y: Made ::* be :: use trailing context for * to make them
     separate tokens.

2023-12-02  Paul J. Lucas <paul@lucasmail.org>

   * red_black.c: Fixed latent bug in red-black tree implementation.

2023-12-01  Paul J. Lucas <paul@lucasmail.org>

   * util.c: Now keeping track of whether we're inside quotes.
   * util.c: Now properly handling \\ in fputs_quoted().

2023-11-28  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Made {block|func}_decl_c_astp more similar.
   * c_ast.c: Reworked c_ast_set_parent().
   * parser.y: Now implicitly setting target_ast.
   * parser.y: Now also setting target_ast in constructor case.
   * parser.y: Now setting target_ast implicitly.
   * parser.y: Made func_cast_c_astp consistent with func_decl_c_astp.
   * parser.y: Reworked func_decl_c_astp to match array_decl_c_astp -- unclear
     whether it's actually better, but at least it's consistent.
   * parser.y: Added missing NODISCARD.

2023-11-27  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l, parser.y: Eliminated Y_QUOTE2 token.

2023-11-22  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: s/IF_DEBUG/IF_CDECL_DEBUG/
   * dump.c, options.c, options.h:
     s/CDECL_DEBUG_OPT_UNIQUE_ID/CDECL_DEBUG_OPT_AST_UNIQUE_ID/

2023-11-17  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Removed <*>\\\n since strbuf_read_line() handles that internally.
   * read_line.c, explain-error.out, file-cast_x.out: Fixed escaped newline
     handling when not using GNU readline.

2023-11-15  Paul J. Lucas <paul@lucasmail.org>

   * c_keyword.c, lexer.l, parser.y: Eliminated named tokens Y_AMPER, Y_CARET,
     Y_EXCLAM, Y_PIPE, and Y_TILDE.
   * slist.c, slist.h: slist_move() can now accept NULL.

2023-11-09  Paul J. Lucas <paul@lucasmail.org>

   * util.c: No longer double-escaping quotes.
   * c_sname.c, c_sname.h: c_scope_data_dup() can now accept NULL.

2023-11-08  Paul J. Lucas <paul@lucasmail.org>

   * slist.h: Now using UNIQUE_NAME() in SLIST_VAR_INIT().

2023-11-03  Paul J. Lucas <paul@lucasmail.org>

   * cdecl_keyword.c, lexer.l, parser.y: s/Y_ELLIPSIS/Y_DOT3/
   * lexer.l, parser.y: s/Y_ARROW_STAR/Y_MINUS_GREATER_STAR/;
     s/Y_ARROW/Y_MINUS_GREATER/
   * c_ast_check.c, c_operator.c, parser.y, types.h:
     s/C_OP_ARROW_STAR/C_OP_MINUS_GREATER_STAR/;
     s/C_OP_ARROW/C_OP_MINUS_GREATER/

2023-11-01  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, explain-error.out, explain_operator-error.out: Beter `...`
     checking.

2023-10-31  Paul J. Lucas <paul@lucasmail.org>

   * dump.c, dump.h, parser.y, util.c, util.h: Replaced str_dump() with
     fputs_quoted().

2023-10-29  Paul J. Lucas <paul@lucasmail.org>

   * dump.c: Added \b to str_dump().

2023-10-28  Paul J. Lucas <paul@lucasmail.org>

   * dump.c: Now also escaping \f, \n, \r, \t, \v, \\ in str_dump().

2023-10-27  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Now accepting "user defined" (with a space instead of a "-") for
     declaring user-defined operators.
   * dump.c, dump.h, parser.y, debug.out: Added public c_alignas_dump(); now
     dumping c_alignas objects.

2023-10-22  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, c_ast_util.c, c_lang.c, english.c, gibberish.c: Eliminated
     `default` for `switch` on `c_kind_t` in most cases.

2023-10-09  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.c, c_lang.h, gibberish.c: Eliminated c_lang_is_c() and
     c_lang_is_cpp().
   * c_lang.h, c_type.c, gibberish.c, set_options.c: Added
     LANG_ECSU_IS_IMPLICIT_TYPE.
   * parser.y: Using LANG_MEMBER_FUNCTIONS more.
   * c_lang.h, parser.y: Added LANG__Noreturn_NOT_DEPRECATED.
   * parser.y, explain-error.out, explain-error.test: Implicit `int` pointer
     declarations, e.g., `*p`, are now correctly illegal in C++.
   * c_ast_check.c, c_lang.h, parser.y: Added LANG_MEMBER_FUNCTIONS,
     LANG_volatile_PARAMS_NOT_DEPRECATED, &
     LANG_volatile_RETURN_TYPES_NOT_DEPRECATED.
   * c_ast_check.c, c_lang.h: Added LANG_extern_void.
   * parser.y: Added assert().

2023-10-08  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Added -D_ISOC11_SOURCE.
   * parser.y: Using other_token_c() more.
   * c_ast_check.c, parser.y: Moved new-style casts check from parser.y to
     c_ast_check.c.
   * parser.y: s/EPUTS/EPUTC/
   * gibberish.c, gibberish.h, parser.y: Moved code out of parser.y into
     c_sname_list_ast_gibberish().
   * parser.y, explain-error.out: Improved error message in join_type_decl().

2023-10-07  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c: Using c_tid_name_error() more.
   * c_ast_check.c, declare_synonyms.out, explain.out: s/"nodiscard" functions
     can not return void/"nodiscard" functions must return a value/
   * c_ast_check.c, c_sname.c, c_sname.h: Added c_sname_cmp_name().
   * c_ast_check.c: Now using c_ast_equal().
   * c_ast_check.c, explain_operator-error.out: Better non-member relational
     operator parameter location.
   * c_ast_check.c, explain-error.out: Now using c_tid_name_error(
     TA_no_unique_address ).
   * c_ast_check.c, c_operator.c, c_operator.h, c_type.c, gibberish.c,
     gibberish.h: Added other_token_c().
   * c_ast_check.c: Using alt_token_c(), graph_token_c() more.
   * c_ast_check.c, declare_synonyms.out, explain.out: Using c_tid_name_error()
     more.
   * c_ast_check.c: Removed "else".

2023-10-06  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, c_ast_util.h: Moved c_ast_oper_mbr_matches().
   * c_ast_check.c: Simplified.
   * c_ast_check.c, c_ast_util.c, c_ast_util.h: Factored out
     c_ast_oper_params_min_max().
   * Doxyfile, configure.ac, c_typedef.c, cli_options.c, help.c, options.h,
     set_options.c: Added ENABLE_BISON_DEBUG as a synonym for YYDEBUG.
   * options.c: Added set_all_or_none().
   * options.c: Added missing "default".
   * print.c: Now using CDECL macro more.
   * c_ast_check.c, parser.y: s/EPRINTF/EPUTS/
   * c_ast_check.c, explain-error.out, explain-error.test: For types that are
     `typedef`s, now printing `aka` followed by their underlying types in more
     cases.
   * c_lang.h, c_operator.c: Added LANG_1_ARY_OP_BRACKETS.

2023-10-05  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, print.c, print.h, explain-error.out, explain-error.test:
     For types that are `typedef`s, now printing `aka` followed by their
     underlying types in more cases.
   * gibberish.c: s/postfix/is_postfix/
   * configure.ac, gibberish.c, ntu.out, show.out, ntu.test: Fixed printing of
     `typedef`s of nested types.
   * c_ast_check.c, test/Makefile.am, cast-error.out, cast.out,
     declare-error.out, declare_operator-error.out, declare_udc-error.out,
     declare_udl-error.out, define-error.out, define.out, explain-error.out,
     explain_cast-error.out, explain_operator-error.out, explain_udc-error.out,
     explain_udl-error.out, ntu-error.out, ntu.out, show-error.out,
     xec-error.out, cast-error.test, cast.test, declare-error.test,
     declare_operator-error.test, define-error.test, define.test,
     explain-error.test, explain_cast-error.test, explain_operator-error.test,
     explain_udc-error.test, explain_udl-error.test, integers.test,
     ntu-error.test, ntu.test, show-error.test, xec-error.test: Negative test
     consolidation.

2023-10-04  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added missing calls to print_debug_file_line().

2023-10-02  Paul J. Lucas <paul@lucasmail.org>

   * ac-cast_into.exp, ac-declare.exp, ac-explain.exp, ac-help.exp, ac-set.exp,
     ac-show.exp: Removed "--" after "expect": it was failing in Github
     Codespaces and doesn't seem to be necessary.
   * cdecl_keyword.c, parser.y: Better way to implement `non-throwing` meaning
     `noexcept` in C++11 and later.

2023-10-01  Paul J. Lucas <paul@lucasmail.org>

   * conf_file.c, parse.c, parse.h: Eliminated return_on_error parameter from
     cdecl_parse_file(); added cdecl_parse_file_impl().
   * parser.y, test/Makefile.am, declare.out: Previously, `non-throwing` always
     means `throw()`.  Now, the meaning changes based on the current language:
     if it's C++11 or later, it means `noexcept`.
   * read_line.c: Eliminated is_fin_a_tty variable.
   * conf_file.c, parse.c, parse.h, read_line.c, read_line.h: Eliminated fout
     parameter from cdecl_parse_file() and strbuf_read_line().
   * src/Makefile.am, c_typedef.c, cdecl.c, cdecl.h, cdecl_parser.h,
     conf_file.c, parse.c, parse.h: Split off cdecl_parse_*() functions into
     parse.c.
   * cdecl_parser.h: Removed #include.
   * src/Makefile.am, cdecl.c, cdecl.h, conf_file.c, conf_file.h, util.c,
     util.h: Split off configuration file functions into conf_file.c.

2023-09-30  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c: Added {}.
   * c_ast.c, c_ast_check.c, c_ast_util.c, english.c, gibberish.c: Removed {}
     around case; using NO_OP instead.
   * dump.c: 1. Coalesced unique_id dumping. 2. Now printing dup_from_id only
     if > 0. 3. s/parent__unique_id/parent_id/ 4.
     s/param_of__unique_id/param_of_id/ 5. Now printing param_of_if only if >
     0.

2023-09-29  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, parser.y, slist.c, slist.h, slist_test.c, types.h: Now doing
     better garbage collection.
   * parser.y: Now correctly using c_ast_set_parent() for K_ENUM.
   * c_ast.c, c_ast.h, c_ast_check.c, dump.c, parser.y: Added
     c_ast::param_of_ast; eliminated check_state::func_ast.
   * c_ast.c, c_ast.h, c_ast_check.c, c_ast_util.c, english.c:
     s/data/user_data/

2023-09-28  Paul J. Lucas <paul@lucasmail.org>

   * c_kind.h, c_lang.h, help.h, print.h, show.h, types.h: #include file
     clean-up 4.
   * c_ast.c, c_ast_check.c, c_ast_util.c, c_keyword.c, c_lang.c, c_operator.c,
     c_sglob.c, c_sname.c, c_type.c, c_typedef.c, cdecl_command.c,
     cdecl_keyword.c, color.c, dam_lev.c, did_you_mean.c, dump.c, english.c,
     gibberish.c, options.c, prompt.c, read_line.c, red_black.c, show.c,
     slist.c: #include file clean-up 3.
   * lexer.l: #include file clean-up 2.
   * c_ast.c, c_ast_check.c, c_ast_util.c, c_keyword.c, c_lang.c, c_operator.c,
     c_sglob.c, c_sname.c, c_type.c, c_typedef.c, cdecl_command.c,
     cdecl_keyword.c, color.c, dam_lev.c, did_you_mean.c, dump.c, english.c,
     gibberish.c, help.c, options.c, prompt.c, read_line.c, red_black.c,
     set_options.c, show.c, slist.c: #include file clean-up.
   * cli_options.c, print.c, red_black_test.c, slist_test.c, strbuf.c: Added
     missing #include <stdio.h>
   * cdecl.1, cli_options.c, cdecl--help.out: Added `--no-buffer-stdout` & `-b`
     command-line options to set stdout to unbuffered.
   * cdecl.1: Added missing optional argument for `set debug` option.
   * strbuf.c: Use memcpy() to eliminate "'strncpy' output truncated before
     terminating nul copying 1 byte from a string of the same length" warning.
   * dump.c: Fixed "zero-length gnu_printf format string" warning.
   * lexer.l: Eliminated "a label can only be part of a statement and a
     declaration is not a statement" warning.
   * lexer.l, parser.y, debug.out: Now always returning unsigned int to
     eliminate (unsigned) casts.
   * c_type.c: s/unreachable()/break/
   * autocomplete.c, c_type.c, cdecl.c, color.c, help.c, util.h: Put
     FOREACH_ARRAY_ELEMENT() back.
   * color.c: Eliminated NULL row from CAP_VAR_MAP; using ARRAY_SIZE().
   * help.c, util.h: Eliminated FOREACH_ARRAY_ELEMENT() -- it doesn't work for
     strings.
   * help.c, util.h: Refactored code into map_what(); added
     FOREACH_ARRAY_ELEMENT().
   * help.c, help.out, help.test: Now checking found command for an exact
     match.

2023-09-27  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c: Now using ARRAY_SIZE().
   * lcovrc: Removed CASE_K_PLACEHOLDER.
   * configure.ac: Upped version to 15.0.
   * parser.y: Eliminated in_attr::is_implicit_int.
   * parser.y: Eliminated in_attr.operator.
   * c_ast_check.c, parser.y, declare_nmo_amper_i_i.out,
     declare_o_minus2_d_rk.out, declare_o_minus_iel_i.out,
     declare_o_plus2_d_rk.out, declare_o_plus_iel_i.out,
     declare_udl_pcci_i.out, explain_co_less_i_b++default.out,
     explain_fkrel_i.out, explain_fo_eq2_crki_b++default.out,
     explain_fo_eq2_crkk_b++default.out, explain_fo_eq2_crkrk_b++default.out,
     explain_fo_eq2_icrk_b++default.out, explain_fo_eq2_ik_b++default.out,
     explain_fo_eq2_kcrk_b++default.out, explain_fo_eq2_ki_b++default.out,
     explain_fo_eq2_rkcrk_b++default.out, explain_fo_exclam__b.out,
     explain_fo_plus_2crk_b++default.out, explain_o_delete_i_v.out,
     explain_o_less_2rck_b++default.out, explain_o_minus2_d_rk.out,
     explain_o_minus_iel_i.out, explain_o_new_i_pv.out,
     explain_o_plus2_d_rk.out, explain_o_plus_iel_i.out, explain_udl_2c_i.out,
     explain_udl_piul_i.out, explain_udl_ul_i.out: Made more error messages
     more consistent.
   * parser.y: Now using c_ast_set_parent().
   * parser.y: Added assert().
   * parser.y: s/add_type/define_type/
   * parser.y: Switched attr_syntax_not_supported() parameter order.
   * parser.y: Eliminated special-case handling of type_spec_ast in decl_c
     production.

2023-09-26  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am, typedef.out, typedef.test: typedef test consolidation.
   * parser.y, test/Makefile.am, typedef.out, typedef.test: Eliminated
     in_attr::typedef_ast and in_attr::typedef_ast_list.
   * parser.y: Added `inline`.
   * parser.y, debug.out: s/current_scope/scope_sname/
   * c_ast.c: Added missing #ifdef ENABLE_CDECL_DEBUG ... #endif.
   * c_ast.c, c_ast.h, dump.c: Added `dup_from_id` JSON5 field.
   * parser.y: Fixed DUMP_START().
   * cdecl.1, autocomplete.c, c_typedef.c, cli_options.c, dump.c, help.c,
     options.c, options.h, parser.y, print.c, set_options.c, set_options.h,
     cdecl--help.out, debug.out, help.out: `unique_id` values no longer dump by
     default; added `u` argument for -d/--debug and `set debug` option.
   * gibberish.c, parser.y, debug.out, explain.out, explain.test: Fixed
     multiple declarations.
   * parser.y: Added c_ast_dup_gc().

2023-09-25  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Split DUMP_START() into DUMP_START() and DUMP_PROD().
   * parser.y: Added .target_ast =.
   * parser.y: s/c_ast_list_gc/c_ast_list_cleanup_gc/
   * c_ast_check.c: Now using !c_ast_equal().
   * english.c, explain.out, explain.test: Output from `explain` coalesces
     same-base-type declarations together.

2023-09-24  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, explain_operator.out, explain_operator.test: Fixed explaining
     multiple declarations with an overloaded operator.
   * parser.y: Now keeping type_ast const.
   * c_ast_check.c: Now using !c_ast_equal( param_ast, ret_ast ).
   * parser.y, debug.out: Now dumping in_attr__type_c_ast before calling
     c_ast_dup(); reworked pc99_pointer_type_c_ast.

2023-09-23  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c: Better check for multiple declarations.
   * c_ast_check.c: Now checking c_sname_empty().

2023-09-22  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, parser.y, show.c, cdecl--no-typedefs.out, cl.out,
     include-err-01.out, include-ok-nested-01.out, include-ok.out,
     k_typedef_i_typedef_tn_i.out, retypedef-01.out, show.out,
     typedef_fi_v_show.out, typedef_i_pi.out, typedef_pfi_v_show.out,
     using_pfi_v_show_f.out: The `show` command now shows types as they were
     declared by default.
   * gibberish.c: Fixed showing `inline namespace` types as gibberish.

2023-09-20  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, util.h: Now using HAVE___BUILTIN_EXPECT rather than
     __GNUC__.

2023-09-19  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Sorted macros.
   * c_typedef.c, cdecl.c, lexer.l, prompt.c, util.c, util.h: Replaced
     check_atexit() with ATEXIT().
   * cli_options.c, util.c, util.h: Replaced check_dup2() with DUP2().

2023-09-18  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c: Removed unecessary #include.
   * set_options.c: Removed assert().

2023-09-17  Paul J. Lucas <paul@lucasmail.org>

   * dump.c: Added DUMP_AST_LIST().
   * dump.c: Added "static".
   * dump.c: Added DUMP_AST().
   * parser.y: Eliminated DUMP_COMMA.
   * cli_options.c: s/usage()/print_usage()/, s/version()/print_version()/
   * c_lang.h, c_type.c, cdecl_keyword.c: s/LANG_BOOL_TYPE/LANG_BOOLEAN/
   * c_lang.h, cdecl_keyword.c: s/LANG_USER_DEF_LITERALS/LANG_USER_DEF_LITS/
   * c_lang.c, c_lang.h: Eliminated LANG_C_MASK and LANG_CPP_MASK.
   * src/Makefile.am, c_ast_check.c, c_ast_util.h, c_sname.c, c_type.c,
     c_type.h, c_typedef.c, c_typedef.h, decl_flags.h, english.c, english.h,
     gibberish.c, gibberish.h, parser.y, print.c, print.h, show.c, show.h,
     const_cast_i-c++03.out, const_cast_i.out, declare_mo_arrow_i.out,
     declare_o_arrow_i.out, declare_o_minus2_rkd_rk.out,
     declare_o_plus2_rkd_rk.out, declare_puw3.out, declare_udl_pcci_i.out,
     define_c_int_least32_t.out, define_ns_c_ns_c.out, dynamic_cast_i.out,
     dynamic_cast_pi.out, explain_cmo_less_eq_greater_rck_i++default.out,
     explain_fo_less_eq_greater_2rck_i++default.out, explain_main_fiapci_i.out,
     explain_main_fic_i.out, explain_main_fipc_i.out, explain_main_fippi_i.out,
     explain_o_new_i_pv.out, explain_o_new_z_z.out, explain_operator.out,
     explain_typedef_ci32.out, explain_udl_2c_i.out, explain_udl_piul_i.out,
     explain_udl_ul_i.out, k_declare_i.out, k_explain_ai.out,
     k_explain_bl_i.out, k_explain_f_i.out, k_explain_i.out, ns_c_ns_c.out,
     typedef_c_int_least32_t.out, using_c_int_least32_t.out,
     explain_operator.test: 1. Now printing typs in error messages. 2. In some
     cases, now printing types as they were originally defined (English vs.
     gibberish).
   * c_ast_check.c, c_type.c, c_type.h: s/T_ANY_CONST_CLASS/T_ANY_const_CLASS/

2023-09-16  Paul J. Lucas <paul@lucasmail.org>

   * english.c, english.h, parser.y: c_ast_english() no longer prints a newline
     itself.
   * c_typedef.c: Eliminated C_TYPEDEF_SNAME_LIT.

2023-09-15  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, debug.out: The result of a grammar rule now uses `$$` as the key
     in a JSON5 dump.
   * parser.y: cdecl now allows the word `type` to appear in a `define`
     command.
   * c_ast_check.c, const_cast_i-c++03.out, const_cast_i.out,
     dynamic_cast_i.out, dynamic_cast_pi.out, reinterpret_cast_v.out:
     Normalized cast error messages.
   * c_ast_check.c, parser.y, cast.out, cast_rgi.out, cast_type_i.out,
     cast_typedef_i.out, const_cast_i-c++03.out, const_cast_i.out, declare.out,
     declare_a_nua_f.out, declare_cf_v-c.out, declare_cnmf_v-c.out,
     declare_cnmf_v.out, declare_co_exclam_k_b.out, declare_epf.out,
     declare_etmf.out, declare_fneai.out, declare_fsti_v.out,
     declare_fvx_v.out, declare_nei.out, declare_nmo_arrow_rk_pk.out,
     declare_nmo_brackets_rcki_v.out, declare_nmo_eq_rki_rk.out,
     declare_nmo_parens_rck_v.out, declare_nri.out, declare_o_arrow_rk_pk.out,
     declare_o_brackets_2i_i-c++20.out, declare_o_colon2_rk_rk.out,
     declare_o_dot_k.out, declare_o_dot_star_rk_rk.out,
     declare_o_exclam_2i.out, declare_o_minus2_rkd_rk.out,
     declare_o_oexclam_k_b.out, declare_o_plus2_rkd_rk.out,
     declare_o_qmark_colon_k2i_i.out, declare_prgi.out,
     declare_ro_exclam_k_b.out, declare_rro_exclam_k_b.out,
     declare_rtf_v-c.out, declare_rti.out, declare_rv.out, declare_stctor.out,
     declare_v+f_v.out, declare_vo_exclam_k_b.out, declare_xvi.out,
     declare_yo_exclam_k_b.out, dynamic_cast_i.out, dynamic_cast_pi.out,
     explain.out, explain_+co_eq2_rck_b++default-cpp17.out, explain_a0i.out,
     explain_a_nd_i.out, explain_a_nua_f.out, explain_a_re_i.out,
     explain_a_us_i.out, explain_atci.out, explain_attda2i.out,
     explain_cast_aui-c17.out, explain_cast_eti.out, explain_cast_rgi.out,
     explain_cast_sti.out, explain_cast_typedef_i.out, explain_cepctor_i.out,
     explain_cf_v-c.out, explain_cftsrk_v.out, explain_co_exclam_k_b.out,
     explain_cri.out, explain_epudc_b-c++03.out, explain_fau_v-c++17.out,
     explain_fcv_v.out, explain_fo_plus_2crk_b++default.out,
     explain_fsti_v.out, explain_fuw3_v.out, explain_fvx_v.out,
     explain_main_fi_i.out, explain_main_fipc_i.out, explain_main_fippi_i.out,
     explain_main_stf_i-c.out, explain_o_brackets_2i_i-c++20.out,
     explain_o_delete__v.out, explain_o_exclam_2i.out,
     explain_o_less_2rck_b++default.out, explain_o_less_rck_b++default.out,
     explain_o_minus2_rkd_rk.out, explain_o_plus2_rkd_rk.out,
     explain_o_plus_kel.out, explain_o_qmark_colon_k2i_i.out,
     explain_ov_o_exclam_k_b.out, explain_p_cdecl_v.out, explain_rftsrk_v.out,
     explain_ro_exclam_k_b.out, explain_rro_exclam_k_b.out, explain_rtpf_v.out,
     explain_rttdi.out, explain_rv.out, explain_stcf_v.out,
     explain_stftsrk_v.out, explain_sto_eq_i_v.out,
     explain_sto_parens_2i_v-cpp20.out, explain_strf_v.out,
     explain_strrf_v.out, explain_studc_i.out, explain_v+f_v.out,
     explain_vftsrk_v.out, explain_vo_exclam_k_b.out, explain_vv_o_new_z.out,
     explain_xif_i.out, explain_xxf_v-c++11.out, explain_yo_exclam_k_b.out,
     k_declare_i.out, reinterpret_cast_v.out, typedef_cv_explain_ftd_v.out,
     typedef_iw3.out: Put types in quotes in error messages.
   * c_ast_check.c, c_ast_util.c, c_sname.h, lexer.l:
     s/SNAME_VAR_INIT/SNAME_VAR_INIT_NAME/
   * c_sname.c, parser.y, print.c, print.h, define_ns_c_ns_c.out, en_ns_c.out,
     ns_c_ns_c.out: print_type() no longer prints a newline; reworked error
     message format in c_sname_check().
   * c_ast_check.c, declare_mo_arrow_i.out, declare_o_arrow_i.out,
     explain_cmo_less_eq_greater_rck_i++default.out,
     explain_co_less_rck_i++default.out,
     explain_fo_less_eq_greater_2rck_i++default.out, explain_o_arrow_i.out,
     explain_o_delete_pv_i.out, explain_o_new_z_z.out: Put operators in error
     messages in quotes.

2023-09-14  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c: Eliminated a few error_*() macros.
   * c_ast_check.c: Eliminated error_kind_not_cast_into().
   * c_ast_check.c, c_kind.h, english.c, gibberish.c: Eliminated
     CASE_K_PLACEHOLDER.
   * gibberish.h: s/flags/gib_flags/
   * print.c: Simplified print_ast_type_aka().
   * c_ast_check.c, explain_main_fiapci_i.out, explain_main_fic_i.out:
     s/illegal/invalid/
   * c_ast_check.c, gibberish.c, gibberish.h, parser.y, print.c, print.h,
     declare_mo_arrow_i.out, declare_o_arrow_i.out,
     declare_o_minus2_rkd_rk.out, declare_o_plus2_rkd_rk.out, declare_puw3.out,
     declare_udc_a4i.out, declare_udl_pcci_i.out,
     explain_cmo_less_eq_greater_rck_i++default.out,
     explain_co_less_rck_i++default.out, explain_efd.out, explain_fdan_v.out,
     explain_fo_less_eq_greater_2rck_i++default.out, explain_main_f2c_i.out,
     explain_main_f_v.out, explain_main_fiapc_hi.out, explain_o_arrow_i.out,
     explain_o_delete_i_v.out, explain_o_delete_pv_i.out,
     explain_o_minus2_rkd_rk.out, explain_o_new_i_pv.out,
     explain_o_new_z_z.out, explain_o_plus2_rkd_rk.out, explain_operator.out,
     explain_puw3.out, explain_udc_a4i.out, explain_udl_2c_i.out,
     explain_udl_piul_i.out, explain_udl_ul_i.out: Now printing types in error
     messages. If the type is a typedef, also prints its underlying type.
   * configure.ac: Hopefully fixed weird ": command not found" error.

2023-09-13  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c: Added assert().
   * c_ast_check.c: Simplified counting of ECSU parameters.
   * c_ast_check.c, explain_operator.out, explain_operator.test: Now using
     c_ast_unreference_any().
   * c_ast_check.c, explain_operator.out, explain_operator.test: Now warn about
     `const` on `typedef` of reference.
   * c_ast_check.c: Replaced is_pointee by tdef_ast.
   * c_ast_check.c: s/qual_stids/ret_qual_stids/
   * parser.y, declare.out: Fixed: declare f as function (x as S::T)
   * c_ast_check.c, c_ast_util.c, c_ast_util.h: Replaced
     c_ast_unrvalue_reference() with c_ast_unreference_any().
   * util.c, util.h: Removed `restrict`.
   * util.h: Using UNIQUE_NAME() more.
   * util.h: Added UNIQUE_NAME.

2023-09-12  Paul J. Lucas <paul@lucasmail.org>

   * dump.c: s/d_state/dump_state/; s/j_state/json_state/
   * gibberish.c: s/g_state/gib_state/
   * english.c: s/e_init()/eng_init()/
   * english.c: s/e_state/eng_state/
   * c_ast_check.c: Added check_state_init().
   * c_ast_check.c: s/c_state/check_state/
   * parser.y, debug.out: The format of the dump output is now (really) in
     valid JSON5 format.
   * configure.ac, util.h: 1. Added IS_ARRAY(), IS_POINTER(), IS_SAME_TYPE(),
     and STATIC_ASSERT_EXPR() macros. 2. Reworked ARRAY_SIZE() so that it
     requires an array. 3. Reworked MEM_ZERO() to use _Static_assert().

2023-09-11  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, c_ast_check.c, c_kind.c, c_kind.h, dump.c, english.c,
     gibberish.c, options.c, parser.y: s/K_USER_DEF_CONVERSION/K_UDEF_CONV/;
     s/K_USER_DEF_LITERAL/K_UDEF_LIT/ to match c_udef_conv_ast and
     c_udef_lit_ast.
   * c_ast_check.c, c_ast_util.c, c_ast_util.h, c_keyword.c, c_sname.c,
     c_sname.h, c_type.c, c_type.h, c_typedef.c, dump.c, english.c,
     gibberish.c, options.c, parser.y: Renamed TB_*, TS_*, TA_* macros to use
     lower-case for the C/C++ type keyword.

2023-09-10  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_kind.h, gibberish.c: K_ANY_PARENT now correctly includes
     only K_ANY_FUNCTION_RETURN rather than K_ANY_FUNCTION_LIKE since neither
     constructors nor destructors are parent kinds.
   * c_kind.h: K_ANY_TRAILING_RETURN now includes K_LAMBDA.
   * c_kind.h: Made K_ANY_FUNCTION_RETURN use K_ANY_TRAILING_RETURN.
   * lexer.h, lexer.l: Made lexer_find be an enum.

2023-09-09  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c: Now comparins slist_len() in c_ast_list_equal().
   * cdecl.1, autocomplete.c, help.c, help.h, parser.y, types.h, util.c,
     util.h, cl.out, help.out, ac-help.exp, help.test: The `help` command now
     accepts a cdecl command name and prints help for only that command.
   * autocomplete.c: s/ac_keywords_init/ac_keywords_new/
   * autocomplete.c: Made ac_keywords_init() return the new array like similar
     functions.
   * autocomplete.c: Fixed const-ness in ac_set_options_new().
   * c_lang.h: Added LANG_USER_DEF_CONVS.

2023-09-08  Paul J. Lucas <paul@lucasmail.org>

   * cdecl_command.c: Added check for opt_explain.
   * help.c, help.out: Help for new-style casts has been folded into the same
     line for C-style casts.
   * src/Makefile.am, parser.y, show.c, show.h, types.h, show_foo.out: Moved
     show-types code into new show.c file.

2023-09-07  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Reworked show_type_visitor().
   * configure.ac, cdecl.1, c_typedef.c, cl.out, debug.out, show.out: Added
     more standard types.

2023-09-06  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c, c_ast_check.c, c_ast_util.h, c_keyword.c, c_kind.c,
     c_lang.h, c_operator.c, c_type.c, cdecl_command.c, cdecl_keyword.c,
     gibberish.c, help.c, parser.y, print.c, set_options.c: Added more LANG_*
     feature macros; normalized names.
   * c_ast_check.c, c_lang.h, help.c:
     s/LANG_KNR_FUNC_DEFINITION/LANG_KNR_FUNC_DEF/
   * c_ast_check.c, c_lang.h: Added LANG_TENTATIVE_DEF.
   * c_ast_check.c, c_lang.h, test/Makefile.am, explain_2au-c.out,
     explain_2au-c.test: `auto` with multiple declarators is now correctly
     forbidden in C.
   * c_ast_check.c, c_ast_check.h, english.c, english.h, parser.y,
     explain_2i-redef-c++.out, explain_ipi-redef.out: 1. Added
     c_ast_list_check() and c_ast_list_english(). 2. Eliminated global
     decl_ast_list. 3. Now building decl_list_c and pc99_pointer_decl_list_c
     into proper AST lists. 4. Now checks for redefinitions before printing any
     English.
   * c_sname.c, c_sname.h: Made c_sname_set() do nothing if dst_sname ==
     src_sname.
   * parser.y: Made join_type_decl() return non-const c_ast_t*.
   * parser.y: Flipped pc99_pointer_decl_list_c rule order.
   * c_ast_check.c, c_lang.h, test/Makefile.am, explain_pau-c.out,
     explain_pau-c.test: auto` with a pointer declarator is now correctly
     forbidden in C.
   * test/Makefile.am: Renamed "auto" tests.
   * gibberish.c: Switched to using g_print_space_once().

2023-09-05  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: Eliminated `if`s.
   * gibberish.c: Gibberish function renaming to parallel English function
     names.
   * c_lang.h, c_operator.c: Added LANG_N_ARY_OP_BRACKETS.
   * parser.y: Using slist_move() more.
   * c_ast.c, c_ast.h, c_ast_check.c, c_ast_util.c, c_ast_util.h, c_operator.h,
     dump.c, english.c, parser.y, types.h, debug.out:
     s/c_func_mbr_t/c_func_member_t/ s/mbr/member/

2023-09-04  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, parser.y: s/raw_ast = c_ast_untypedef( foo_ast
     )/raw_foo_ast = c_ast_untypedef( foo_ast )/
   * c_ast_check.c: Added #include.
   * c_ast_check.c: Added missing "inline".
   * c_ast_check.c, parser.y, util.h: Added IF_ELSE() macro.
   * cdecl_keyword.c: Removed autocompletion next keywords from "array" --
     forgot to do this when "non-empty" was added.

2023-09-03  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, c_operator.c, c_operator.h, c_type.h, test/Makefile.am,
     declare_cnmf_v.out, declare_etmf.out, explain_stcf_v.out,
     declare_etmf.test: Now flagging member functions with user-specified
     linkage as an error.
   * c_type.h: Now using TS_CVR more.
   * set_options.c, cl.out, debug.out, explicit-int.out, lang.out, prompt.out,
     set.out, set_options.out, trigraphs.out: Printing all `set` options now
     also prints `(Not supported ....)` next to options that are not supported
     in the current language.

2023-09-02  Paul J. Lucas <paul@lucasmail.org>

   * options.c, options.h, set_options.c: Added print_option() function.

2023-09-01  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Now using c_ast_pair_t compound literals more.
   * cdecl.1: s/JSON5-like/JSON5/
   * dump.c, dump.h, debug.out: Now printing "null" for empty snames.
   * dump.c, debug.out: Now dumping unique_id first.
   * dump.c: Added 'u'.

2023-08-31  Paul J. Lucas <paul@lucasmail.org>

   * dump.c, dump.h, parser.y: Eliminated "indent" parameter.
   * dump.c, dump.h, parser.y: Eliminated "key" parameter from c_ast_dump().
   * dump.c, dump.h, parser.y, debug.out: Added DUMP_AST_PAIR().
   * parser.y, debug.out: Replaced invalid '.' in JSON5 key names with "__";
     now also being explicit for "_astp" rule names in DUMPs.
   * lexer.l: Added "Priot to C23, "; added asserts.

2023-08-28  Paul J. Lucas <paul@lucasmail.org>

   * red_black.h: Removed unnecessary #include.
   * c_ast.c, c_ast_check.c, dump.c, english.c, gibberish.c, parser.y, types.h,
     debug.out: s/c_alignas::expr/c_alignas::bytes/
   * cdecl.c: Added (unlikely) check for yyparse() being out of memory.
   * parser.y: Now using Bison named references.

2023-08-26  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added mention of name and '*' support for array sizes.
   * parser.y: Now using Bison "%destructor {...} <T>" syntax since we're now
     requiring Bison 3.4.* or later.

2023-08-25  Paul J. Lucas <paul@lucasmail.org>

   * dump.c, debug.out: Made dump of _BitInt more compact.
   * c_ast_check.c, declare_af.out, explain_af-c++11.out, explain_af-c.out:
     Made error messages consistent.
   * c_ast_check.c, test/Makefile.am, explain.out, explain.test: cdecl now
     correctly allows references to function and references.
   * c_ast_check.c: Eliminated separate obj/lref/rref counts.
   * c_ast_check.c: Moved C_OVERLOAD_NONE check first.
   * print.c: Removed redundant assert()s.

2023-08-24  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.h, c_operator.c, c_type.c: Added LANG_co_await,
     LANG_constexpr_virtual, and LANG_LESS_EQUAL_GREATER.
   * c_operator.h: s/c_oper_over/c_oper_overload/g
   * c_ast_check.c: Added c_ast_oper_mbr_matches().
   * c_ast_check.c: Now using opt_lang_is_any().
   * c_ast.c, c_ast.h, c_ast_check.c, c_ast_util.c, c_ast_util.h, c_operator.c,
     c_operator.h, dump.c, english.c, parser.y, types.h, debug.out: Changed
     c_function_ast::flags, c_operator_ast::flags, and c_operator::flags to
     enums.

2023-08-23  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c: Replaced c_state::flags with is_pointee.
   * c_ast_check.c, test/Makefile.am, declare_fneai.out, declare_fneai.test:
     Now checking for non-empty arrays with no size.
   * c_ast_check.c, c_kind.h, gibberish.c, parser.y:
     s/K_ENUM_CLASS_STRUCT_UNION/K_ANY_ESCU/ so K_ENUM_CLASS_STRUCT_UNION isn't
     confused with a distinct AST kind.
   * parser.y: `_Alignas` is now correctly forbidden on forward declarations.
   * src/Makefile.am: Get rid of annoying POSIX yacc warnings.
   * configure.ac: Finally worked around AC_PROG_LEX warnings (#9).
   * parser.y: Put %define api.header.include back now that we're requiring
     bison 3.4.* or later.
   * configure.ac, ax_compare_version.m4, ax_prog_bison_version.m4,
     ax_prog_flex_version.m4: Now requiring flex 2.5.30 or later and bison
     3.4.2 or later.

2023-08-22  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, debug.out: s/enum_btid/enum_btids/
   * c_ast_check.c, c_lang.h: Added LANG_ALIGNED_CSU.
   * dump.c: Simplified.
   * dump.c: Now returning "XTID" from c_tpid_name() for an unknown TPID.
   * c_ast.h, c_ast_check.c, dump.c, parser.y, debug.out: s/conv_ast/to_ast/ --
     simplifies dumping of c_udef_conf_ast.
   * dump.c: Moved NODISCARD to declaration where it belongs.
   * parser.y: Removed %define api.header.include -- older Bison versions don't
     support it and it really isn't necessary.

2023-08-21  Stefan <stefan.haubenthal@gmail.com>

   * cdecl.1, c_keyword.c, c_lang.h, c_type.c, cdecl_keyword.c, lexer.l,
     parser.y, red_black.c: Fixed typos (#29)

2023-08-20  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c, cdecl_keyword.c, set_options.c: Replaced `/*xxx=*/` with `.xxx
     =` when possible.

2023-08-19  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, c_ast_util.c, c_ast_util.h, test/Makefile.am,
     explain_tdenw4.out, explain_tdenw4.test: A bit-field of a `typedef` for an
     `enum` is now correctly forbidden in C.
   * declare.test: Turned off execute bit.

2023-08-18  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, c_ast_util.c, c_ast_util.h, parser.y, explain_enw3-c.out:
     Moved enum bit-field checking from the parser to c_ast_check() since the
     error message can include "... not supported in C."
   * c_ast_util.c: Simplified.
   * c_ast.h, dump.c, debug.out: Eliminated c_ast_sid_t.

2023-08-17  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, test/Makefile.am, declare_nei.out, declare_nei.test: Now
     check that only arrays can be `non-empty`.
   * configure.ac, cdecl.1, c_ast.c, c_ast.h, c_ast_check.c, c_type.c,
     c_type.h, cdecl_keyword.c, dump.c, english.c, gibberish.c, help.c,
     literals.c, literals.h, parser.y, debug.out, declare.out, explain.out,
     help.out, ac-declare.exp, declare.test: Eliminated c_array_ast::stids;
     better syntax for qualified array parameters.

2023-08-16  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: Eliminated g_init() printed_typedef argument.
   * gibberish.c: Eliminated c_ast_gibberish_impl().

2023-08-15  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: s/argument/parameter/ (where appropriate).
   * cdecl.1: Added mention of C23 and C++11 specifically for "auto".
   * cdecl.1: Added mention that abbreviated function template declarations are
     not supported.
   * cdecl.1: Added mention that `auto` as a storage-class specified is no
     longer supported in C23 and later.
   * cdecl.1: s/C/C23/

2023-08-14  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Now using STATIC_CAST( size_t, (N) ) in MALLOC().
   * declare.out, declare.test: Fixed C auto test.
   * parser.y: Now using Bison api.header.include.
   * c_keyword.h, cdecl_keyword.h, cdecl_parser.h: Removed `typedef enum
     yytokentype yytokentype`; now using yytoken_kind_t.
   * dump.c: Eliminated DUMP_TYPE().
   * configure.ac, c_ast_check.c, explain.out, explain.test: Functions
     returning a `typedef` of `volatile` are now correctly warned about in
     C++20 and later.

2023-08-13  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c: Made some kinds in switches unexpected.
   * c_kind.h, options.c: s/K_NON_PTR_REF_OBJECT/K_ANY_NON_PTR_REF_OBJECT/
   * c_kind.h: Move K_USER_DEF_CONVERSION from K_ANY_FUNCTION_LIKE to
     K_ANY_FUNCTION_RETURN.
   * dump.c, debug.out: Made union JSON object names match C union declaration
     names.
   * dump.c: Added assert.
   * dump.c: Made j_state an enum.

2023-08-12  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c: Added `const`.
   * dump.c, debug.out: Now nesting c_ast union data in dumps.

2023-08-10  Paul J. Lucas <paul@lucasmail.org>

   * dump.c, debug.out: Changed type to stid for dumping array's stids; now
     printing 'none' for no type in c_tid_dump().
   * c_ast.h, util.h: Added DECL_UNUSED().

2023-08-07  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, c_ast_check.c, c_ast_util.c, c_ast_util.h, dump.c,
     english.c, gibberish.c, parser.y, test/Makefile.am, declare.out,
     explain.out, explain_fdan_v.out, declare.test, explain.test,
     explain_fdan_v.test: Added support for arrays with named sizes.

2023-08-06  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, c_ast_check.c, dump.c, english.c, gibberish.c, parser.y:
     s/C_ARRAY_SIZE_VARIABLE/C_ARRAY_SIZE_VLA_STAR/
   * parser.y: Eliminated array_size_c_int.
   * cdecl.1: Added missing C78 aliases.

2023-08-04  Paul J. Lucas <paul@lucasmail.org>

   * util.c: Using is_ident_first().
   * parser.y: Moved print_is_a_keyword() inside `if`.

2023-08-03  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, print.c, print.h, explain_ai-c++11.out: Added
     print_is_a_keyword().
   * lexer.h, lexer.l, parser.y: s/printable_token/lexer_printable_token/

2023-07-28  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.h: s/LANG_MIN(CPP/LANG_CPP_MIN(/

2023-07-25  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, explain_udl_2c_i.out, explain_udl_piul_i.out: Put "wchar_t"
     last in list in error message.
   * c_ast_check.c: Made "char8_t" conditionally in error message.

2023-07-23  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.c, c_sname.h: Moved c_sname_local_name() out of line.

2023-07-22  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h: Added c_ast_list_equal().
   * c_ast.c: Eliminated #ifndef NDEBUG.
   * c_ast.c, c_ast.h, typedef_fi_v_show.out, typedef_fi_v_show.test: Added
     c_ast_list_dup().

2023-07-21  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: When no command is matched at all for autocompletion, we
     now ring the bell.
   * util.c: check_strdup_suffix() now copies only suffix_len characters.
   * autocomplete.c, did_you_mean.c, util.c, util.h: Moved
     check_prefix_strdup() and check_strdup_suffix() to util.c.

2023-06-27  Paul J. Lucas <paul@lucasmail.org>

   * did_you_mean.c: Now counting did-you-mean words only when pdym == NULL.

2023-06-23  Paul J. Lucas <paul@lucasmail.org>

   * cdecl_keyword.c: `precision` is now autocompleted following `double` in
     pseudo-English.

2023-06-22  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Now returning ac_next_keywords directly.

2023-06-21  Paul J. Lucas <paul@lucasmail.org>

   * cdecl_keyword.c: `returning` was added to the set of next autocompletable
     keywords for `lambda`.
   * c_ast_util.c: Now using c_sname_move().
   * c_ast_util.c, c_ast_util.h, parser.y: s/c_ast_take_name/c_ast_move_sname/

2023-06-20  Paul J. Lucas <paul@lucasmail.org>

   * color.c: s/color_cap_find/sgr_var_find/
   * color.c: Moved COLORS_DEFAULT.
   * color.h, options.c: Removed COLOR_WHEN_DEFAULT.

2023-06-19  Paul J. Lucas <paul@lucasmail.org>

   * not_in_Makefile.sh: Now checking for unused *.out files.
   * dam_lev.c, dam_lev.h: Undid assert()s.

2023-06-18  Paul J. Lucas <paul@lucasmail.org>

   * dam_lev.c: s/matrix2_new/matrix2d_new/

2023-06-17  Paul J. Lucas <paul@lucasmail.org>

   * dam_lev.c: Now ensuring 2D matrix elements are suitably aligned.

2023-06-16  Paul J. Lucas <paul@lucasmail.org>

   * dam_lev.c, dam_lev.h: Added assert()s.
   * dam_lev.c: s/check_realloc/MALLOC/

2023-06-13  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c: Now calling cli_option_init() first.

2023-06-12  Paul J. Lucas <paul@lucasmail.org>

   * english.c: Changed c_ast_name_english() so it never prints a trailing
     space.

2023-06-11  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c: For K&R C, the error message for main() not having the
     right number of parameters has been changed to "0, 2, or 3".

2023-06-10  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c: Added PUT_CONFIG_OPT(); fixed option newline.
   * color.c, color.h: Moved stdbool.h.
   * cdecl.c, color.c, color.h: Moved color_init().
   * cdecl.c, color.c, color.h, prompt.c: Don't need cdecl_colorize any more.
   * color.c: Now using STDOUT_FILENO.

2023-06-09  Paul J. Lucas <paul@lucasmail.org>

   * color.c: Removed unnecessary forward declaration.
   * color.c: s/color_cap/color_cap_map/
   * color.c: s/CAP_/COLOR_CAP_/
   * color.c: Color clean-up.
   * cdecl.c, cli_options.c, options.c, options.h: Moved color initialization
     out of parse_options().
   * cli_options.c: s/color_when/opt_color_when/

2023-06-08  Paul J. Lucas <paul@lucasmail.org>

   * color.c: Factored out color_cap_find().
   * color.c: Using SGR_CAP_SEP more.
   * color.c, color.h: Revert "Moved most SGR_ macros to color.c file."
   * cli_options.c, color.c, color.h, prompt.c: s/colorize/cdecl_colorize/
   * color.c, color.h: Moved most SGR_ macros to color.c file.

2023-05-21  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c: Now fclose'ing fin/fout after dup2().
   * cli_options.c: Moved UOPT().

2023-05-19  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c, lexer.l, red_black_test.c, slist_test.c, util.c, util.h: No
     longer using deprecated stdnoreturn.h.

2023-05-17  Paul J. Lucas <paul@lucasmail.org>

   * did_you_mean.c: s/strcpy/strncpy/

2023-05-16  Paul J. Lucas <paul@lucasmail.org>

   * dam_lev.c, dam_lev.h, did_you_mean.c: Now returning void* for simplicity.
   * dam_lev.c, dam_lev.h, did_you_mean.c: Added target_len parameter for
     consistency.

2023-05-13  Paul J. Lucas <paul@lucasmail.org>

   * dam_lev.c, dam_lev.h, did_you_mean.c: Now allocating dam_lev matrix only
     once per loop.
   * did_you_mean.c: Now using ssize_t.
   * did_you_mean.c: Added prefix_len to check_prefix_strdup().
   * did_you_mean.h: Converted dym_kind to an enum.

2023-05-12  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Made libedit wording more consistent.
   * cdecl.1: Split out "enum" into its own section to add both "class" and
     fixed types.
   * cdecl.1: s/a/the/

2023-05-10  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c: Simplified opt_check_mutually_exclusive().

2023-05-09  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c: s/USOPT/UOPT/
   * cli_options.c: Start option iteration at '0'.

2023-05-08  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c: s/!=/==/

2023-05-07  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c: Now using PACKAGE_STRING.
   * c_type.c: Added left-most array dimension.
   * cli_options.c: s/unsigned char/unsigned/

2023-05-06  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c: Remover " version:" from --version output.
   * cli_options.c: Now calling SKIP_WS( optarg ) for -o/--output.
   * cli_options.c: Simplified invalid_opt code.

2023-05-05  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c: "Inlined" short options in usage().
   * pjl_config.h: Added #undef VERSION.

2023-05-04  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c: s/opt_usage/opt_help/
   * c_lang.h, c_type.c, cli_options.c: Removed trailing whitespace.
   * cli_options.c: Simplified make_short_opts(); no longer using strbuf.
   * cli_options.c: Made make_short_opts() return char const*.
   * cli_options.c: Moved code.

2023-05-03  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c: Now using STATIC_CAST().
   * cli_options.c: s/check_mutually_exclusive/opt_check_mutually_exclusive/
   * cli_options.c, bad_cli_options.out: Added opt_check_exclusive().
   * cli_options.c: s/invalid_opt_value/opt_invalid_value/
   * cli_options.c: Eliminated CLI_OPTIONS_SHORT; added make_short_opts() to
     make it.

2023-05-02  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c, util.c, util.h: Added check_dup2().
   * cli_options.c: For --config and --output, now skipping over any leading
     whitespace in argument.
   * util.h: null_if_empty() now returns non-null, non-empty strings skipping
     past whitespace.

2023-05-01  Paul J. Lucas <paul@lucasmail.org>

   * options.c: Now expanding ecsu_format and wp_format rather than early
     return.
   * options.c: Now setting opt_explicit_int_btids[*] only after a successful
     parse.
   * options.c: s/tid/btids/

2023-04-29  Paul J. Lucas <paul@lucasmail.org>

   * Doxyfile: Enabled YYDEBUG.
   * c_type.c, gibberish.c, options.c, options.h, set_options.c:
     s/opt_explicit_ecsu/opt_explicit_ecsu_btids/
   * gibberish.c, options.c, options.h, set_options.c:
     s/opt_west_kinds/opt_west_pointer_kinds/

2023-04-28  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, cdecl.1, cli_options.c, options.c, options.h, set_options.c,
     bad_cli_options.out, set_explicit-ecsu_x.out, set_explicit-int_x.out: For
     the `explicit-ecsu`, `explicit-int`, and `west-pointer` options, `*` is a
     synonym for "all" and `-` is a synonym for "none" but only when they're by
     themselves.
   * options.c, options.h: s/wd_format/wp_format/

2023-04-25  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Split && expression in PARSE_ASSERT().

2023-04-24  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, cli_options.c, bad_cli_options.out, cdecl--help.out,
     bad_cli_options.test: The `-I` option (`--explicit-int`) has been changed
     to `-i`.
   * cdecl.1, cli_options.c, cdecl--help.out: The `-R` option
     (`--trailing-return`) has been changed to `-r`.
   * help.c, help.out: Added missing west-pointer to options help.
   * cdecl.1: Changed west-pointer example.
   * cdecl.1: Made west-pointer option value table single-spaced.
   * cdecl.1, options.c: Made value for --west-pointer to be case-insensitive.
   * options.c: Now using tolower().
   * cli_options.c: opt_format() now uses internal buffers.
   * AUTHORS, cdecl.1, c_kind.h, cli_options.c, gibberish.c, options.c,
     options.h, set_options.c, test/Makefile.am, alt-tokens.out,
     cdecl--help.out, cl.out, debug.out, explain-by-default.out,
     explicit-ecsu.out, explicit-int.out, lang.out, prompt.out, semicolon.out,
     set.out, set_options.out, trigraphs.out, using.out, west-pointer.out,
     west-pointer.test: Added west-pointer option.

2023-04-21  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, autocomplete.c: Autocompleting `set` options that take a
     value now includes `=`.
   * gibberish.c: Added asserts.

2023-04-20  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, c_kind.h, gibberish.c, parser.y:
     s/K_ANY_ENUM_CLASS_STRUCT_UNION/K_ENUM_CLASS_STRUCT_UNION/
   * gibberish.c: Simplification.

2023-04-19  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c: s/LANG_CPP_MIN(11)/LANG_REF_QUALIFIED_FUNC/
   * c_lang.h: Moved macro definition.

2023-04-16  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, debug.out: Now naming top-level C declarations more
     consistently.
   * parser.y: Additional use of PARSE_ASSERT().
   * parser.y: Added local variable.
   * parser.y: Changed CHECK_NESTED_TYPE_OK() to use PARSE_ASSERT() instead.

2023-04-15  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Got rid of C_AST_CHECK, C_TYPE_ADD, C_TYPE_ADD_TID, and
     C_TID_ADD; now using PARSE_ASSERT.
   * parser.y: Removed unecessary assignment.

2023-04-14  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c: Removed unnecessary forward declaration.
   * c_type.c: Eliminated AUT.
   * cdecl.1: Fixed explanation of english-types set option.

2023-04-13  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am, lexer.l: Better work-around for
     https://github.com/westes/flex/issues/564.
   * src/Makefile.am: Work-around for
     https://github.com/westes/flex/issues/564.

2023-04-12  Paul J. Lucas <paul@lucasmail.org>

   * util.c: Added missing #include <stdarg.h>.

2023-04-10  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Added PJL_PRINTF_LIKE_FUNC(2).
   * c_typedef.c, cli_options.c, lexer.l, util.h:
     s/INTERNAL_ERR()/INTERNAL_ERROR()/
   * cdecl.c, cli_options.c, lexer.l, print.c, util.c, util.h:
     s/FATAL_ERR()/fatal_error()/
   * dump.c: Eliminated temporary variable.

2023-04-09  Paul J. Lucas <paul@lucasmail.org>

   * dump.c, debug.out, debug.test: When dumping, `variable` is no properly
     quoted; more tests.
   * dump.c: Better `,` printing in debug output.
   * dump.c: Simplified printing of `,` in debug output.
   * debug.out, debug.test: Added lambda captures to debug test.
   * c_ast_check.c, c_type.c: Now using unreachable() more.
   * dump.c: s/break/return "none"/
   * dump.c: When dumping, `this` and `*this` are now properly quoted.
   * lcovrc: Added unreachable() to lcov exclusion pattern.

2023-04-08  Paul J. Lucas <paul@lucasmail.org>

   * c_sglob.c: Reworked c_sglob_parse().
   * cdecl.c, cli_options.c, cli_options.h:
     s/cli_options_init()/cli_option_init()/ for consistency.

2023-04-06  Paul J. Lucas <paul@lucasmail.org>

   * dump.c, parser.y, debug.out: When dumping, quotes in strings are now
     properly escaped.
   * debug.out, debug.test: More debug tests.

2023-04-05  Paul J. Lucas <paul@lucasmail.org>

   * c_keyword.c, c_keyword.h, cdecl.c, cdecl_keyword.c, cdecl_keyword.h: Added
     c_keyword_init() and cdecl_keyword_init().
   * configure.ac, parser.y: Fixed a crash while dumping an operator.
   * c_ast.h, c_ast_check.c, c_ast_util.c, c_ast_util.h, c_operator.c,
     c_operator.h, dump.c, english.c: Renamed C_OP_* (for overloadability) to
     C_OPER_* for consistentcy with C_FUNC_*.
   * c_operator.c: Changed loop so as never to go beyond the end of the array.

2023-04-04  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.h: Switched #include order.

2023-04-03  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.c, c_type.c, util.h: Added empty_if_null().
   * parser.y: Capitalized constant arrays.
   * c_ast_check.c, c_sname.c, c_typedef.c, strbuf.c: Variable renaming.
   * print.c: Sorted functions.

2023-04-02  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, c_keyword.c, c_operator.c, lexer.l, parser.y, types.h:
     s/_EQ/_EQUAL/
   * c_ast.h, c_ast_check.c, c_ast_util.c, c_operator.h, dump.c, gibberish.c,
     types.h: #include clean-up.
   * parser.y: Sorted macros.
   * util.h: Arranged WS by likelihood of encounter.

2023-04-01  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h: Whitespace.
   * c_ast.c, c_ast.h, c_ast_check.c, c_ast_util.c, dump.c, english.c,
     gibberish.c, parser.y: c_operator_ast now contains c_operator_t* directly
     rather than just oper_id.
   * cdecl.1: Now correctly list `long long` as a new type in C99, not C89.
   * cdecl.1, c_lang.h, c_type.c: Now correctly restrict `unsigned` to `int`
     only in K&R C.

2023-03-31  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: Removed assert().
   * gibberish.c: Reworked gibberish of lambda captures to print the capture's
     name only when necessary.
   * english.c: Removed unnecessary assert().
   * english.c: Reworked c_ast_lambda_captures_english() to call
     c_sname_english() only when necessary.
   * c_ast_check.c: Added assert()s.

2023-03-30  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Collapsed two C-style cast rules.
   * cdecl.1, help.c, parser.y, cast.out, cl.out, help.out, cast.test: Now
     allowing C-style casting without a name.
   * parser.y, print.c, set_options.c, util.c, util.h: s/fprint_list/fput_list/
   * cli_options.c: Now checking -c/--config and -f/--file arguments for empty
     strings and complaining.

2023-03-29  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c: s/predefined_lang_ids/predef_lang_ids/
   * c_typedef.c: Added predef_type.
   * dump.c, english.c, gibberish.c, parser.y, util.h: s/fprint_sep/fput_sep/

2023-03-28  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_ast_util.h, c_sglob.c, c_sglob.h, c_sname.c, c_sname.h,
     lexer.h, lexer.l, print.c: Renamed pointer parameters that receive return
     values to be prefixed with `rv_`.
   * c_sname.c, c_sname.h: Added missing `const`s.
   * slist.h: s/MEM_ZERO( list )/slist_init( list )/
   * parser.y, debug.out: Added debug "rule" key/value.
   * parser.y, debug.out: Now printing trailing blank line instead of leading
     blank line when dumping.
   * dump.c, dump.h, parser.y: Elimiated c_ast_dump_impl() and
     c_ast_list_dump_impl() -- always passing indent.

2023-03-27  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, dump.c, parser.y, debug.out: Made debug output more JSON5-like.

2023-03-25  Paul J. Lucas <paul@lucasmail.org>

   * util.h: s/_IMPL/_HELPER/

2023-03-24  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Fixed definition of BITS_GT().
   * util.h: No longer need CHARIFY_IMPL().
   * c_keyword.c, cdecl_keyword.c, prompt.c, util.c, util.h: Added NAME2() and
     RUN_ONCE.

2023-03-23  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, c_type.h, test/Makefile.am, declare_bi129.out,
     declare_bi129.test: Added C_BITINT_MAXWIDTH with value 128.
   * dump.c, english.c, gibberish.c: Now checking for TB_BITINT before
     accessing .BitInt.width.

2023-03-22  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Now using CONST_CAST.
   * lexer.l: s/capacity/cap/
   * lexer.l: `if` simplification.

2023-03-21  Paul J. Lucas <paul@lucasmail.org>

   * prompt.c: Added prompt_cleanup().
   * util.c: Now using false_set().
   * english.c: Initializing local_name.
   * c_ast_check.c, dump.c, english.c, gibberish.c: Reworked lambda capture
     asserts.
   * english.c: Added assert().
   * english.c: s/c_type_print_not_base/c_type_name_nobase_english/

2023-03-20  Paul J. Lucas <paul@lucasmail.org>

   * c_operator.h: s/~0u/UINT_MAX/
   * c_operator.c: s/LANG_ANY/LANG_NONE/
   * c_ast_check.c, c_operator.c, c_operator.h, dump.c, parser.y:
     s/name/literal/ for c_operator.

2023-03-19  Paul J. Lucas <paul@lucasmail.org>

   * c_operator.c: Removed unnecessary #include.
   * c_operator.c: Got rid of empty operator array entry.
   * gibberish.c: Moved "return".

2023-03-18  Paul J. Lucas <paul@lucasmail.org>

   * c_kind.h: Now using unreachable() for K_PLACEHOLDER.
   * gibberish.c, alt-tokens.out, alt-tokens.test: Blocks now correctly print
     alternative tokens when the option is enabled.
   * gibberish.c, alt-tokens.out, alt-tokens.test: Lambda captures now
     correctly print alternative tokens when the option is enabled.
   * c_operator.c, gibberish.c, gibberish.h, alt-tokens.out, alt-tokens.test:
     Reference and rvalue reference functions now correctly print alternative
     tokens.

2023-03-17  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c, digraphs.out, trigraphs.out, digraphs.test, trigraphs.test:
     Now correctly emitting di/trigraphs for `operator[]`.
   * c_operator.c: Alternative tokens now have priority over di/trigraphs.
   * gibberish.c: Now emitting di/trigraphs for [] lambda captures.

2023-03-16  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.h: Simplified LANG_RANGE().
   * c_ast.h: Added asserts.

2023-03-15  Paul J. Lucas <paul@lucasmail.org>

   * help.c, help.out: Put {di|tri|no}graphs in same place as show via `set`.
   * c_ast.c, c_ast.h, c_ast_util.c, c_ast_util.h, parser.y, explain.out,
     explain.test: Fixed explicit constructor with unecessary `()`.
   * cdecl.1: Added mention that the C++20 explicit(expr) specifier is not
     supported.
   * set_options.c: Now using L_options.
   * cdecl.1, c_kind.h, cli_options.c, gibberish.c, help.c, options.c,
     options.h, set_options.c, alt-tokens.out, cdecl--help.out, cl.out,
     debug.out, declare.out, explain-by-default.out, explicit-ecsu.out,
     explicit-int.out, help.out, lang.out, prompt.out, semicolon.out, set.out,
     set_options.out, trigraphs.out, using.out, declare.test: Added
     trailing-return option.

2023-03-14  Paul J. Lucas <paul@lucasmail.org>

   * dump.c, english.c, gibberish.c: Using L_xxx in easy cases.
   * gibberish.c: Now using c_ast_gibberish_impl() in g_print_ast_list().
   * cdecl.1: Added note that `q` must be the only thing on a line.
   * cdecl.1: s/When/If/
   * cdecl.1: Added "or C++" when omitting "return".

2023-03-13  Paul J. Lucas <paul@lucasmail.org>

   * print.h: Added missing #.
   * help.h, types.h: Added printing-help-group.
   * lexer.l: Added missing {NI} for `declare` special-case.

2023-03-12  Paul J. Lucas <paul@lucasmail.org>

   * print.c: s/isalnum/is_ident/
   * dump.c, print.c, util.h: Added FPUTNSP().
   * dump.c: Removed unnecessary #ifdef.

2023-03-10  Paul J. Lucas <paul@lucasmail.org>

   * dump.c: Added c_capture_kind_dump().
   * dump.c: Added c_alignas_dump().
   * parser.y: Now special-casing YYEMPYY and YYEOF when printing yychar.
   * lexer.h, parser.y: Moved fl_elaborate_error() to eliminate declaration of
     yychar.
   * lexer.l: Added #pragma <compiler> diagnostic push/pop.
   * lexer.l: Disabled -Wsign-compare for flex code.

2023-03-09  Paul J. Lucas <paul@lucasmail.org>

   * declare.out, declare.test: Eliminated redundant test.
   * cdecl_keyword.c, lexer.l, literals.c, literals.h, declare.out,
     declare.test: `q` is now a synonym for `quit` only when it's the only
     thing on a line other than whitespace.
   * autocomplete.c, util.c, util.h: Replaced is_command() with
     is_ident_prefix().

2023-03-08  Paul J. Lucas <paul@lucasmail.org>

   * print.c: Removed "or lines".

2023-03-07  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.h, read_line.c: Made prog_name optional.
   * read_line.c: Removed unnecessary #include.
   * read_line.c: Made assert(prog_name != NULL) check only when interactive.
   * read_line.c, read_line.h: Removed `static` and `2` from `prompts`.
   * read_line.c: Moved `if ( interactive )` outside of #ifdef.
   * cdecl.1: Added missing mention of support for zero or more parameters for
     operator[] in C++23.

2023-03-05  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, cdecl.h, cli_options.c, color.c, help.c, parser.y, set_options.c,
     util.h: Eliminated cdecl_fout.
   * cli_options.c: Changed `verbose` to bool.
   * cli_options.c: Fixed checking of extra command-line arguments for --usage
     and --version.
   * cli_options.c: Added --enable-coverage to -vv.

2023-03-04  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, autocomplete.h, cli_options.c, prompt.c: Now printing configure
     feature & package options and whether GNU readline is genuine when -v is
     given twice.
   * cli_options.c: Now updating argc/argv immediately after processing
     options.

2023-03-03  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, cli_options.c: Now printing configure feature & package options
     as part of --version output.
   * configure.ac: Upped version to 14.1.
   * cli_options.c, cdecl--help.out: Put home page URL first in help output.

2023-03-02  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added missing " for formatting commands.

2023-03-01  Paul J. Lucas <paul@lucasmail.org>

   * literals.h: Added missing _GL_INLINE_HEADER_END.

2023-02-22  Paul J. Lucas <paul@lucasmail.org>

   * dump.c, dump.h: Added #ifndef/#ifdef ENABLE_CDECL_DEBUG.

2023-02-20  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: Eliminated temp variable.
   * gibberish.c: s/flags/gib_flags/
   * cdecl.c, cdecl_keyword.c, help.c: #include clean-up.
   * autocomplete.h, read_line.c: #include clean-up; comment.

2023-02-19  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, cast_a3i.out, explain_cast.out, explain_cast_a3a5a7i.out,
     explain_cast_a3a5i.out, explain_cast_a3i.out, explain_cast.test: Now
     correctly allowing casting into an array when there is no name.
   * cdecl_keyword.c: s/AC_POLICY_IN_NEXT_ONLY/

2023-02-18  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_keyword.c, c_lang.c, c_operator.c, c_sname.c, c_type.c,
     c_typedef.c, cdecl_keyword.c, cli_options.c, color.c, did_you_mean.c,
     dump.c, english.c, gibberish.c, lexer.l, options.c, print.c, prompt.c,
     red_black.c, set_options.c, util.c: Added @addtogroup in .c files.
   * src/Makefile.am, autocomplete.c, autocomplete.h, cdecl_keyword.h,
     read_line.c: Added autocomplete.h.
   * autocomplete.c, cdecl_keyword.c, cdecl_keyword.h: Eliminated
     cdecl_keyword::ac_lang_ids in favor of more autocompletion policies.
   * autocomplete.c, c_ast_check.c, c_keyword.c, c_sname.c, cdecl_keyword.c,
     did_you_mean.c, lexer.l, parser.y, print.c: c_keyword, cdecl_keyword,
     ac_keyword variable renaming.

2023-02-17  Paul J. Lucas <paul@lucasmail.org>

   * cdecl_keyword.c: Now AC_TOO_SHORT for L_by.
   * cdecl_keyword.c: s/L_int/L_integer/ for bit-precise autocompletion.

2023-02-17  Jan Engelhardt <jengelh@inai.de>

   * cdecl_keyword.c: autocomplete: add L_by to L_reference next-keyword list
     (#26)

2023-02-17  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added mention of another editline bug.

2023-02-16  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Now using STATIC_CAST().
   * autocomplete.c: Now using is_token_char() in str_prev_token().

2023-02-15  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, c_keyword.h, c_lang.h, c_operator.h, c_sname.h, cdecl_command.h,
     cdecl_keyword.h, print.h, types.h: Moved types, part 5.
   * c_ast.c, c_ast.h, c_ast_util.c, c_ast_util.h:
     s/c_visit_dir_t/c_ast_visit_dir_t/
   * c_ast.h, types.h: Moved types, part 4.
   * cdecl_command.h, types.h: Moved types, part 3.
   * c_type.h, types.h: Moved types, part 2.
   * c_keyword.h, c_kind.h, lexer.h, set_options.h, types.h: Moved types
     around.
   * c_ast.c: Added static_assert() for c_ast_lambda::param_ast_list.
   * AUTHORS: Added mention of lambdas.
   * configure.ac: Updated to 14.0.
   * cdecl.1, c_ast.c, c_ast.h, c_ast_check.c, c_kind.c, c_kind.h, c_lang.h,
     c_type.c, c_type.h, cdecl_keyword.c, dump.c, english.c, gibberish.c,
     help.c, literals.c, literals.h, parser.y, types.h, test/Makefile.am,
     declare.out, explain.out, explain_la_coco.out, explain_la_cor.out,
     explain_la_nco.out, explain_la_nn-error.out, explain_la_nr.out,
     explain_la_rco.out, explain_la_rr.out, explain_la_rrn.out,
     explain_la_star_ts_star_ts.out, explain_la_star_tsts.out,
     explain_la_ts_star_ts.out, explain_la_tsts.out, help.out, declare.test,
     explain.test, explain_la_coco.test, explain_la_cor.test,
     explain_la_nco.test, explain_la_nn-error.test, explain_la_nr.test,
     explain_la_rco.test, explain_la_rr.test, explain_la_rrn.test,
     explain_la_star_ts_star_ts.test, explain_la_star_tsts.test,
     explain_la_ts_star_ts.test, explain_la_tsts.test: Added lambda support.

2023-02-14  Paul J. Lucas <paul@lucasmail.org>

   * c_keyword.c, c_operator.c, lexer.l, parser.y, types.h: s/CIRC/CARET/
   * c_ast.c, c_ast.h, c_ast_check.c, dump.c, english.c, gibberish.c, parser.y:
     s/cast_kind/kind/

2023-02-11  Paul J. Lucas <paul@lucasmail.org>

   * cdecl_keyword.c, cdecl_keyword.h, did_you_mean.c: Added
     cdecl_keyword::lang_ids to elide language inappropriate did-you-mean
     suggestions.

2023-02-01  Paul J. Lucas <paul@lucasmail.org>

   * explicit-int.out, explicit-int.test: More tests.
   * c_type.c: s/INF/INL/
   * c_ast_check.c: Replaced `goto only_special` with
     `UNEXPECTED_INT_VALUE(ast->kind)`.
   * c_ast_check.c, test/Makefile.am, explain_dtor.out, explain_dtor.test:
     Cdecl now correctly reports destructors in C as an error.
   * lexer.l, trigraphs.out, trigraphs.test: Trigraph fixes.
   * gibberish.c, lexer.l, digraphs.out, digraphs.test: Digraph fixes.
   * declare.out, declare.test: Added test.

2023-01-31  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: Added LCOV_EXCL_LINE.
   * debug.out, debug.test: More tests.
   * test/Makefile.am, explain.out, explain_fithrk_v.out, explain.test,
     explain_fithrk_v.test: More tests.
   * update_test.sh: Now updating only *.test tests.
   * c_ast_check.c: Array of K_NAME is impossible.
   * explain.out, explain.test: More tests.

2023-01-30  Paul J. Lucas <paul@lucasmail.org>

   * english.c, explain.out: Undid a change in **cdecl** 11.5 where K&R C
     typeless function parameters were printed as being of type `int`: they now
     again print as only their names.
   * english.c, explain.out: Fixed English "integer" name for K&R typeless
     function parameter.
   * c_ast_util.c, c_ast_util.h, parser.y:
     s/c_ast_is_bit_field/c_ast_is_bit_field_kind/
   * c_ast_util.c: Added assert()s.
   * c_ast.c: Now copying/comparing bit_width field for K_ENUM.
   * dam_lev.c: Added `const`.

2023-01-29  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Now using spelled-out English.
   * c_ast_util.c, c_ast_util.h, c_sname.h, parser.y, print.h, red_black.h,
     slist.h: Now using ``` instead of @code/@endcode.
   * color.c: Now free'ing capabilities if we didn't set any.
   * util.h: Made free_later() PJL_DISCARD.
   * color.c: Now asserting not called again after a successful parse.
   * color.c: Removed spurious SGR_CAP_SEP.

2023-01-28  Paul J. Lucas <paul@lucasmail.org>

   * c_keyword.c, cdecl_keyword.c: Using false_set() more.

2023-01-27  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, cdecl.1, autocomplete.c: Now ringing the bell when there are
     no autocompletion matches.
   * autocomplete.c: Now using false_set().

2023-01-26  Paul J. Lucas <paul@lucasmail.org>

   * read_line.c: Fixed prog_name not used warning.
   * cdecl_keyword.c: Fix PPC errors.
   * cdecl_keyword.c: Fix compile error on Linux.
   * autocomplete.c: Now taking advantage of sorted order.
   * cdecl_keyword.c: Sorted next keywords.
   * autocomplete.c: Whitespace.
   * autocomplete.c: Now using CONST_CAST.
   * c_keyword.c: Now sorting C/C++ keywords.
   * cdecl_keyword.c: Now sorting CDECL_KEYWORDS.
   * autocomplete.c: s/>/</
   * cdecl_keyword.c: Sorted.
   * autocomplete.c: breaking early.
   * strbuf.c: Using "early return" style.
   * strbuf.c: Now resetting and using buf.

2023-01-25  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c, cdecl_keyword.c: More autocompletion clean-up.
   * autocomplete.c, cdecl_keyword.c, cdecl_keyword.h:
     s/AC_POLICY_DEFAULT/AC_POLICY_NONE/
   * autocomplete.c, cdecl_keyword.c: Fix hang; clean-up.
   * autocomplete.c: Simplified.
   * autocomplete.c, cdecl.c, read_line.c, read_line.h: strbuf_read_line() now
     takes prog_name.
   * util.h: Simplified BITS_GE().

2023-01-24  Paul J. Lucas <paul@lucasmail.org>

   * did_you_mean.c, did_you_mean.h, print.c: s/token/literal/
   * c_lang.h, c_type.c: Reworked OK_*_LANGS arrays to use mnemonic element
     initializer macros.

2023-01-23  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, test/Makefile.am: No longer require certain declarations to
     be a function parameters: `const`, `volatile`, `static`, and variable
     length arrays; `[[carries_dependency]]`.
   * c_ast_check.c, test/Makefile.am, explain_aai.out, explain_aai.test: Now
     correctly reporting declarations of arrays of incomplete arrays as an
     error.
   * autocomplete.c: Made is_gibberish static.
   * autocomplete.c: Simplification.
   * autocomplete.c: s/str_prev_keyword/prev_cdecl_keyword/
   * autocomplete.c: Removed untrue comment.
   * autocomplete.c: Removed redundant space.

2023-01-22  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_ast_util.h: Now initializing qual_stids.
   * autocomplete.c, c_keyword.c, c_keyword.h, cdecl_command.c,
     cdecl_command.h, cdecl_keyword.h: s/[Aa]uto-complet/[Aa]utocomplet/g
   * cdecl_keyword.c, pjl_config.h: s/IF_AC/AC_SETTINGS/
   * cdecl_keyword.c: No longer autocompleting `scope` in C.
   * cdecl_keyword.c, parser.y: s/Y_Apple_BLOCK/Y_Apple_block/
   * cdecl_keyword.c: Removed #undef restrict -- no longer needed.
   * configure.ac: Version number and NEWS fix-up.

2023-01-21  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Removed unnecessary heuristic.
   * autocomplete.c, cdecl_keyword.c, cdecl_keyword.h, did_you_mean.c,
     pjl_config.h, types.h, util.c, util.h, ac-cast_into.exp, ac-declare.exp,
     ac-explain.exp, ac-help.exp, ac-set.exp, ac-show.exp: For some keywords,
     now autocompleting only a certain set of next keywords.

2023-01-19  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Fixed requiring parameter list for user-defined literals in
     English.
   * autocomplete.c: The set of word-break characters for autocompletion has
     been expanded to be all non-identifier characters.
   * c_ast_check.c, test/Makefile.am, explain_a_nua_iw4.out,
     explain_a_nua_iw4.test: Bit-fields having `[[no_unique_address]]` are now
     correctly reported as an error.

2023-01-17  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: s/always_autocomplete/ac_in_gibberish/

2023-01-16  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Renamed function.

2023-01-15  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Now using n+1 for MALLOC().

2023-01-14  Paul J. Lucas <paul@lucasmail.org>

   * read_line.c, read_line.h: Added static 2.
   * autocomplete.c: Added asserts.
   * cdecl.c, print.c, util.c, util.h: s/str_rtrim_len/strn_rtrim/

2023-01-13  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Now limiting autocompleting `into` only to when the text
     string typed is not empty.

2023-01-12  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: strncmp() arg reordering.
   * autocomplete.c: s/command_keywords/specific_ac_keywords/
   * configure.ac, prompt.c: Prompts were always being displayed in color even
     when --color=never.  Fixed.

2023-01-11  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Function reordering.

2023-01-10  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, c_type.c, cdecl_keyword.c, literals.c, literals.h, parser.y,
     declare.out, explain.out, declare.test: Added "bit-precise integer" as an
     English synonym for _BitInt.
   * parser.y: s/int_exp/int_lit_exp/; s/int_opt/int_lit_opt/'

2023-01-09  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c: Added `#ifndef NDEBUG` around c_ast_count.
   * red_black.c: Added designated initializers.

2023-01-08  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, c_ast_check.c, test/Makefile.am, explain.out,
     explain_etv-c++.out, explain.test, explain_etv-c++.test: Now allow `extern
     void v` in C.
   * red_black.h: Added missing #include.

2023-01-07  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, cdecl_keyword.c, literals.c, literals.h, parser.y,
     declare_udc.out, declare_udl.out, declare_udc.test, declare_udl.test:
     Added `user defined` as a synonym for `user-defined`.
   * explain_udl.test: chmod -x
   * cli_options.c, cdecl--help.out: s/Suppress prompt/Suppress printing
     prompts/

2023-01-06  Paul J. Lucas <paul@lucasmail.org>

   * help.c, help.out: `auto` is now correctly listed as a C++ type in the help
     for C++11 and later.
   * test/Makefile.am, declare_udl.out, declare_udl.test: Test consolidation.
   * test/Makefile.am, debug.out, debug.test: Test consolidation.
   * test/Makefile.am: Test renaming.
   * test/Makefile.am, semicolon.out, semicolon.test: Test consolidation.
   * test/Makefile.am: Test renaming.
   * test/Makefile.am: Test consolidation.
   * test/Makefile.am, cdecl-t.out, cdecl-t.test: Test consolidation.

2023-01-05  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am, cl.out, cl.test: Test consolidation.
   * test/Makefile.am: Removed.
   * test/Makefile.am, cdecl-debug.out: Better cdecl debug test.
   * test/Makefile.am: Test renaming.
   * test/Makefile.am, using.out, using.test: Better `using` tests.
   * test/Makefile.am: Test renaming.

2023-01-04  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c: Now setting interactive mode only when reading via stdin.
   * test/Makefile.am, bad_cli_options.out, bad_cli_options.test: Test
     consolidation.
   * test/Makefile.am, semicolon.out, semicolon.test: Test consolidation.
   * run_test.sh: Simplified.
   * Doxyfile, Makefile.am, bootstrap, cdecl.css, configure.ac, lcovrc,
     makedoc.sh, man/Makefile.am, man/man1/Makefile.am, man/man1/c++decl.1,
     cdecl.1, src/Makefile.am, autocomplete.c, c_ast.c, c_ast.h, c_ast_check.c,
     c_ast_check.h, c_ast_util.c, c_ast_util.h, c_keyword.c, c_keyword.h,
     c_kind.c, c_kind.h, c_lang.c, c_lang.h, c_operator.c, c_operator.h,
     c_sglob.c, c_sglob.h, c_sname.c, c_sname.h, c_type.c, c_type.h,
     c_typedef.c, c_typedef.h, cdecl.c, cdecl.h, cdecl_command.c,
     cdecl_command.h, cdecl_keyword.c, cdecl_keyword.h, cdecl_lldb.py,
     cdecl_parser.h, cli_options.c, cli_options.h, color.c, color.h, dam_lev.c,
     dam_lev.h, did_you_mean.c, did_you_mean.h, dump.c, dump.h, english.c,
     english.h, gibberish.c, gibberish.h, help.c, help.h, lexer.h, lexer.l,
     lines.sh, literals.c, literals.h, options.c, options.h, parser.y,
     pjl_config.h, print.c, print.h, prompt.c, prompt.h, read_line.c,
     read_line.h, red_black.c, red_black.h, red_black_test.c, set_options.c,
     set_options.h, slist.c, slist.h, slist_test.c, strbuf.c, strbuf.h,
     types.h, unit_test.h, util.c, util.h, test/Makefile.am,
     not_in_Makefile.sh, run_test.sh, update_test.sh: Updated copyright year
     range latest year to 2023.
   * test/Makefile.am: Test consolidation.

2023-01-03  Paul J. Lucas <paul@lucasmail.org>

   * options.c: Simplification.
   * test/Makefile.am, prompt.out, prompt.test: Test consolidation.
   * options.c, test/Makefile.am, explicit-int.out, explicit-int.test: Now
     resetting the current `explicit-int` option to none before parsing a new
     string.
   * test/Makefile.am: Test consolidation.
   * test/Makefile.am, explicit-ecsu.out, explicit-ecsu.test: Test
     consolidation.
   * cdecl.c, test/Makefile.am, explain-by-default.out: No longer echoing
     "explain" when explain-by-default.
   * test/Makefile.am, explain-by-default.out, explain-by-default.test: Test
     consolidation.
   * test/Makefile.am, english-types.out, english-types.test: New
     english-types.test.
   * test/Makefile.am, trigraphs.out, trigraphs.test: Test consolidation.

2023-01-02  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am, digraphs.out, digraphs.test: Test consolidation.
   * alttokens.test: Fixed mode.
   * alttokens.out, alttokens.test: Test consolidation.
   * parser.y, util.h: Replaced /* nothing */ with NO_OP in the few cases where
     it mattered.
   * util.h: Added ().
   * c_typedef.c, cdecl.c, cli_options.c, lexer.l, util.h: Added
     ASSERT_RUN_ONCE() to eliminate an unused variable warning when compiling
     with --disable-assert.

2023-01-01  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, declare.out, declare.test: Added reserved identifier tests.

2022-12-31  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Fixed newline position.
   * util.c, util.h: Added `restrict` to match real fmemopen().

2022-12-30  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Added () around BEGIN argument.
   * lexer.l: Moved BEGIN( INITIAL ).

2022-12-29  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.c, c_sname.h, lexer.l, parser.y, cdecl-d.out, explain_udc.out,
     explain_udc.test: Can now explain a `friend` scoped user-defined
     conversion operator correctly.
   * parser.y: Eliminated scope_sname_c_opt_operator.
   * parser.y: Eliminated user_defined_literal_c_ast.
   * explain_udc.out, explain_udc.test: Additional user-defined conversion
     test.

2022-12-28  Paul J. Lucas <paul@lucasmail.org>

   * lexer.h, parser.y: Added extern int yychar.
   * cdecl.1, parser.y: In debug mode, now also prints the token-id of the
     token that caused a syntax error.
   * test/Makefile.am, explain_udc.out, explain_udc.test: Test consolidation.
   * test/Makefile.am: Test reorganization.
   * test/Makefile.am, cdecl-Ii.out, cdecl-Iiu.out, cdecl-Il.out,
     cdecl-Ill.out, cdecl-Ilull.out, cdecl-Is.out, cdecl-Iu.out, cdecl-Iui.out,
     cdecl-Iul,ll.out, cdecl-Iul.out, cdecl-Iull.out, cdecl-Iulll.out,
     cdecl-Iulull.out, cdecl-Ius.out, explain.out, explain_operator.out,
     cdecl--kolor.test, cdecl-23.test, cdecl-9.test, cdecl-Ii.test,
     cdecl-Iiu.test, cdecl-Il.test, cdecl-Ill.test, cdecl-Ilull.test,
     cdecl-Is.test, cdecl-Iu.test, cdecl-Iui.test, cdecl-Iul,ll.test,
     cdecl-Iul.test, cdecl-Iull.test, cdecl-Iulll.test, cdecl-Iulull.test,
     cdecl-Ius.test, cdecl-Ix.test, cdecl-Sx.test, cdecl-h.test, cdecl-k.test,
     cdecl-knever.test, cdecl-kxxx.test, cdecl-xx.test, explain.test,
     explain_operator.test: Test clean-up.

2022-12-27  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am, explain.out, explain.test: Test consolidation.
   * test/Makefile.am, declare.out, declare.test: Test consolidation.
   * test/Makefile.am, explain_cast.out, explain_cast.test: Test consolidation.
   * test/Makefile.am, cast.out, cast.test: Test consolidation.
   * test/Makefile.am, explain_operator.out, explain_operator.test: Test
     consolidation.
   * test/Makefile.am, declare_operator.out, declare_operator.test: Test
     consolidation.
   * test/Makefile.am, declare_udc.out, declare_udc.test: Test consolidation.
   * test/Makefile.am, explain_udl.out, explain_udl.test: Test consolidation.
   * test/Makefile.am, cast.out, cast.test: cast_* test consolidation.
   * test/Makefile.am, explain_cast.out, explain_cast.test: explain_cast_* test
     consolidation.
   * test/Makefile.am: Moved tests.
   * c_ast_check.c, c_ast_util.c, c_ast_util.h, parser.y, test/Makefile.am,
     cast_a.out, cast_pa.out, typedef_a.out, typedef_pa.out, using_ai.out,
     cast_a.test, cast_pa.test, typedef_a.test, typedef_pa.test: Defining or
     casting a type containing `auto` is now correctly reported as an error.
   * prompt.c: Now printing the prompt in color even when readline is disabled.

2022-12-26  Paul J. Lucas <paul@lucasmail.org>

   * prompt.c: Added color_prompt variable.
   * prompt.c: Removed unnecessary #includes.
   * AUTHORS: s/C99/C11/
   * cdecl.1: Added "over".
   * AUTHORS: Added mention of more stuff.

2022-12-25  Paul J. Lucas <paul@lucasmail.org>

   * help.c: Added missing bison-debug & flex-debug options from set option
     help.
   * cdecl.1, c_type.c, cli_options.c, help.c, options.c, options.h,
     set_options.c, __declspec.out, cdecl-d.out, cdecl-h.out, cl-explain_i.out,
     define_k_define_k_explain_k+k.out, define_k_explain_pmki.out,
     digraphs.out, explain-by-default.out, explain_+co_eq2_rck_b++default.out,
     explain_+ctor_i.out, explain_+o_eq2_rcki_b.out, explain_+udc_i.out,
     explain_+udl_c_i.out, explain_0o_minus2_i_rk.out,
     explain_0o_plus2_i_rk.out, explain_2i-redef-c++.out, explain_2i-redef.out,
     explain_2npi.out, explain_2pii-c89.out, explain_a012i.out,
     explain_a0b10i.out, explain_a0xAi-01.out, explain_a0xai-02.out,
     explain_a3a5a7i.out, explain_a3a5i.out, explain_a3a5pfv_i.out,
     explain_a3a5pfv_pi.out, explain_a3a5pfv_ppa7a9i.out,
     explain_a3a5pfv_ppa7a9pc.out, explain_a3a5pfv_ppa7i.out,
     explain_a3a5pfv_ppa7pi.out, explain_a3a5pfv_ppi.out, explain_a3pfv_i.out,
     explain_a3ppfv_i.out, explain_a4pii-c89.out, explain_a9cpi.out,
     explain_a9i.out, explain_a9pi.out, explain_a_cd_fa_cd_i_i.out,
     explain_a_cd_fi_i.out, explain_a_dep_a_mu_i-01.out,
     explain_a_dep_a_mu_i-02.out, explain_a_dep_i.out, explain_a_mu_i.out,
     explain_a_using_a_mu_i.out, explain_ai-c17.out, explain_al0_c-c++.out,
     explain_al0_c.out, explain_al8_c-c++.out, explain_al8_c.out,
     explain_alpv_c.out, explain_ati-01.out, explain_ati-02.out,
     explain_atpi-01.out, explain_atpi-02.out, explain_b.out,
     explain_bitand_i.out, explain_blii_d.out, explain_cast_++pmi.out,
     explain_cast_ci.out, explain_cast_cpa3cpa5i.out,
     explain_cast_cpa3pa5i.out, explain_cast_cpa9ci.out,
     explain_cast_cpa9i.out, explain_cast_cpblv_pi.out, explain_cast_cpcpi.out,
     explain_cast_cpfv_pi.out, explain_cast_cpi.out, explain_cast_cppi.out,
     explain_cast_cvpi.out, explain_cast_ic.out, explain_cast_ll.out,
     explain_cast_pa3a5i.out, explain_cast_pa3cpa5i.out,
     explain_cast_pa3pa5i.out, explain_cast_pa9i.out, explain_cast_pblv_pi.out,
     explain_cast_pci.out, explain_cast_pcpi.out, explain_cast_pf_i.out,
     explain_cast_pfpci_i.out, explain_cast_pfpi_i.out,
     explain_cast_pfv_pi.out, explain_cast_pi.out, explain_cast_pic.out,
     explain_cast_pmc++i.out, explain_cast_pmi.out, explain_cast_ppi.out,
     explain_cast_ri.out, explain_cast_rtpi.out, explain_cast_ull.out,
     explain_cast_vcpi.out, explain_cast_vpi.out, explain_ci-ec.out,
     explain_ci.out, explain_co_eq2_crk_b++default.out,
     explain_co_minus2_i_rk.out, explain_co_plus2_i_rk.out,
     explain_const_cast_+pi.out, explain_const_cast_pi.out,
     explain_cpa3cpa5i.out, explain_cpa3pa5i.out, explain_cpa9ci.out,
     explain_cpa9i.out, explain_cpblv_pi.out, explain_cpcpi.out,
     explain_cpfv_pi.out, explain_cpi.out, explain_cpmci.out, explain_cpmi.out,
     explain_cppi.out, explain_csi.out, explain_ctor_i.out, explain_cu.out,
     explain_cvpi.out, explain_cxd.out, explain_cxf.out,
     explain_ec_typedef_i.out, explain_ec_using_i.out, explain_efi-c++.out,
     explain_efi-c.out, explain_efi-itself-c++.out, explain_efui.out,
     explain_epctor_i.out, explain_epictor_i.out, explain_epnxctor_i.out,
     explain_epudc_b.out, explain_eta2i.out, explain_exf_i.out,
     explain_exi.out, explain_f+o_exclam__b.out, explain_f+udc_i.out,
     explain_f_cpmi.out, explain_f_pi.out, explain_f_pmi.out,
     explain_f_ppc.out, explain_f_rpii-c89.out, explain_fa_cd_i_i.out,
     explain_fa_dep_i_v.out, explain_fa_mu_i_v.out, explain_fac_v-1.out,
     explain_fac_v.out, explain_facst3_v.out, explain_facv_v.out,
     explain_fast3_v.out, explain_fastc3_v.out, explain_fav_v.out,
     explain_fccel_v.out, explain_fctor_i.out, explain_ff_i_v-01.out,
     explain_fid_v.out, explain_fipfi_v_pfi_v.out, explain_fixiy_v.out,
     explain_fkr_i-cknr.out, explain_fkr_pi-c17.out,
     explain_fo_eq2_2crk_b++default.out, explain_fo_eq2_2k_b++default.out,
     explain_fpa5d_v.out, explain_fpc_pi.out, explain_fpci_pi.out,
     explain_fpf_pac_i.out, explain_fpf_v_i.out, explain_fpfc_i_d.out,
     explain_frg_v-c89.out, explain_frgi_v.out, explain_frri_v.out,
     explain_fv_pa3a5i.out, explain_fv_pa3a5pi.out, explain_fv_pa3i.out,
     explain_fv_pa3pi.out, explain_fv_pi.out, explain_grtpi.out,
     explain_grtri.out, explain_grtrri.out, explain_i+.out,
     explain_i-reserved-c++.out, explain_i-reserved-c.out, explain_i2+.out,
     explain_i_i.out, explain_i_pfd_i.out, explain_i_pi.out,
     explain_i_typedef.out, explain_ic.out, explain_ictor_i.out,
     explain_ii-c++.out, explain_imd.out, explain_imf.out,
     explain_ipi-redef.out, explain_irg.out, explain_ist.out,
     explain_keywords.out, explain_ki+.out, explain_ld.out, explain_lf.out,
     explain_ll.out, explain_main_f_i.out, explain_main_f_si.out,
     explain_main_fi2apc_i.out, explain_main_fi2ppc_i.out,
     explain_main_fiapc_i.out, explain_main_fiapcc_i.out,
     explain_main_fippc_i.out, explain_main_fippcc_i.out,
     explain_main_fv_i.out, explain_main_vf_h.out, explain_mi.out,
     explain_mscc_f_v.out, explain_mscd_f_v.out, explain_msfc_f_v.out,
     explain_mssc_f_v.out, explain_mstc_f_v.out, explain_msvc_f_v.out,
     explain_mswa_f_v.out, explain_na4i.out, explain_nfi_c.out, explain_ni.out,
     explain_npii-c89.out, explain_npiii-c89.out, explain_nrfi_v-c++.out,
     explain_nrfi_v-c17.out, explain_nrfi_v.out, explain_o_amper2_2rck_b.out,
     explain_o_amper2_rck_b.out, explain_o_amper_eq_i_rk.out,
     explain_o_amper_eq_rki_rk.out, explain_o_amper_i_i.out,
     explain_o_amper_i_rk.out, explain_o_amper_rcki_k.out,
     explain_o_arrow_star_i_rk.out, explain_o_arrow_star_rki_rk.out,
     explain_o_brackets_2i_i.out, explain_o_brackets_i_i.out,
     explain_o_circ_eq_i_rk.out, explain_o_circ_eq_rki_rk.out,
     explain_o_circ_rcki_k.out, explain_o_comma_i_rk.out,
     explain_o_comma_rcki_k.out, explain_o_comma_rki_rk.out,
     explain_o_eq2_i_b.out, explain_o_eq2_ki_b.out, explain_o_exclam_b.out,
     explain_o_exclam_eq_i_b.out, explain_o_exclam_eq_ki_b.out,
     explain_o_greater2_eq_i_rk.out, explain_o_greater2_eq_rki_rk.out,
     explain_o_greater2_i_k.out, explain_o_greater2_i_rk.out,
     explain_o_greater2_rcki_k.out, explain_o_greater2_rki_rk.out,
     explain_o_greater_eq_rcki_b.out, explain_o_greater_rcki_b.out,
     explain_o_less2_eq_i_rk.out, explain_o_less2_eq_rki_rk.out,
     explain_o_less2_i_k.out, explain_o_less2_i_rk.out,
     explain_o_less2_rcki_k.out, explain_o_less2_rki_rk.out,
     explain_o_less_eq_greater_2rck_i.out, explain_o_less_eq_rcki_b.out,
     explain_o_less_rcki_b.out, explain_o_minus2_rki_rk.out,
     explain_o_minus_eq_i_rk.out, explain_o_minus_eq_rki_rk.out,
     explain_o_minus_i_k.out, explain_o_minus_rcki_k.out,
     explain_o_parens_2i_v.out, explain_o_parens_3i_v.out,
     explain_o_parens_i_v.out, explain_o_percent_eq_i_rk.out,
     explain_o_percent_eq_rki_rk.out, explain_o_percent_i_k.out,
     explain_o_percent_rcki_k.out, explain_o_pipe2_2rck_b.out,
     explain_o_pipe2_rck_b.out, explain_o_pipe_eq_i_rk.out,
     explain_o_pipe_eq_rki_rk.out, explain_o_pipe_i_rk.out,
     explain_o_plus2_rki_rk.out, explain_o_plus_eq_i_rk.out,
     explain_o_plus_eq_rki_rk.out, explain_o_plus_i_k.out,
     explain_o_plus_rcki_k.out, explain_o_slash_eq_i_rk.out,
     explain_o_slash_eq_rki_rk.out, explain_o_slash_rcki_k.out,
     explain_o_star_eq_i_rk.out, explain_o_star_eq_rki_rk.out,
     explain_o_star_i_rk.out, explain_o_star_rcki_k.out, explain_oi.out,
     explain_ovc_udc_i.out, explain_ovo_minus2_i_rk.out,
     explain_ovo_plus2_i_rk.out, explain_p_mssc_f_v.out, explain_pa3a5i.out,
     explain_pa3cpa5i.out, explain_pa3pa5i.out, explain_pa9i.out,
     explain_pati-01.out, explain_pati-02.out, explain_pblv_pi.out,
     explain_pcf_i.out, explain_pcpi.out, explain_pfv_pi.out, explain_pi.out,
     explain_pii-c89.out, explain_piii-c89.out, explain_pmf_i.out,
     explain_pmfii_pk.out, explain_pmi.out, explain_pp_mssc_f_v.out,
     explain_ppi.out, explain_ra3i.out, explain_rgi-c++11.out, explain_rgi.out,
     explain_ri.out, explain_ro_minus2_i_rk.out, explain_ro_plus2_i_rk.out,
     explain_rro_minus2_i_rk.out, explain_rro_plus2_i_rk.out, explain_rtpi.out,
     explain_sic.out, explain_sta2i.out, explain_static_cast_i+.out,
     explain_static_cast_i.out, explain_stf__i.out, explain_sti.out,
     explain_sto_parens_2i_v.out, explain_stxxi.out, explain_tli.out,
     explain_typedef_i.out, explain_typedef_ii32.out,
     explain_typedef_pfc_i.out, explain_typedef_ulz.out, explain_uc.out,
     explain_udc_i.out, explain_udl_c16_i.out, explain_udl_c32_i.out,
     explain_udl_c8_i.out, explain_udl_c_i-01.out, explain_udl_c_i-c.out,
     explain_udl_c_i.out, explain_udl_ld_i.out, explain_udl_pcc16ul_i.out,
     explain_udl_pcc16z_i.out, explain_udl_pcc32ul_i.out,
     explain_udl_pcc32z_i.out, explain_udl_pcc8ul_i.out,
     explain_udl_pcc8z_i.out, explain_udl_pcc_i.out, explain_udl_pccul_i.out,
     explain_udl_pccz_i.out, explain_udl_pccz_ul.out, explain_udl_pcwtul_i.out,
     explain_udl_pcwtz_i.out, explain_udl_ull_i.out, explain_udl_wt_i.out,
     explain_ull.out, explain_unknown_attribute.out, explain_using_a3i.out,
     explain_using_a_mu_i.out, explain_using_pfi_v.out, explain_uw3.out,
     explain_vcpi.out, explain_vo_minus2_i_rk.out, explain_vo_plus2_i_rk.out,
     explain_vpi.out, explain_wt.out, explain_xxi-c.out, explain_xxi.out,
     explain_yi.out, explain_yo_minus2_i_rk.out, explain_yo_plus2_i_rk.out,
     file-explain_i.out, gnu_attributes.out, help.out, include-ok.out,
     integers.out, k_typedef_i_typedef_tn_i.out, retypedef-01.out, set.out,
     set_explicit-ecsu_ecsu.out, set_explicit-int_i.out,
     set_explicit-int_u.out, set_lang.out, set_noexplicit-int.out,
     set_options.out, set_trigraphs.out, show.out, trigraphs.out,
     typedef_fi_v_show.out, typedef_i_pi.out, typedef_pfi_v_show.out,
     using_pfi_v_show_f.out, xupc.out: When explaining gibberish, print types
     in C/C++ (e.g., `int`), not pseudo-English (e.g., `integer`).  Added
     command-line options `--no-english-types` & `-T` and `set` option
     `english-types` to disable printing type names in pseuso-English and
     corresponding `set` option.

2022-12-24  Paul J. Lucas <paul@lucasmail.org>

   * show.out, show.test: Fixed typo in test: s/shoe/show/
   * c_type.c, cast_type_i.out, cast_typedef_i.out,
     declare_+o_eq_rck_rk++delete-c++03.out, declare_a_cd_i.out,
     declare_a_nua_f.out, declare_ac3i.out, declare_cf_v-c.out,
     declare_cnmf_v-c.out, declare_cnmf_v.out, declare_etstf_v.out,
     declare_exsti.out, declare_nri.out, declare_rtf_v-c.out, declare_rti.out,
     define_ai-c17.out, define_eti.out, define_rgi.out, define_sti.out: Not
     printing types in English when there's an error.
   * test/Makefile.am, declare_b.out, declare_b.test: bool tests reduction.
   * cdecl.1, cdecl_keyword.c, literals.c, literals.h, declare_b.out,
     declare_b.test: Added `boolean` and `Boolean` as Engish synonyms for
     `bool`.
   * cdecl.1: Added mention of more C23 features.
   * help.c, help.out: Updated help for C23's .
   * cdecl.1, c_lang.h, set_trigraphs.out, trigraphs.out, set_trigraphs.test,
     trigraphs.test: Trigraphs are no longer supported in C23.
   * c_lang.h, test/Makefile.am, declare_af.out, explain_af-c.out: Added
     support for `auto` as a deduced type in C23.
   * c_ast_check.c, c_lang.h, test/Makefile.am, explain_fel_v-c17.out,
     explain_fel_v.out, explain_fel_v-c17.test, explain_fel_v.test: A `...` is
     now correctly allowed as the only function parameter in C++ as well as
     C23.
   * print.c, util.c, util.h: Moved term-columns code.

2022-12-23  Paul J. Lucas <paul@lucasmail.org>

   * util.c: Eliminated local variable.
   * dam_lev.c: s/malloc/check_realloc/
   * dam_lev.c: Now using a single malloc().
   * dam_lev.c: s/char/void/
   * dam_lev.c: Factored out matrix2_*() functions.

2022-12-22  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, slist.h: Added more ().
   * c_sname.c: Fixed use-after-free bug.
   * c_ast.c: Simplified NULL checks.

2022-12-21  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added -Wredundant-decls in parser.y.
   * pjl_config.h: Reordering.
   * autocomplete.c: Split out specific_command_keywords().

2022-12-19  Paul J. Lucas <paul@lucasmail.org>

   * types.h: Removed wchar_t.

2022-12-16  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, c_ast_check.c, c_ast_util.c, english.c, types.h:
     s/c_ast_visit_data/user_data/
   * c_ast.h, c_ast_check.c, c_ast_util.c, english.c, types.h: Changed
     c_ast_visit_data_t to be a union to eliminate casting in most cases.

2022-12-13  Paul J. Lucas <paul@lucasmail.org>

   * help.c, help.out: For C89 and earlier, now eliding <declare-option>.
   * help.c, help.out: s/declare-options/declare-option/

2022-12-12  Paul J. Lucas <paul@lucasmail.org>

   * dump.c: Added cast to suppress warning.
   * c_ast.h: Reduced "unused_*" members from 7 total to 6.
   * c_ast.c: Added a static_assert for c_apple_block_ast.

2022-12-11  Paul J. Lucas <paul@lucasmail.org>

   * cdecl_parser.h, types.h: Added missing: #include "pjl_config.h"
   * parser.y: Added ().

2022-12-09  Paul J. Lucas <paul@lucasmail.org>

   * Doxyfile: Reordering.

2022-12-07  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l, integers.out, integers.test: Digit separators are now supported
     for octal integers.

2022-12-01  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, c_typedef.h, cdecl.c, cli_options.c, cli_options.h, lexer.h,
     lexer.l: Not calling check_atexit( &lexer_cleanup ) only once; added
     at-most-once-checking code to some *_init() functions.
   * lexer.l: Eliminated dynamic memory allocation in parse_int().
   * lexer.l: Fixed Flex URL.
   * color.c: Made comparison explicit.

2022-11-30  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, cdecl-d.out: Simplified _BitInt rules.
   * c_ast_check.c, test/Makefile.am, declare_bi65.out, declare_bi65.test: Now
     check that the maximum number of bits for `_BitInt` is 64.

2022-11-27  Paul J. Lucas <paul@lucasmail.org>

   * did_you_mean.c: Fixed malloc() type.

2022-11-26  Paul J. Lucas <paul@lucasmail.org>

   * c_sglob.c: Added "if ( sglob->pattern != NULL )" check.
   * c_sglob.c, c_sglob.h: Made c_sglob_parse() a bit more robust.
   * parser.y: Using C_LANG_WHICH() more.
   * parser.y: s/!OPT_LANG_IS/UNSUPPORTED/

2022-11-25  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added mention that default is on for "using" option.
   * cdecl.1: Added mention that echo-commands works only when not interactive.
   * c_ast.c: Added static_assert()s.
   * c_ast.c, c_ast.h, c_ast_check.c, c_kind.c, c_kind.h, dump.c, english.c,
     gibberish.c, parser.y, types.h, cdecl-d.out, cdecl-d.test: Made casts be a
     c_kind of K_CAST to eliminate cast_kind from every AST node.
   * gibberish.c: Added assert().

2022-11-24  Paul J. Lucas <paul@lucasmail.org>

   * color.c: Removed extraneous ';'.
   * c_ast_check.c, color.c, dump.c, print.c, slist.c: Changed != to == where
     simpler.

2022-11-23  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.c, color.c, color.h, help.c, parser.y, print.c, prompt.c: Replaced
     color macros with functions; now passing color variable to end color as
     well.

2022-11-20  Paul J. Lucas <paul@lucasmail.org>

   * slist.c: Whitespace.
   * color.c: Added explicit != NULL.

2022-11-19  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l, parser.y, explain_+dtor-error.out: Improved the error message for
     an invalid destructor name, e.g., `S::~T`.
   * c_sname.c, lexer.l: c_sname_parse_impl() now checks that the last 2 scope
     names match when is_dtor is true.

2022-11-15  Paul J. Lucas <paul@lucasmail.org>

   * cdecl_parser.h, lexer.h: Suppressing redundant declaration warning for
     Flex/Bison.

2022-11-14  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Added more compiler warnings.
   * c_type.c, declare_synonyms.out: `[[noreturn]]` is now printed rather than
     `_Noreturn` in C23.
   * c_ast_check.c, c_lang.h: s/EXPLICIT_USER_DEF_CONV/explicit_USER_DEF_CONV/
   * c_ast_check.c: Removed pointless assert().

2022-11-13  Paul J. Lucas <paul@lucasmail.org>

   * help.out, help.test: Now testing help for all languages.
   * help.c, help.out: `_BitInt(<int>)` was added to the help text.
   * cdecl.c: Renamed parameters to match.
   * cdecl.c, cdecl_parser.h, lexer.h, parser.y: Moved declarations for Flex &
     Bison to lexer.h and cdecl_parser.h, respectively.

2022-11-12  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, test/Makefile.am, cl-exit.out, cl-quit.out, cl-exit.test,
     cl-quit.test: Fixed (hopefully for the last time) the way the program name
     and CLI arguments are parsed.
   * cdecl.c: Simplification.

2022-11-07  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Removed "inline".
   * c_ast.c, c_ast.h, c_ast_check.c, c_ast_util.c, dump.c, english.c,
     gibberish.c, parser.y, cdecl-d.out: Eliminated "as" union descriminator in
     c_ast.
   * c_ast.c, c_ast.h, c_ast_check.c, dump.c, english.c, gibberish.c, parser.y:
     Eliminated "as" union descriminators in c_alignas and c_builtin_ast.
   * configure.ac: Now requiring at least autoconf 2.69 and C11.
   * util.c: Removed unnecessary "noreturn".
   * cdecl.c, cdecl.h, cli_options.c: Removed parameter from is_cdecl() and
     is_cppdecl(); made is_cdecl() local.
   * cdecl.h: Sorted.
   * parser.y, util.h: Eliminated PUTS().
   * cdecl.c, cdecl.h, cli_options.c: Eliminated cdecl_fin.
   * cdecl.1, cdecl.c, cdecl.h, cli_options.c, options.c, options.h, print.c,
     set_options.c, cdecl-h.out: Removed `--interactive` & `-i` options.
   * cdecl.1: Added some missing C++23 types to the manual page.

2022-11-06  Paul J. Lucas <paul@lucasmail.org>

   * strbuf.c: Changed to compare str.

2022-11-05  Paul J. Lucas <paul@lucasmail.org>

   * slist.c: s/FREE/free/
   * slist.c: Simplification.

2022-11-04  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l, parser.y: User-defined conversions in pseudo-English now allow
     "const[ant] eval[uation]", "const[ant] expr[ession]", and "const[ant]
     init[ialization]" for a storage class.

2022-11-02  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added "no except" to udc_storage_class_english_stid.
   * cdecl.1, cdecl_keyword.c, literals.c, literals.h, parser.y,
     test/Makefile.am, cdecl-d.out, declare_synonyms.out,
     declare_synonyms.test: The following English synonyms have been added:
   * cdecl.1: Added missing `reproducible` and `unsequenced` to the manual
     page.
   * configure.ac, help.c, help.out: Added missing `constexpr` to C23 help.

2022-10-31  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, cdecl-d.out: Added user_defined_conversion_declaration_c.

2022-10-30  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_lang.h, parser.y: Added LANG_enum_BITFIELDS.
   * c_sname.c, c_sname.h, parser.y, slist.h, cdecl-d.out: Added slist_move()
     and c_sname_move() to avoid possible double-free of slist or c_sname
     objects.

2022-10-29  Paul J. Lucas <paul@lucasmail.org>

   * types.h: Sorted.
   * configure.ac: Sorted -W flags.
   * configure.ac, c_ast.h, c_keyword.h, c_kind.h, c_operator.h, c_type.h,
     cdecl_command.h, cdecl_parser.h, red_black.h, set_options.h, types.h: Made
     cdecl compile with -Wpedantic that meant not forward-declaring enums.
   * types.h: Removed unused c_typedef_add_rv_t.

2022-10-27  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, read_line.c: Correct (?) way to check for libraries and
     headers.

2022-10-26  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS: Updated.

2022-10-25  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Updated version to 13.0.
   * cdecl.c, test/Makefile.am, __declspec.out, alttokens.out, cdecl-d.out,
     digraphs.out, explain-by-default.out, gnu_attributes.out, help.out,
     set_digraphs.out, set_east-const.out, set_lang.out, set_semicolon.out,
     set_trigraphs.out, show.out, trigraphs.out, xec.out, xupc.out,
     __declspec.test, alttokens.test, cdecl-d.test, digraphs.test,
     gnu_attributes.test, help.test, set_debug.test, set_digraphs.test,
     set_east-const.test, set_lang.test, set_semicolon.test,
     set_trigraphs.test, show.test, trigraphs.test, xec.test, xupc.test:
     Consolidated tests.
   * cdecl.1: Removed "set interactive".
   * set_options.c: Added enabled_args.
   * cdecl.1, cdecl.c, print.c, set_options.c: Now echo commands only when not
     interactive.

2022-10-24  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, cdecl.c, cli_options.c, help.c, options.c, options.h,
     set_options.c, cdecl-h.out, help_options.out, set.out, set_c++.out,
     set_c++03.out, set_c++11.out, set_c++14.out, set_c++17.out, set_c++20.out,
     set_c++23.out, set_c++98.out, set_c11.out, set_c17.out, set_c18.out,
     set_c89.out, set_c90.out, set_c95.out, set_c99.out, set_cknr.out,
     set_digraphs_c89.out, set_explicit-ecsu_ecsu.out, set_explicit-int_i.out,
     set_explicit-int_u.out, set_lang_c++.out, set_noexplicit-int.out,
     set_options.out, set_trigraphs-c++17.out: Added --echo-commands/-O
     command-line options and echo-commands set option.
   * cdecl.1: s/ccsu/ecsu/
   * parser.y: Flipped order of comparison.

2022-10-22  Paul J. Lucas <paul@lucasmail.org>

   * print.c: Removed uncessary `if`.
   * print.c: Fixed the error column when the prompt is disabled.

2022-10-21  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Reorganization.
   * configure.ac: Now checking for readline and curses headers and libries
     only if those features are enabled; also wrapped all `test` arguments in
     quotes.
   * configure.ac, prompt.c: Now doing readline-related stuff only if readline
     was not disabled.
   * c_ast_check.c: Fixed warning.
   * cdecl.1, c_lang.h, test/Makefile.am, explain_efi-c.out,
     explain_efi-c17.out, explain_efi-c.test, explain_efi-c17.test: Fixed-type
     enumerations in C23 are now supported.
   * cdecl.1: Changed to bullets.
   * cdecl.1: Added mention of typeof declations not being supported.

2022-10-20  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, c_ast_check.c, c_keyword.c, c_lang.h, c_type.c, c_type.h,
     literals.c, literals.h, parser.y, test/Makefile.am, declare_nri.out,
     explain_a_nd_i.out, explain_a_re_f_v.out, explain_a_re_i.out,
     explain_a_us_f_v.out, explain_a_us_i.out, explain_a_nd_i.test,
     explain_a_re_f_v.test, explain_a_re_i.test, explain_a_us_f_v.test,
     explain_a_us_i.test: Added [[reproducible]] and [[unsequenced]] attributes
     for C23.
   * lexer.l, test/Makefile.am, integers.out, integers.test: Digit seperators
     in C23 are now supported.
   * c_type.c: s/LANG_CPP_MIN(20)/LANG_no_unique_address/
   * parser.y: Added UNSUPPORTED().
   * c_lang.h, c_type.c, help.c, test/Makefile.am, declare_b-c17.out,
     declare_b.out, declare_hb.out, declare_lb.out, declare_sib.out,
     declare_ub.out, explain_b.out, explain_hb.out, explain_keywords.out,
     explain_lb.out, explain_sib.out, explain_ub.out, help_english-c.out,
     show_all.out, show_all_predefined.out, show_all_predefined_glob-01.out,
     show_all_typedef.out, show_predefined.out, show_predefined_typedef.out,
     declare_b-c17.test: In C23, `bool` is now used instead of `_Bool`.
   * c_type.c, help.c, test/Makefile.am, help_english-c.out,
     help_english-c17.out, help_english-c17.test: In C23, `thread_local` is now
     used instead of `_Thread_local`.
   * c_lang.h, literals.h, test/Makefile.am, declare_c_al0.out,
     declare_c_al8-c17.out, declare_c_al8.out, declare_c_alpv.out,
     declare_en_al4.out, explain_alrgi.out, declare_c_al8-c17.test,
     explain_alrgi.test: In C23, `alignas`  is now used instead of `_Alignas`.

2022-10-19  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.h: Sorted.
   * autocomplete.c, c_ast_check.c, c_ast_util.h, c_keyword.c, c_lang.h,
     c_type.c, cdecl_command.c, cdecl_keyword.c, gibberish.c, help.c, parser.y,
     print.c, set_options.c: Renamed LANG_XXX macros to use correct
     capitalization for keywords.
   * c_keyword.c, c_lang.h, literals.c, literals.h, parser.y: Now recognize
     `typeof` and `typeof_unqual` C23 keywords.
   * cdecl.1, c_keyword.c, c_lang.h, did_you_mean.c, explain_pcf_i.out,
     explain_th_f_v.out: Added `false` and `true` to C23.
   * c_ast_check.c, explain_xxvi.out: Put type in quotes in error message.
   * cdecl.1, c_ast_check.c, c_lang.h, c_type.c, test/Makefile.am,
     declare_xvi-c.out, declare_xxi-c.out, declare_xxi-c17.out,
     explain_xxi-c.out, explain_xxi-c17.out, explain_xxvi.out,
     declare_xxi-c.test, declare_xxi-c17.test, explain_xxi-c.test,
     explain_xxi-c17.test, explain_xxvi.test: Added `constexpr` to C23.

2022-10-18  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS, cdecl.1, c_ast.c, c_ast.h, c_ast_check.c, c_keyword.c, c_lang.h,
     c_type.c, c_type.h, dump.c, english.c, gibberish.c, literals.c,
     literals.h, parser.y, test/Makefile.am, cdecl--debug.out, cdecl-d-+i.out,
     cdecl-d-al8i.out, cdecl-d-alli.out, cdecl-d-cmo_exclam__b.out,
     cdecl-d-eni.out, cdecl-d-f2i_pi.out, cdecl-d-f_v.out,
     cdecl-d-faia4iaviaciast6i_v.out, cdecl-d-pmki.out, cdecl-d-udc_i.out,
     cdecl-d-z.out, declare_bi4.out, explain_bi0.out, explain_bi1.out,
     explain_bi4.out, explain_sibi0.out, explain_sibi1.out, explain_sibi2.out,
     explain_sibi4.out, explain_ubi0.out, explain_ubi1.out, explain_ubi4.out,
     declare_bi4.test, explain_bi0.test, explain_bi1.test, explain_bi4.test,
     explain_sibi0.test, explain_sibi1.test, explain_sibi2.test,
     explain_sibi4.test, explain_ubi0.test, explain_ubi1.test,
     explain_ubi4.test: The `_BitInt(N)` type in C23 in now supported.

2022-10-17  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am: Changed naming of block tests from 'b' to 'bl'.
   * c_keyword.c, c_lang.h, c_typedef.c, literals.c, literals.h,
     cdecl--debug.out, cdecl-d-+i.out, cdecl-d-al8i.out, cdecl-d-alli.out,
     cdecl-d-cmo_exclam__b.out, cdecl-d-eni.out, cdecl-d-f2i_pi.out,
     cdecl-d-f_v.out, cdecl-d-faia4iaviaciast6i_v.out, cdecl-d-pmki.out,
     cdecl-d-udc_i.out, cdecl-d-z.out, explain_static_cast_i-c.out,
     explain_tli-c99.out, show_all-c++.out, show_all.out,
     show_all_predefined-c++.out, show_all_predefined.out,
     show_all_predefined_typedef-c++.out, show_all_typedef.out,
     show_predefined-c++.out, show_predefined.out, show_predefined_typedef.out,
     show_predefined_using.out: `nullptr`, `static_assert`, & `thread_local`
     are now also keywords in C23.

2022-10-16  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c, c_ast_check.c, c_keyword.c, c_operator.c, c_sname.c,
     c_type.c, cdecl.c, cdecl_command.c, cdecl_keyword.c, dump.c, english.c,
     gibberish.c, lexer.l, literals.c, literals.h, parser.y: Changed [HL]_XXX
     literals to [HL]_xxx and Y_XXX literals to Y_xxx.

2022-10-15  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added mention of static operator().
   * c_sname.c, cdecl.c, lexer.l, parser.y: Using cast macros more.
   * c_ast_check.c: Added POINTER_CAST.
   * c_ast.h: s/uint64_t/uintmax_t/ for c_ast_visit_data_t.

2022-10-14  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Simplified pc99_func_or_constructor_decl_c code.
   * parser.y: Added free().
   * parser.y: Similified.

2022-10-13  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, did_you_mean.c, red_black_test.c: Reworked *_cmp() functions
     to use their natural pointer types; eliminated test_rb_data_cmp().

2022-10-12  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, cdecl--debug.out, cdecl-d-+i.out, cdecl-d-al8i.out,
     cdecl-d-alli.out, cdecl-d-cmo_exclam__b.out, cdecl-d-eni.out,
     cdecl-d-f2i_pi.out, cdecl-d-f_v.out, cdecl-d-faia4iaviaciast6i_v.out,
     cdecl-d-pmki.out, cdecl-d-udc_i.out, cdecl-d-z.out, show_all-c++.out,
     show_all.out, show_all_predefined-c++.out, show_all_predefined.out,
     show_all_predefined_typedef-c++.out, show_all_typedef.out,
     show_predefined-c++.out, show_predefined_using.out: Added the standard
     C++23 types `std::bfloat16_t`, `std::float128_t`, `std::float16_t`,
     `std::float32_t`, `std::float64_t`, `std::ospanstream`, `std::spanbuf`,
     `std::spanstream`, `std::stacktrace`, `std::unexpect_t`,
     `std::wospanstream`, `std::wspanbuf`, and `std::wspanstream`.

2022-10-11  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, c_typedef.h, parser.y, test/Makefile.am,
     explain_ctor_rcc.out, explain_ctor_rcc.test: Partially fixed "explain C(C
     const&)".

2022-10-10  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, test/Makefile.am, explain_k_al64.out, explain_k_al64.test:
     Now checking for aligned structs in C.

2022-10-09  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: Eliminated `if`.
   * gibberish.c: Eliminated "space".
   * cdecl_keyword.c: s/CPP_MIN(11)/RVALUE_REFERENCE/ for "rvalue"
     auto-completion.
   * cdecl_keyword.c: `pointer` is now auto-completable.
   * Doxyfile: Added ENABLE_FLEX_DEBUG.
   * Doxyfile, c_ast.c, c_ast.h: unique_id is now used only when
     ENABLE_CDECL_DEBUG.

2022-10-08  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, gibberish.c: s/of_ast/to_ast/ for c_ptr_mbr_ast.
   * c_type.h: Simplified TS_MEMBER_FUNC_ONLY.
   * c_type.h: Defined TS_MAIN_FUNC_CPP in terms of TS_MAIN_FUNC_C.

2022-10-04  Paul J. Lucas <paul@lucasmail.org>

   * slist.c, slist.h: s/slist_at_nocheck_offset/slist_at_nocheck/

2022-10-02  Paul J. Lucas <paul@lucasmail.org>

   * declare_pmf_pi.out: Fixed expected output.
   * gibberish.c, test/Makefile.am, declare_f_pmpi.out, declare_pmf_pi.out,
     declare_f_pmpi.test, declare_pmf_pi.test: Fixed output of "declare f as
     function returning pointer to member of class C pointer to int" which
     should be "int* C::* f()".

2022-10-01  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.h, parser.y: Now comparing ast pointers directly.

2022-09-30  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c, c_type.h: s/c_tid_is_except/c_tid_is_except_any/
   * Doxyfile, c_ast.h, c_ast_util.c, c_ast_util.h, c_kind.h, english.c,
     gibberish.c, parser.y, test/Makefile.am, declare_enw3-c++.out,
     declare_puw3.out, explain_enw3-c++.out, explain_enw3-c.out,
     declare_enw3-c++.test, explain_enw3-c++.test, explain_enw3-c.test:
     Enumerations in C++ can now be bit fields.

2022-09-28  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, strbuf.c, util.c, util.h: Made perror_exit_if() back into a
     PERROR_EXIT_IF() macro so it can use unlikely().
   * english.c: Eliminated c_ast_english_cast().

2022-09-26  Paul J. Lucas <paul@lucasmail.org>

   * english.c: s/c_sname_english_impl/c_scope_english/
   * english.c: Eliminated c_ast_english_impl().
   * c_ast.h, c_ast_check.c, c_kind.h, english.c, gibberish.c, parser.y,
     types.h: Added c_bit_field_ast; s/K_ANY_BIT_WIDTH/K_ANY_BIT_FIELD/;
     removed c_bit_width_t.
   * english.c: Added c_ast_visit_english().

2022-09-25  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, declare_typedef_i_al8.out, explain_al3_c.out,
     explain_alf_i.out, explain_alrgi.out, explain_c_al3.out: Improved the
     location of alignment errors.
   * c_ast_check.c, c_kind.h, english.c, gibberish.c, test/Makefile.am,
     explain_al4_cw3.out, explain_al4_cw3.test: Aligned bit fields are now
     correctly forbidden.

2022-09-24  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Simplified is_1_bit_only_in_set().
   * gibberish.c, test/Makefile.am, define_efi.out, define_efi.test: Fixed
     fixed type `enum` definition.
   * gibberish.c: s/printed_typedef/print_typedef/;
     s/printing_using/print_using/

2022-09-23  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: s/printing_typedef/printed_typedef/
   * gibberish.c: s/msc_call_atid/msc_call_atids/
   * gibberish.c: Eliminated skip_name_for_using flag.
   * gibberish.c: Simplified with is_fixed_enum.

2022-09-22  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Undid previous setting of temp_sname inside DUMP_AST().
   * parser.y: Moved setting of temp_sname inside DUMP_AST().

2022-09-19  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_operator.c: Replaces some uses of INTERNAL_ERR() with assert().

2022-09-17  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c, red_black_test.c, slist_test.c: Added `const` for array
     parameters.
   * read_line.c, read_line.h: Removed incorrect "static".
   * AUTHORS: Added mention of C++23 explicit object parameters.

2022-09-15  Paul J. Lucas <paul@lucasmail.org>

   * help.c, help_english-c++.out: Added "this" to "store" in English help.
   * src/Makefile.am: Put slist.[ch] back.
   * cdecl.1: Added mention of explicit object parameters.

2022-09-14  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am: Removed incorrect slist.[ch] dependency from
     red_black_test_SOURCES.

2022-09-13  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, declare_frg_v.out, explain_frg_v.out: Fixed implicit `int`
     checking error message
   * c_ast_check.c, c_keyword.c, c_lang.h, c_type.c, c_type.h, parser.y,
     test/Makefile.am, cdecl--debug.out, cdecl-d-cmo_exclam__b.out,
     cdecl-d-f2i_pi.out, cdecl-d-faia4iaviaciast6i_v.out, declare_ftsrk_v.out,
     explain_cftsrk_v.out, explain_ftsrk_v.out, explain_rftsrk_v.out,
     explain_stftsrk_v.out, explain_vftsrk_v.out, declare_ftsrk_v.test,
     explain_cftsrk_v.test, explain_ftsrk_v.test, explain_rftsrk_v.test,
     explain_stftsrk_v.test, explain_vftsrk_v.test: Added preliminary explicit
     object parameter support for C++23.
   * c_keyword.c: s/CPP_MAX(03)/THROW/; s/CPP_MIN(11)/USING_DECLARATION/

2022-09-12  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c: Expanded language shorthands to 3 letters.
   * configure.ac: Changed version to 12.1.
   * c_type.c: Removed incorrect P1 from OK_STORAGE_LANGS.

2022-09-11  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, c_lang.h, test/Makefile.am, explain_sto_eq_i_v.out,
     explain_sto_parens_2i_v-cpp20.out, explain_sto_parens_2i_v.out,
     explain_sto_eq_i_v.test, explain_sto_parens_2i_v-cpp20.test,
     explain_sto_parens_2i_v.test: Now allow `operator()` to be `static` in
     C++23.
   * c_typedef.c, cdecl--debug.out, cdecl-d-+i.out, cdecl-d-al8i.out,
     cdecl-d-alli.out, cdecl-d-cmo_exclam__b.out, cdecl-d-eni.out,
     cdecl-d-f2i_pi.out, cdecl-d-f_v.out, cdecl-d-faia4iaviaciast6i_v.out,
     cdecl-d-pmki.out, cdecl-d-udc_i.out, cdecl-d-z.out, show_all-c++.out,
     show_all.out, show_all_predefined-c++.out, show_all_predefined.out,
     show_all_predefined_typedef-c++.out, show_all_typedef.out,
     show_predefined-c++.out, show_predefined_using.out: Added
     `std::bernoulli_distribution` and `std::random_device`.

2022-09-10  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, explain_a0i.out, explain_a4v.out, explain_a5fd_i.out,
     explain_ac9i.out, explain_ast9i.out, explain_b_ai.out, explain_f_ai.out:
     Now recognizing `static` or `const` array declarations outside of function
     parameters allowing more specific error reporting.

2022-09-06  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c, test/Makefile.am, declare_fac_v.out, declare_facv_v.out,
     declare_fac_v.test: Array parameters no longer have a space wrongly
     emitted after `const`.

2022-08-29  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c: s/which_lang_id/which_lang_ids/
   * c_ast_check.c, explain_studc_i.out: Now using error_kind_not_tid().

2022-08-28  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, declare_b_f_i.out, declare_f_f_i.out,
     explain_ff_i_v-02.out: The "function returning function" error now has "
     is illegal".

2022-08-22  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, c_ast_check.c, c_lang.h, test/Makefile.am,
     explain_epudc_b-c++03.out, explain_epudc_b.out,
     explain_epudc_b-c++03.test, explain_epudc_b.test: Now correctly allowing
     explicit user-defined conversion operators in C++11 and later.

2022-08-16  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, cdecl.c, lexer.l, util.c, util.h: Added check_atexit().
   * lexer.l: Added lexer_cleanup().

2022-08-07  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Removed erroneous "explain"; added ';'.

2022-08-07  Jan Engelhardt <jengelh@inai.de>

   * c_ast.h, c_ast_util.h, c_lang.h, c_operator.h, c_sglob.h, c_sname.h,
     c_type.h, literals.h, red_black.h, slist.h, strbuf.h, util.h: build:
     resolve compile failure due to improper attribute syntax (#23)

2022-08-06  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS, cdecl.1: s/C2X/C23/

2022-07-26  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Using MAYBE_UNUSED.

2022-07-24  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: s/last_lineno/prev_lineno/
   * lexer.l: Added _Exit().
   * util.h: Added missing NODISCARD.

2022-07-22  Paul J. Lucas <paul@lucasmail.org>

   * util.c: Added #include <stdnoreturn.h>

2022-07-21  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c, c_keyword.c, c_keyword.h, c_lang.c, c_lang.h, c_type.c,
     help.c, literals.c, literals.h, parser.y, cast_pfx_i.out, cdecl-xx.out,
     declare_fkr_pi.out, declare_pfkr_i.out, explain_fkr_pi.out,
     explain_nrfi_v.out, help_options.out, set.out, set_explicit-int_i.out,
     set_explicit-int_u.out, set_noexplicit-int.out, set_options.out:
     s/C2X/C23/
   * util.c, util.h: check_realloc()'s size _must_ be > 0.

2022-07-20  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, c_keyword.c, test/Makefile.am, run_test.sh,
     ac-cast_into.exp, ac-declare.exp, ac-explain.exp, ac-help.exp, ac-set.exp,
     ac-show.exp: Tests for autocompletion.

2022-07-18  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c: Now making weird program names just default to being the same as
     cdecl.

2022-07-17  Paul J. Lucas <paul@lucasmail.org>

   * cdecl_command.c: Simplification.
   * autocomplete.c, cdecl_command.c, cdecl_command.h, cdecl_keyword.c: `exit`
     is no longer auto-completable.

2022-07-16  Paul J. Lucas <paul@lucasmail.org>

   * c_keyword.c, c_operator.c, c_operator.h, parser.y,
     cdecl-d-cmo_exclam__b.out: Can now overload the co_await operator.
   * c_ast.h, c_ast_check.c, declare_co_exclam_k_b.out,
     declare_nmo_amper_i_i.out, declare_o_arrow_rk_pk.out,
     declare_o_brackets_2i_i-c++20.out, declare_o_exclam_2i.out,
     declare_o_minus2_d_rk.out, declare_o_minus_iel_i.out,
     declare_o_oexclam_k_b.out, declare_o_plus2_d_rk.out,
     declare_o_plus_iel_i.out, declare_ro_exclam_k_b.out,
     declare_rro_exclam_k_b.out, declare_vo_exclam_k_b.out,
     declare_yo_exclam_k_b.out, explain_co_exclam_k_b.out,
     explain_co_less_i_b++default.out, explain_main_f4i_i.out,
     explain_main_fkr_i.out, explain_o_brackets_2i_i-c++20.out,
     explain_o_exclam_2i.out, explain_o_minus2_d_rk.out,
     explain_o_minus_iel_i.out, explain_o_plus2_d_rk.out,
     explain_o_plus_iel_i.out, explain_ov_o_exclam_k_b.out,
     explain_ro_exclam_k_b.out, explain_rro_exclam_k_b.out,
     explain_vo_exclam_k_b.out, explain_yo_exclam_k_b.out: Better error
     location for parameter-related errors.
   * c_typedef.c, cdecl--debug.out, cdecl-d-+i.out, cdecl-d-al8i.out,
     cdecl-d-alli.out, cdecl-d-cmo_exclam__b.out, cdecl-d-eni.out,
     cdecl-d-f2i_pi.out, cdecl-d-f_v.out, cdecl-d-faia4iaviaciast6i_v.out,
     cdecl-d-pmki.out, cdecl-d-udc_i.out, cdecl-d-z.out, show_all-c++.out,
     show_all.out, show_all_predefined-c++.out, show_all_predefined.out,
     show_all_predefined_typedef-c++.out, show_all_typedef.out,
     show_predefined-c++.out, show_predefined_using.out: Fixed spelling of
     `bad_typeid`; added `source_location`, `type_index`, and `type_info`.

2022-07-15  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_check.c: In C++20 and later, now warning if function parameters or
     return types are volatile.
   * c_ast_check.c, explain_a_nd_f_v.out, explain_nrfi_v.out: Change loc to
     ret_ast.
   * pjl_config.h: s/__attribute__((unused))/MAYBE_UNUSED/

2022-07-13  Paul J. Lucas <paul@lucasmail.org>

   * help.c: s/EPRINTF/EPUTS/
   * pjl_config.h: Removed __has_attribute.
   * autocomplete.c, c_ast.c, c_ast.h, c_ast_check.c, c_ast_check.h,
     c_ast_util.c, c_ast_util.h, c_keyword.h, c_kind.h, c_lang.h, c_operator.c,
     c_operator.h, c_sglob.c, c_sglob.h, c_sname.c, c_sname.h, c_type.c,
     c_type.h, c_typedef.c, c_typedef.h, cdecl.c, cdecl.h, cdecl_command.c,
     cdecl_command.h, cdecl_keyword.h, cli_options.c, cli_options.h, color.c,
     color.h, dam_lev.c, dam_lev.h, did_you_mean.c, did_you_mean.h, dump.c,
     english.c, english.h, gibberish.c, gibberish.h, help.c, lexer.h, lexer.l,
     literals.h, options.h, parser.y, pjl_config.h, print.c, print.h, prompt.c,
     read_line.h, red_black.c, red_black.h, set_options.c, set_options.h,
     slist.h, strbuf.c, strbuf.h, util.c, util.h: Now using GNULib FALLTHROUGH
     and NODISCARD.

2022-07-12  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, c_ast_check.c, c_operator.h, dump.c, parser.y: s/C_FN_*/C_FUNC_*/

2022-07-11  Paul J. Lucas <paul@lucasmail.org>

   * red_black_test.c: Added complete tree validation.
   * red_black.c, red_black.h: s/root/fake_root/; removed fake_root invariants;
     removed right child check from rb_is_empty(); removed rb_tree_first().

2022-07-10  Paul J. Lucas <paul@lucasmail.org>

   * red_black.c: More clean-up.
   * red_black.c: s/is_full/is_node_full/
   * c_typedef.c: Now using struct literal.
   * red_black.c: Added child_dir() and RB_PARENT_CHILD().

2022-07-09  Paul J. Lucas <paul@lucasmail.org>

   * red_black.c: Fixed apparent mis-transcription of code.
   * red_black.c: Added rb_tree_insert_repair().

2022-07-08  Paul J. Lucas <paul@lucasmail.org>

   * red_black.h, red_black_test.c: s/rb_tree_is_empty/rb_tree_empty/
   * read_line.c, read_line.h: char const *const prompts[static const 2]
   * strbuf.c, strbuf.h: Moved header.
   * lines.sh: Added lines.sh script to compare current and Hansen's cdecl.

2022-07-05  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Changed version to 12.0.
   * cdecl.c, cdecl.h, cdecl_command.c, cdecl_command.h, cli_options.c: Fixed
     when cdecl was invoked as `cast`, `declare`, or `explain`, or with a name
     that isn't a command without command-line arguments.

2022-07-04  Paul J. Lucas <paul@lucasmail.org>

   * cl-cast_i.test, cl-declare_i.test, cl-explain_i.test: Removed empty "here"
     documents.
   * cdecl_command.c: Allowing "include" as first argument.
   * cdecl.1: s/C++/C++98/
   * cdecl.1: Better explanation of scope-e.
   * cdecl.1: Formatting.

2022-07-03  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Better formatting.
   * cdecl.1: Added note for "include".
   * cdecl.1: Replaced commands with "see Commands".
   * lexer.l, parser.y, include-err-01.out, include-err-01.test,
     include-ok-nested-01.test, include-ok.test, include-too_many_files.test,
     include-unquoted.test: Converted new tests to new format.
   * cdecl-d-cmo_exclam__b.out, declare_+o_eq_rck_rk++default-c++03.out,
     declare_+o_eq_rck_rk++delete-c++03.out, declare_co_exclam_k_b.out,
     declare_fmo_star_rk_rk.out, declare_mo_arrow_i.out,
     declare_nmo_arrow_rk_pk.out, declare_nmo_brackets_rcki_v.out,
     declare_nmo_eq_rki_rk.out, declare_nmo_parens_rck_v.out,
     declare_o_arrow_i.out, declare_o_arrow_rk_pk.out,
     declare_o_colon2_rk_rk.out, declare_o_dot_k.out,
     declare_o_dot_star_rk_rk.out, declare_o_less_eq_greater_2rck_a-c++17.out,
     declare_o_minus2_d_rk.out, declare_o_minus2_rkd_rk.out,
     declare_o_oexclam_k_b.out, declare_o_plus2_d_rk.out,
     declare_o_plus2_rkd_rk.out, declare_o_qmark_colon_k2i_i.out,
     declare_ro_exclam_k_b.out, declare_rro_exclam_k_b.out,
     declare_udc_a4i.out, declare_vo_exclam_k_b.out, declare_yo_exclam_k_b.out,
     define_ns_c_ns_c.out, en_ns_c.out,
     explain_+co_eq2_rck_b++default-cpp17.out,
     explain_+o_eq_rck_rk++default-02.out, explain_+o_eq_rck_rk++delete-02.out,
     explain_+o_exclam_eq_rck_rk++delete.out, explain_attda2i.out,
     explain_cmo_less_eq_greater_rck_i++default.out, explain_co_exclam_k_b.out,
     explain_co_less_rck_i++default.out, explain_f_typedef_ai.out,
     explain_fo_eq2_crki_b++default.out, explain_fo_eq2_crkk_b++default.out,
     explain_fo_eq2_crkrk_b++default.out, explain_fo_eq2_icrk_b++default.out,
     explain_fo_eq2_ik_b++default.out, explain_fo_eq2_kcrk_b++default.out,
     explain_fo_eq2_ki_b++default.out, explain_fo_eq2_rkcrk_b++default.out,
     explain_fo_less_eq_greater_2rck_i++default.out,
     explain_fo_plus_2crk_b++default.out, explain_ktnk.out,
     explain_o_eq_rck_v++default.out, explain_o_less_2rck_b++default.out,
     explain_o_less_rck_b++default.out, explain_o_minus2_d_rk.out,
     explain_o_minus2_rkd_rk.out, explain_o_plus2_d_rk.out,
     explain_o_plus2_rkd_rk.out, explain_o_plus_kel.out,
     explain_o_qmark_colon_k2i_i.out, explain_ov_o_exclam_k_b.out,
     explain_p_typedef_ri.out, explain_ro_exclam_k_b.out,
     explain_rro_exclam_k_b.out, explain_rttdi.out, explain_udc_a4i.out,
     explain_vo_exclam_k_b.out, explain_yo_exclam_k_b.out, k_declare_i.out,
     k_explain_ai.out, k_explain_b_i.out, k_explain_f_i.out, k_explain_i.out,
     ns_+typedef_i-c++14.out, ns_c_ns_c.out, typedef_cv_explain_ftd_v.out,
     typedef_v_explain_v.out, run_test.sh, 2c_typedef_i.test,
     2k_typedef_i.test, c_ns_c.test, cast_+i.test, cast_a3i.test,
     cast_bii_d.test, cast_ci.test, cast_constant.test, cast_cpa3cpa5i.test,
     cast_cpa3pa5i.test, cast_cpa9ci.test, cast_cpa9i.test, cast_cpbv_pi.test,
     cast_cpcpi.test, cast_cpfv_pi.test, cast_cpi.test, cast_cppi.test,
     cast_cvpi.test, cast_f_i.test, cast_ll.test, cast_pa3cpa5i.test,
     cast_pa3pa5i.test, cast_pa9i.test, cast_pbv_pi.test, cast_pci.test,
     cast_pcpi.test, cast_pf_i-01.test, cast_pf_i-02.test,
     cast_pfi_i-cknr.test, cast_pfii_i.test, cast_pfkr_i-c17.test,
     cast_pfkr_i-cknr.test, cast_pfv_pi.test, cast_pfx_i.test, cast_pi.test,
     cast_pmi.test, cast_ppi.test, cast_rgi.test, cast_sic.test, cast_sii.test,
     cast_sill.test, cast_type_i.test, cast_typedef_i.test, cast_u.test,
     cast_uc.test, cast_ui.test, cast_ull.test, cast_vcpi.test, cast_vpi.test,
     cdecl--debug.test, cdecl--kolor.test, cdecl--no-semicolon.test,
     cdecl--no-typedefs.test, cdecl-23.test, cdecl-9.test, cdecl-Ii.test,
     cdecl-Iiu.test, cdecl-Il.test, cdecl-Ill.test, cdecl-Ilull.test,
     cdecl-Is.test, cdecl-Iu.test, cdecl-Iui.test, cdecl-Iul,ll.test,
     cdecl-Iul.test, cdecl-Iull.test, cdecl-Iulll.test, cdecl-Iulull.test,
     cdecl-Ius.test, cdecl-Ix.test, cdecl-Sx.test, cdecl-d-+i.test,
     cdecl-d-al8i.test, cdecl-d-alli.test, cdecl-d-cmo_exclam__b.test,
     cdecl-d-eni.test, cdecl-d-f2i_pi.test, cdecl-d-f_v.test,
     cdecl-d-faia4iaviaciast6i_v.test, cdecl-d-pmki.test, cdecl-d-udc_i.test,
     cdecl-d-z.test, cdecl-h.test, cdecl-k.test, cdecl-knever.test,
     cdecl-kxxx.test, cdecl-s.test, cdecl-t.test, cdecl-xx.test, ci.test,
     cl-cast_i.test, cl-declare_i.test, cl-explain_i.test, const_cast_+pi.test,
     const_cast_i-c++03.test, const_cast_i.test, const_cast_pi-c.test,
     const_cast_pi.test, declare_+++i.test, declare_++i-c.test,
     declare_++i.test, declare_+ctor-error.test, declare_+dtor.test,
     declare_+f_v.test, declare_+o_delete_a_pv_v.test,
     declare_+o_delete_pv_v.test, declare_+o_eq_rck_rk++default-c++03.test,
     declare_+o_eq_rck_rk++default.test,
     declare_+o_eq_rck_rk++delete-c++03.test,
     declare_+o_eq_rck_rk++delete.test, declare_+o_new_a_z_pv.test,
     declare_+o_new_z_pv.test, declare_+udc_i.test, declare_+udl_c_i.test,
     declare_0f_v-c.test, declare_0f_v.test, declare_2+f_v.test,
     declare_2a4i.test, declare_2i.test, declare_2pfid_pc.test,
     declare_2pfid_pcc.test, declare_2pfid_v.test, declare_2pi.test,
     declare_a.test, declare_a3a5a7i.test, declare_a3a5i.test,
     declare_a3a5pfv_i.test, declare_a3a5pfv_pi.test,
     declare_a3a5pfv_ppa7a9i.test, declare_a3a5pfv_ppa7a9pc.test,
     declare_a3a5pfv_ppa7i.test, declare_a3a5pfv_ppa7pi.test,
     declare_a3a5pfv_ppi.test, declare_a3pfv_i.test, declare_a3ppfv_i.test,
     declare_a9cpi.test, declare_a9i.test, declare_a9pi.test,
     declare_a_cd_fa_cd_i_i.test, declare_a_cd_fi_i.test, declare_a_cd_i.test,
     declare_a_dep_a_mu_i.test, declare_a_dep_f_v.test,
     declare_a_mu_f_v-01.test, declare_a_mu_f_v-02.test,
     declare_a_mu_i-01.test, declare_a_mu_i-02.test, declare_a_nd_f_i-01.test,
     declare_a_nd_f_i-02.test, declare_a_nua_f.test, declare_ac3i.test,
     declare_af-c++.test, declare_af.test, declare_ai-c++11.test,
     declare_ai.test, declare_alttokens_dtor.test,
     declare_alttokens_o_amper2_rck_b.test,
     declare_alttokens_o_amper_eq_rki_rk.test,
     declare_alttokens_o_amper_rcki_k.test,
     declare_alttokens_o_circ_eq_i_rk.test,
     declare_alttokens_o_circ_rcki_k.test,
     declare_alttokens_o_exclam_eq_rcki_b.test,
     declare_alttokens_o_exclam_rck_b.test,
     declare_alttokens_o_pipe2_rck_b.test,
     declare_alttokens_o_pipe_2rck_k.test,
     declare_alttokens_o_pipe_eq_i_rk.test, declare_alttokens_o_pipe_i_rk.test,
     declare_alttokens_o_tilde_k.test, declare_alttokens_rri.test,
     declare_ari.test, declare_ast3i.test, declare_ati-01.test,
     declare_ati-02.test, declare_ati-c++20.test, declare_atpi-01.test,
     declare_avi.test, declare_b-c++.test, declare_b-c89.test, declare_b.test,
     declare_b_ai.test, declare_b_f_i.test, declare_bii_d.test,
     declare_c-c.test, declare_c.test, declare_c16-c++03.test,
     declare_c16-c99.test, declare_c32-c++03.test, declare_c32-c99.test,
     declare_c8-c++17.test, declare_c_al0-c++.test, declare_c_al0.test,
     declare_c_al8-c++.test, declare_c_al8.test, declare_c_alpv.test,
     declare_cdecl_f.test, declare_cf_v-c.test, declare_cf_v.test,
     declare_ci-ec.test, declare_ci-knr.test, declare_ci.test,
     declare_ck-ec.test, declare_ck.test, declare_ck2-ec.test,
     declare_ck2.test, declare_cnmf_v-c.test, declare_cnmf_v.test,
     declare_co_exclam_k_b.test, declare_config_tdu.test,
     declare_constant.test, declare_cpa3cpa5i.test, declare_cpa3pa5i.test,
     declare_cpa9ci.test, declare_cpa9i.test, declare_cpbv_pi.test,
     declare_cpcpi.test, declare_cpfv_pi.test, declare_cpi.test,
     declare_cpmi.test, declare_cppi.test, declare_crf_v.test,
     declare_cri.test, declare_crrf_v.test, declare_ctor.test,
     declare_ctor_i.test, declare_cu.test, declare_cvpi.test, declare_cxd.test,
     declare_cxf.test, declare_cz-ec.test, declare_cz.test,
     declare_digraphs_a9i.test, declare_digraphs_nrfi_v-c++.test,
     declare_dtor.test, declare_ecf_v.test, declare_efi.test,
     declare_en-c++.test, declare_en-knr.test, declare_en.test,
     declare_en_al4.test, declare_enc-c.test, declare_enc.test,
     declare_enk.test, declare_epctor_i.test, declare_epf.test,
     declare_eta2i.test, declare_etstf_v.test, declare_exf_i.test,
     declare_exi.test, declare_exsti.test, declare_f+k_v.test, declare_f.test,
     declare_f_ai.test, declare_f_f_i.test, declare_f_pi.test,
     declare_f_pmi.test, declare_fa_cd_i_i.test, declare_fa_dep_i_v.test,
     declare_fa_mu_i_v-01.test, declare_fa_mu_i_v-02.test,
     declare_fa_nd_i_v-01.test, declare_fa_nd_i_v-02.test,
     declare_facst3_v.test, declare_facv_v.test, declare_fast3_v.test,
     declare_fastc3_v.test, declare_fav_v.test, declare_fccel_v-01.test,
     declare_fccel_v-02.test, declare_fccel_v-03.test, declare_fcf.test,
     declare_fco_exclam_b.test, declare_ff_i_v.test, declare_ff_v-c.test,
     declare_ff_v.test, declare_fid_v.test, declare_fiiv_v.test,
     declare_fipfi_v_pfi_v.test, declare_fiv_v.test, declare_fixiy_v.test,
     declare_fkr_pi-c17.test, declare_fkr_pi-cknr.test, declare_fkr_pi.test,
     declare_fmf_v.test, declare_fmo_star_rk_rk.test, declare_fn.test,
     declare_fpc_pi.test, declare_fpci_pi.test, declare_fpfc_i_d.test,
     declare_frg_v-c89.test, declare_frg_v.test, declare_frgi_v.test,
     declare_frri_v.test, declare_fsti_v.test, declare_fuw3_v.test,
     declare_fv_pa3a5i.test, declare_fv_pa3a5pi.test, declare_fv_pa3i.test,
     declare_fv_pa3pi.test, declare_fv_v.test, declare_fvx_v.test,
     declare_gau.test, declare_grtpi.test, declare_hb.test, declare_hc.test,
     declare_hc16.test, declare_hc32.test, declare_hc8.test, declare_hd.test,
     declare_hf.test, declare_hl.test, declare_hll.test, declare_hv.test,
     declare_hwt.test, declare_i+++.test, declare_if_v.test,
     declare_ii-c++.test, declare_ii.test, declare_imd.test, declare_imf.test,
     declare_k.test, declare_lb.test, declare_lc.test, declare_lc16.test,
     declare_lc32.test, declare_lc8.test, declare_ld-knr.test, declare_ld.test,
     declare_lf-c.test, declare_lf.test, declare_ll-c89.test,
     declare_ll-knr.test, declare_ll.test, declare_lll.test, declare_lv.test,
     declare_lwt.test, declare_mi.test, declare_mo_amper2_rck_b.test,
     declare_mo_amper_eq_i_rk.test, declare_mo_amper_i_rk.test,
     declare_mo_amper_pk.test, declare_mo_arrow_i.test,
     declare_mo_arrow_pk.test, declare_mo_arrow_star_i_rk.test,
     declare_mo_brackets_i_i.test, declare_mo_circ_eq_i_rk.test,
     declare_mo_comma_i_rk.test, declare_mo_exclam_b.test,
     declare_mo_exclam_eq_i_b.test, declare_mo_greater2_eq_i_rk.test,
     declare_mo_greater2_i_k.test, declare_mo_greater_eq_rcki_b.test,
     declare_mo_less2_eq_i_rk.test, declare_mo_less2_i_k.test,
     declare_mo_less_eq_rcki_b.test, declare_mo_minus_eq_i_rk.test,
     declare_mo_minus_i_k.test, declare_mo_percent_eq_i_rk.test,
     declare_mo_percent_i_k.test, declare_mo_pipe2_rck_b.test,
     declare_mo_pipe_eq_i_rk.test, declare_mo_pipe_i_rk.test,
     declare_mo_plus_eq_i_rk.test, declare_mo_plus_i_k.test,
     declare_mo_slash_eq_i_rk.test, declare_mo_star_eq_i_rk.test,
     declare_mo_star_i_rk.test, declare_mo_star_rk.test,
     declare_mo_tilde_k.test, declare_n.test, declare_nmo_amper2_2rck_b.test,
     declare_nmo_amper_eq_rki_rk.test, declare_nmo_amper_i_i.test,
     declare_nmo_amper_rcki_k.test, declare_nmo_amper_rk_pk.test,
     declare_nmo_arrow_rk_pk.test, declare_nmo_arrow_star_rki_rk.test,
     declare_nmo_brackets_rcki_v.test, declare_nmo_circ_rcki_k.test,
     declare_nmo_comma_rki_rk.test, declare_nmo_eq_rki_rk.test,
     declare_nmo_exclam_eq_ki_b.test, declare_nmo_exclam_rck_b.test,
     declare_nmo_greater2_rcki_k.test, declare_nmo_greater_eq_rcki_b.test,
     declare_nmo_greater_rcki_b.test, declare_nmo_less2_eq_rki_rk.test,
     declare_nmo_less2_rcki_k.test, declare_nmo_less_eq_rcki_b.test,
     declare_nmo_less_rcki_b.test, declare_nmo_minus2_rki_rk.test,
     declare_nmo_minus_eq_rki_rk.test, declare_nmo_minus_rcki_k.test,
     declare_nmo_parens_rck_v.test, declare_nmo_percent_eq_rki_rk.test,
     declare_nmo_percent_rcki_k.test, declare_nmo_pipe2_2rck_b.test,
     declare_nmo_pipe_eq_rki_rk.test, declare_nmo_plus2_rki_rk.test,
     declare_nmo_plus_eq_rki_rk.test, declare_nmo_plus_rcki_k.test,
     declare_nmo_slash_eq_rki_rk.test, declare_nmo_slash_rcki_k.test,
     declare_nmo_star_eq_rki_rk.test, declare_nmo_star_rck_k.test,
     declare_nmo_star_rcki_k.test, declare_nmo_tilde_rck_k.test,
     declare_nrfi_v-01-c++.test, declare_nrfi_v-01-c17.test,
     declare_nrfi_v-02-c++.test, declare_nrfi_v-02-c17.test,
     declare_nrfi_v-03-c++.test, declare_nrfi_v-03-c17.test, declare_nri.test,
     declare_ntf.test, declare_nxf.test, declare_o2++_exclam_b.test,
     declare_o_amper2_2rck_b.test, declare_o_amper2_rck_b.test,
     declare_o_amper_2rck_k.test, declare_o_amper_eq_i_rk.test,
     declare_o_amper_eq_rki_rk.test, declare_o_amper_i_rk.test,
     declare_o_amper_pk.test, declare_o_amper_rcki_k.test,
     declare_o_arrow_i.test, declare_o_arrow_rk_pk.test,
     declare_o_arrow_star_i_rk.test, declare_o_arrow_star_rki_rk.test,
     declare_o_brackets_2i_i-c++20.test, declare_o_brackets_2i_i.test,
     declare_o_circ_eq_i_rk.test, declare_o_colon2_rk_rk.test,
     declare_o_comma_rki_rk.test, declare_o_delete_a_pv_v.test,
     declare_o_delete_pv_v.test, declare_o_dot_k.test,
     declare_o_dot_star_rk_rk.test, declare_o_eq2_i_b.test,
     declare_o_eq2_ki_b.test, declare_o_exclam_2i.test,
     declare_o_exclam_b.test, declare_o_exclam_eq_i_b.test,
     declare_o_exclam_eq_ki_b.test, declare_o_exclam_rck_b.test,
     declare_o_greater2_eq_i_rk.test, declare_o_greater2_i_k.test,
     declare_o_greater2_rcki_k.test, declare_o_greater_eq_rcki_b.test,
     declare_o_less2_eq_i_rk.test, declare_o_less2_i_k.test,
     declare_o_less2_rcki_k.test, declare_o_less_eq_greater_2rck_a-c++17.test,
     declare_o_less_eq_greater_2rck_a.test, declare_o_less_eq_rcki_b.test,
     declare_o_minus2_d_rk.test, declare_o_minus2_rkd_rk.test,
     declare_o_minus_i_k.test, declare_o_minus_iel_i.test,
     declare_o_new_a_z_pv.test, declare_o_new_z_pv.test,
     declare_o_oexclam_k_b.test, declare_o_parens_2i_v.test,
     declare_o_parens_3i_v.test, declare_o_parens_i_v.test,
     declare_o_parens_v.test, declare_o_percent_eq_i_rk.test,
     declare_o_percent_eq_rki_rk.test, declare_o_percent_i_k.test,
     declare_o_percent_rcki_k.test, declare_o_pipe2_2rck_b.test,
     declare_o_pipe2_rck_b.test, declare_o_pipe_eq_i_rk.test,
     declare_o_pipe_eq_rki_rk.test, declare_o_pipe_i_rk.test,
     declare_o_plus2_d_rk.test, declare_o_plus2_rkd_rk.test,
     declare_o_plus_i_k.test, declare_o_plus_iel_i.test,
     declare_o_qmark_colon_k2i_i.test, declare_o_slash_eq_i_rk.test,
     declare_o_star_eq_i_rk.test, declare_o_star_eq_rki_rk.test,
     declare_o_star_i_rk.test, declare_o_star_rck_k.test,
     declare_o_star_rcki_k.test, declare_o_star_rk.test,
     declare_o_tilde_k.test, declare_o_tilde_rck_k.test,
     declare_ovc_udc_i.test, declare_ovyf.test, declare_p_cdecl_f.test,
     declare_pa3cpa5i.test, declare_pa3pa5i.test, declare_pa9i.test,
     declare_pati-01.test, declare_pbv_pi.test, declare_pci-ec.test,
     declare_pcpi.test, declare_pfkr_i-c17.test, declare_pfkr_i.test,
     declare_pfv_pi.test, declare_pfv_ri.test, declare_pi.test,
     declare_pk.test, declare_pmci.test, declare_pmf_i.test,
     declare_pmf_pc.test, declare_pmf_pk.test, declare_pmi.test,
     declare_pmri.test, declare_ppi.test, declare_prgi.test, declare_pri.test,
     declare_puw3.test, declare_pv-knr.test, declare_ra3i.test,
     declare_rci.test, declare_rcpi.test, declare_ref.test, declare_rf_v.test,
     declare_rgf_v.test, declare_rgi.test, declare_ri.test,
     declare_ro_exclam_k_b.test, declare_rpi.test, declare_rrf_v.test,
     declare_rrgi.test, declare_rro_exclam_k_b.test, declare_rtf_v-c.test,
     declare_rtf_v.test, declare_rti.test, declare_rv.test, declare_sib.test,
     declare_sic-knr.test, declare_sic.test, declare_sic16.test,
     declare_sic32.test, declare_sic8.test, declare_sii-knr.test,
     declare_sii.test, declare_sil-knr.test, declare_sill.test,
     declare_siv.test, declare_siwt.test, declare_sta2i.test,
     declare_stctor.test, declare_stf_v.test, declare_stif_v.test,
     declare_stmi.test, declare_sto_delete_pv_v.test, declare_stxxi.test,
     declare_t.test, declare_th_f_v.test, declare_trigraphs_a9i.test,
     declare_trigraphs_nrfi_v-c++.test, declare_trigraphs_nrfi_v-c++14.test,
     declare_trigraphs_o_circ_eq_i_rk.test,
     declare_trigraphs_o_circ_rcki_k.test,
     declare_trigraphs_o_pipe2_2rck_b.test,
     declare_trigraphs_o_pipe_2rck_k.test,
     declare_trigraphs_o_pipe_eq_i_rk.test, declare_trigraphs_o_tilde_k.test,
     declare_type_2i-c++.test, declare_type_i-c++.test, declare_type_i.test,
     declare_type_pfc_i.test, declare_typedef_i.test,
     declare_typedef_i_al8.test, declare_u.test, declare_ub.test,
     declare_uc.test, declare_uc16.test, declare_uc32.test, declare_uc8.test,
     declare_ud.test, declare_udc_a4i.test, declare_udc_i.test,
     declare_udc_rcc.test, declare_udl_pcci_i.test, declare_uf.test,
     declare_ui.test, declare_ull.test, declare_uv.test, declare_uw3.test,
     declare_uwt.test, declare_uz.test, declare_v+f_v.test, declare_v.test,
     declare_vcpi.test, declare_vdtor.test, declare_vf_v-c.test,
     declare_vf_v.test, declare_vi-knr.test, declare_vo_exclam_k_b.test,
     declare_vovyf.test, declare_vpi.test, declare_vri.test,
     declare_wt-c89.test, declare_wt.test, declare_xici.test,
     declare_xvf_i.test, declare_xvi-c.test, declare_xvi.test,
     declare_xxi-c.test, declare_xxi.test, declare_yf.test, declare_yi.test,
     declare_yo_exclam_k_b.test, declare_z.test, declare_zw3.test,
     declare_zz.test, define_++_i.test, define_++c_i.test, define_++sc_i.test,
     define_2++_i.test, define_ai.test, define_c_int_least32_t.test,
     define_eti.test, define_i.test, define_i_declare_i.test,
     define_i_explain_i.test, define_i_int_least32_t.test,
     define_ins_ns_i.test, define_k_declare_k.test,
     define_k_define_k_explain_k+k.test, define_k_explain_pmki.test,
     define_ns_++c_i.test, define_ns_c_ns_c.test, define_rgi.test,
     define_sti.test, dynamic_cast_+pc.test, dynamic_cast_i.test,
     dynamic_cast_pc-c.test, dynamic_cast_pc.test, dynamic_cast_pi.test,
     dynamic_cast_pk.test, en_ns_c.test,
     explain_+co_eq2_rck_b++default-cpp17.test,
     explain_+co_eq2_rck_b++default.test, explain_+compl_dtor.test,
     explain_+ctor-error.test, explain_+ctor.test, explain_+ctor_i.test,
     explain_+dtor-error.test, explain_+dtor.test, explain_+i-c.test,
     explain_+o_delete_a_pv_v.test, explain_+o_delete_pv_v.test,
     explain_+o_eq2_rcki_b.test, explain_+o_eq_rck_rk++default-01.test,
     explain_+o_eq_rck_rk++default-02.test,
     explain_+o_eq_rck_rk++delete-01.test,
     explain_+o_eq_rck_rk++delete-02.test, explain_+o_eq_rck_rk.test,
     explain_+o_exclam_eq_rck_rk++delete.test, explain_+o_new_a_z_pv.test,
     explain_+o_new_z_pv.test, explain_+udc_i.test, explain_+udl_c_i.test,
     explain_0dtor.test, explain_0f_v-01.test, explain_0f_v-02.test,
     explain_0f_v-03.test, explain_0f_v-c.test, explain_0o_amper_rk_pk.test,
     explain_0o_minus2_i_rk.test, explain_0o_minus_rk_rk.test,
     explain_0o_plus2_i_rk.test, explain_0o_plus_rk_rk.test,
     explain_0o_star_rk_rk.test, explain_2+dtor.test, explain_2+n.test,
     explain_2gat_cpi.test, explain_2i-redef-c++.test, explain_2i-redef.test,
     explain_2npi.test, explain_2pii-c89.test, explain_a.test,
     explain_a012i.test, explain_a0b10i.test, explain_a0i.test,
     explain_a0xAi-01.test, explain_a0xai-02.test, explain_a3a5a7i.test,
     explain_a3a5i.test, explain_a3a5pfv_i.test, explain_a3a5pfv_pi.test,
     explain_a3a5pfv_ppa7a9i.test, explain_a3a5pfv_ppa7a9pc.test,
     explain_a3a5pfv_ppa7i.test, explain_a3a5pfv_ppa7pi.test,
     explain_a3a5pfv_ppi.test, explain_a3pfv_i.test, explain_a3ppfv_i.test,
     explain_a4f_i.test, explain_a4pii-c89.test, explain_a4v.test,
     explain_a5fd_i.test, explain_a5fd_pi.test, explain_a9cpi.test,
     explain_a9i.test, explain_a9pi.test, explain_a_cd_fa_cd_i_i.test,
     explain_a_cd_fi_i.test, explain_a_cd_i.test, explain_a_dep_a_mu_i-01.test,
     explain_a_dep_a_mu_i-02.test, explain_a_dep_f_v.test,
     explain_a_dep_i.test, explain_a_mu_f_v.test, explain_a_mu_i.test,
     explain_a_mu_k-01.test, explain_a_mu_k-02.test, explain_a_nd_f_v.test,
     explain_a_nua_f.test, explain_a_nua_k-1.test, explain_a_nua_k-2.test,
     explain_a_using_a_mu_i.test, explain_ac9i.test, explain_af-c++11.test,
     explain_af-c.test, explain_ai-c++11.test, explain_ai.test,
     explain_al0_c-c++.test, explain_al0_c.test, explain_al3_c.test,
     explain_al8_c-c++.test, explain_al8_c.test, explain_al8ty_i.test,
     explain_alf_i.test, explain_alpv_c.test, explain_alrgi.test,
     explain_ari.test, explain_ast9i.test, explain_atci.test,
     explain_ati-01.test, explain_ati-02.test, explain_ati-c++20.test,
     explain_atpi-01.test, explain_atpi-02.test, explain_attda2i.test,
     explain_b-c89.test, explain_b.test, explain_b_ai.test, explain_bii_d.test,
     explain_bitand_i.test, explain_c-02.test, explain_c-c.test,
     explain_c.test, explain_c16-c++03.test, explain_c16-c99.test,
     explain_c32-c++03.test, explain_c32-c99.test, explain_c8-c++17.test,
     explain_c_al3.test, explain_c_gat_pi.test, explain_c_gat_vpi.test,
     explain_cast_++pmi.test, explain_cast_a3a5a7i.test,
     explain_cast_a3a5i.test, explain_cast_a3i.test, explain_cast_ai.test,
     explain_cast_ci.test, explain_cast_cpa3cpa5i.test,
     explain_cast_cpa3pa5i.test, explain_cast_cpa9ci.test,
     explain_cast_cpa9i.test, explain_cast_cpbv_pi.test,
     explain_cast_cpcpi.test, explain_cast_cpfv_pi.test, explain_cast_cpi.test,
     explain_cast_cppi.test, explain_cast_cvpi.test, explain_cast_eti.test,
     explain_cast_ic.test, explain_cast_ll.test, explain_cast_lll.test,
     explain_cast_pa3a5i.test, explain_cast_pa3cpa5i.test,
     explain_cast_pa3pa5i.test, explain_cast_pa9i.test,
     explain_cast_pbv_pi.test, explain_cast_pci.test, explain_cast_pcpi.test,
     explain_cast_pf_i.test, explain_cast_pfpci_i.test,
     explain_cast_pfpi_i.test, explain_cast_pfv_pi.test, explain_cast_pi.test,
     explain_cast_pic.test, explain_cast_pmc++i.test, explain_cast_pmi.test,
     explain_cast_ppi.test, explain_cast_rgi.test, explain_cast_ri.test,
     explain_cast_rtpi.test, explain_cast_sti.test,
     explain_cast_typedef_i.test, explain_cast_ull.test,
     explain_cast_vcpi.test, explain_cast_vpi.test, explain_cdecl_f.test,
     explain_cepctor_i.test, explain_cf_v-c.test, explain_cf_v.test,
     explain_ci-ec.test, explain_ci-knr.test, explain_ci.test, explain_ck.test,
     explain_cmo_less_eq_greater_rck_a++default.test,
     explain_cmo_less_eq_greater_rck_i++default.test,
     explain_co_amper_rk_pk.test, explain_co_eq2_crk_b++default.test,
     explain_co_exclam_k_b.test, explain_co_less_i_b++default.test,
     explain_co_less_rck_i++default.test, explain_co_minus2_i_rk.test,
     explain_co_minus_rk_rk.test, explain_co_plus2_i_rk.test,
     explain_co_plus_rk_rk.test, explain_co_star_rk_rk.test,
     explain_co_tilde_k.test, explain_compl_dtor.test, explain_config_tdu.test,
     explain_const_cast_+pi.test, explain_const_cast_pi-c.test,
     explain_const_cast_pi.test, explain_cpa3cpa5i.test, explain_cpa3pa5i.test,
     explain_cpa9ci.test, explain_cpa9i.test, explain_cpbv_pi.test,
     explain_cpcpi.test, explain_cpfv_pi.test, explain_cpi.test,
     explain_cpmci.test, explain_cpmi.test, explain_cppi.test,
     explain_crf_v.test, explain_cri.test, explain_csi.test,
     explain_ctor++default.test, explain_ctor_2i++default.test,
     explain_ctor_i.test, explain_cu.test, explain_cvf_v.test,
     explain_cvpi.test, explain_cxd.test, explain_cxf.test,
     explain_digraphs_a9i-c89.test, explain_digraphs_a9i.test,
     explain_digraphs_nrfi_v-c++.test, explain_dtor++delete.test,
     explain_dtor.test, explain_dynamic_cast_p+c+.test,
     explain_dynamic_cast_pc-c.test, explain_dynamic_cast_pc.test,
     explain_ec_typedef_i.test, explain_ec_using_i.test,
     explain_ecf_v-Rstr-01.test, explain_ecf_v-Rstr-02.test,
     explain_ecf_v-Rstr-03.test, explain_ecf_v.test, explain_efd.test,
     explain_efi-c.test, explain_efi-itself.test, explain_efi.test,
     explain_efui.test, explain_efz.test, explain_en-knr.test, explain_en.test,
     explain_enc.test, explain_enk.test, explain_epctor_i.test,
     explain_epictor_i.test, explain_epnxctor_i.test, explain_eta2i.test,
     explain_etstf_v.test, explain_exf_i.test, explain_exi.test,
     explain_exsti.test, explain_f+_v.test, explain_f+o_exclam__b.test,
     explain_f+udc_i.test, explain_f2i_v-redef.test, explain_f__pf__v.test,
     explain_f__pv.test, explain_f__v-c++03.test, explain_f__v.test,
     explain_f_ai.test, explain_f_cpmi.test, explain_f_k-knr.test,
     explain_f_pi.test, explain_f_pmi.test, explain_f_ppc.test,
     explain_f_rpii-c89.test, explain_f_typedef_ai.test,
     explain_f_v++default.test, explain_f_v++delete.test, explain_f_v__v.test,
     explain_fa_cd_i_i.test, explain_fa_dep_i_v.test, explain_fa_mu_i_v.test,
     explain_fa_nd_i_v.test, explain_fa_v-c++17.test, explain_fa_v.test,
     explain_fac3_v-c++.test, explain_fac_v-1.test, explain_fac_v.test,
     explain_facst3_v.test, explain_facv_v.test, explain_fast3_v-c++.test,
     explain_fast3_v.test, explain_fastc3_v.test, explain_fastv_v.test,
     explain_fav_v-c++.test, explain_fav_v.test, explain_fccel_v.test,
     explain_fctor_i.test, explain_fcv_v.test, explain_fd_i-cknr.test,
     explain_fel_v.test, explain_felcc_v.test, explain_felel_v.test,
     explain_felv_v.test, explain_ff_i_v-01.test, explain_ff_i_v-02.test,
     explain_ff_v-c.test, explain_ff_v.test, explain_fid_v.test,
     explain_fiiv_v.test, explain_fipfi_v_pfi_v.test, explain_fiv_v.test,
     explain_fixiy_v.test, explain_fkr_i-cknr.test, explain_fkr_pi-c17.test,
     explain_fkr_pi.test, explain_fkr_v.test, explain_fkrel_i.test,
     explain_fn.test, explain_fo_eq2_2crk_b++default.test,
     explain_fo_eq2_2k_b++default.test, explain_fo_eq2_crki_b++default.test,
     explain_fo_eq2_crkk_b++default.test, explain_fo_eq2_crkrk_b++default.test,
     explain_fo_eq2_icrk_b++default.test, explain_fo_eq2_ik_b++default.test,
     explain_fo_eq2_kcrk_b++default.test, explain_fo_eq2_ki_b++default.test,
     explain_fo_eq2_rkcrk_b++default.test, explain_fo_exclam__b.test,
     explain_fo_less_eq_greater_2rck_i++default.test,
     explain_fo_plus_2crk_b++default.test, explain_fpa5d_v.test,
     explain_fpc_pi.test, explain_fpcf_i_v.test, explain_fpci_pi.test,
     explain_fpf_pac_i.test, explain_fpf_v_i.test, explain_fpfc_i_d.test,
     explain_frg_v-c89.test, explain_frg_v.test, explain_frgi_v.test,
     explain_frri_v-c++03.test, explain_frri_v.test, explain_fstf_v.test,
     explain_fsti_v.test, explain_fudc_i.test, explain_fuw3_v.test,
     explain_fv_pa3a5i.test, explain_fv_pa3a5pi.test, explain_fv_pa3i.test,
     explain_fv_pa3pi.test, explain_fv_pi.test, explain_fv_v.test,
     explain_fvel_v.test, explain_fvi_v.test, explain_fvv_v.test,
     explain_fvx_v.test, explain_gat_c_gat_vpi.test, explain_gat_cpi.test,
     explain_gat_i-01.test, explain_gat_i-02.test, explain_gat_i-03.test,
     explain_gat_i-04.test, explain_gat_i-05.test, explain_gat_i-06.test,
     explain_gat_i-07.test, explain_gat_i-08.test, explain_gat_i-09.test,
     explain_gau.test, explain_gif_v.test, explain_grtpi.test,
     explain_grtri.test, explain_grtrri.test, explain_hb.test, explain_hc.test,
     explain_hc16.test, explain_hc32.test, explain_hc8.test, explain_hd.test,
     explain_hf.test, explain_hl.test, explain_hll.test, explain_hv.test,
     explain_hwt.test, explain_i+.test, explain_i+w3.test,
     explain_i-itself.test, explain_i-reserved-c++.test,
     explain_i-reserved-c.test, explain_i2+.test, explain_i_i.test,
     explain_i_msds.test, explain_i_pfd_i.test, explain_i_pi.test,
     explain_i_typedef.test, explain_ic.test, explain_ictor_i.test,
     explain_if_v.test, explain_ii-c++.test, explain_ii.test, explain_imd.test,
     explain_imf.test, explain_inx+ctor.test, explain_inx+dtor.test,
     explain_ipi-redef.test, explain_irg.test, explain_ist.test,
     explain_k-itself.test, explain_k.test, explain_k_msds.test,
     explain_kc.test, explain_keywords.test, explain_ki+.test,
     explain_ktnk.test, explain_lb.test, explain_lc.test, explain_lc16.test,
     explain_lc32.test, explain_lc8.test, explain_ld-knr.test, explain_ld.test,
     explain_lf-c.test, explain_lf.test, explain_ll-c89.test,
     explain_ll-knr.test, explain_ll.test, explain_lll.test, explain_lv.test,
     explain_lwt.test, explain_main_f2c_i.test, explain_main_f4i_i.test,
     explain_main_f_i.test, explain_main_f_si.test, explain_main_f_v.test,
     explain_main_fi2apc_i.test, explain_main_fi2ppc_i.test,
     explain_main_fi_i.test, explain_main_fiapc_hi.test,
     explain_main_fiapc_i.test, explain_main_fiapcc_i.test,
     explain_main_fiapci_i.test, explain_main_fic_i.test,
     explain_main_fipc_i.test, explain_main_fippc_i.test,
     explain_main_fippcc_i.test, explain_main_fippi_i.test,
     explain_main_fkr_i.test, explain_main_fv_i.test,
     explain_main_stf_i-c.test, explain_main_vf_h.test, explain_mi.test,
     explain_mo_less_eq_greater_rck_a.test, explain_mscc_f_v.test,
     explain_mscd_f_v.test, explain_msds_i.test, explain_msds_k.test,
     explain_msfc_f_v.test, explain_mssc_f_v.test, explain_mstc_f_v.test,
     explain_msvc_f_v.test, explain_mswa_f_v.test, explain_n.test,
     explain_na4i.test, explain_nfi_c.test, explain_ni.test,
     explain_npii-c89.test, explain_npiii-c89.test,
     explain_nrfi_v-c++-error.test, explain_nrfi_v-c++.test,
     explain_nrfi_v-c17.test, explain_nrfi_v.test, explain_nsc_typedef.test,
     explain_nxf_v.test, explain_nxff_v.test, explain_nxtf_v.test,
     explain_o_amper2_2rck_b.test, explain_o_amper2_rck_b.test,
     explain_o_amper_2rck_k.test, explain_o_amper_eq_i_rk.test,
     explain_o_amper_eq_rki_rk.test, explain_o_amper_i_i.test,
     explain_o_amper_i_rk.test, explain_o_amper_pk.test,
     explain_o_amper_rcki_k.test, explain_o_amper_rk_pk.test,
     explain_o_arrow_i.test, explain_o_arrow_pk.test,
     explain_o_arrow_star_i_rk.test, explain_o_arrow_star_rki_rk.test,
     explain_o_brackets_2i_i-c++20.test, explain_o_brackets_2i_i.test,
     explain_o_brackets_i_i.test, explain_o_circ_eq_i_rk.test,
     explain_o_circ_eq_rki_rk.test, explain_o_circ_rcki_k.test,
     explain_o_comma_i_rk.test, explain_o_comma_rcki_k.test,
     explain_o_comma_rki_rk.test, explain_o_delete__v.test,
     explain_o_delete_a_pv_v.test, explain_o_delete_i_v.test,
     explain_o_delete_pv_i.test, explain_o_delete_pv_v.test,
     explain_o_eq2_i_b.test, explain_o_eq2_ki_b.test,
     explain_o_eq_rck_v++default.test, explain_o_exclam_2i.test,
     explain_o_exclam__b++delete.test, explain_o_exclam_b.test,
     explain_o_exclam_eq_i_b.test, explain_o_exclam_eq_ki_b.test,
     explain_o_exclam_rck_b.test, explain_o_greater2_eq_i_rk.test,
     explain_o_greater2_eq_rki_rk.test, explain_o_greater2_i_k.test,
     explain_o_greater2_i_rk.test, explain_o_greater2_rcki_k.test,
     explain_o_greater2_rki_rk.test, explain_o_greater_eq_rcki_b.test,
     explain_o_greater_rcki_b.test, explain_o_less2_eq_i_rk.test,
     explain_o_less2_eq_rki_rk.test, explain_o_less2_i_k.test,
     explain_o_less2_i_rk.test, explain_o_less2_rcki_k.test,
     explain_o_less2_rki_rk.test, explain_o_less_2rck_b++default.test,
     explain_o_less_eq_greater_2rck_a.test,
     explain_o_less_eq_greater_2rck_i.test,
     explain_o_less_eq_greater_2rck_std_partial_ordering.test,
     explain_o_less_eq_greater_2rck_std_strong_ordering.test,
     explain_o_less_eq_greater_2rck_std_weak_ordering.test,
     explain_o_less_eq_rcki_b.test, explain_o_less_rck_b++default.test,
     explain_o_less_rcki_b.test, explain_o_minus2_d_rk.test,
     explain_o_minus2_rkd_rk.test, explain_o_minus2_rki_rk.test,
     explain_o_minus_2rck_k.test, explain_o_minus_eq_i_rk.test,
     explain_o_minus_eq_rki_rk.test, explain_o_minus_i_k.test,
     explain_o_minus_iel_i.test, explain_o_minus_rcki_k.test,
     explain_o_new_a_z_pv.test, explain_o_new_i_pv.test,
     explain_o_new_z_pv.test, explain_o_new_z_z.test,
     explain_o_new_zrrk_pv.test, explain_o_parens_2i_v.test,
     explain_o_parens_3i_v.test, explain_o_parens_i_v.test,
     explain_o_parens_v.test, explain_o_percent_2rck_k.test,
     explain_o_percent_eq_i_rk.test, explain_o_percent_eq_rki_rk.test,
     explain_o_percent_i_k.test, explain_o_percent_rcki_k.test,
     explain_o_pipe2_2rck_b.test, explain_o_pipe2_rck_b.test,
     explain_o_pipe_2rck_k.test, explain_o_pipe_eq_i_rk.test,
     explain_o_pipe_eq_rki_rk.test, explain_o_pipe_i_rk.test,
     explain_o_plus2__rk.test, explain_o_plus2_d_rk.test,
     explain_o_plus2_rk_rk.test, explain_o_plus2_rkd_rk.test,
     explain_o_plus2_rki_rk.test, explain_o_plus_2rck_k.test,
     explain_o_plus_eq_i_rk.test, explain_o_plus_eq_rki_rk.test,
     explain_o_plus_i_k.test, explain_o_plus_iel_i.test,
     explain_o_plus_kel.test, explain_o_plus_rcki_k.test,
     explain_o_qmark_colon_k2i_i.test, explain_o_slash_2rck_k.test,
     explain_o_slash_eq_i_rk.test, explain_o_slash_eq_rki_rk.test,
     explain_o_slash_rcki_k.test, explain_o_star_2rck_k.test,
     explain_o_star_eq_i_rk.test, explain_o_star_eq_rki_rk.test,
     explain_o_star_i_rk.test, explain_o_star_rck_k.test,
     explain_o_star_rcki_k.test, explain_o_star_rk.test,
     explain_o_tilde_k.test, explain_o_tilde_rck_k.test, explain_oi.test,
     explain_ov_o_exclam_k_b.test, explain_ovc_udc_i.test,
     explain_ovo_amper_rk_pk.test, explain_ovo_minus2_i_rk.test,
     explain_ovo_minus_rk_rk.test, explain_ovo_plus2_i_rk.test,
     explain_ovo_plus_rk_rk.test, explain_ovo_star_rk_rk.test,
     explain_ovyf.test, explain_p_cdecl_v.test, explain_p_mscd_f.test,
     explain_p_msds_i.test, explain_p_mssc_f_v.test, explain_p_typedef_ri.test,
     explain_pa3a5i.test, explain_pa3cpa5i.test, explain_pa3pa5i.test,
     explain_pa9i.test, explain_pati-01.test, explain_pati-02.test,
     explain_pbv_pi.test, explain_pcf_i.test, explain_pcpi.test,
     explain_pfv_pi.test, explain_pi.test, explain_pii-c89.test,
     explain_piii-c89.test, explain_pmf_i.test, explain_pmf_pc.test,
     explain_pmfii_pk.test, explain_pmi-c.test, explain_pmi.test,
     explain_pmrgi.test, explain_pp_mssc_f_v.test, explain_ppi.test,
     explain_pri.test, explain_prri.test, explain_ptdv.test, explain_puw3.test,
     explain_pv-knr.test, explain_ra3i.test,
     explain_reinterpret_cast_pv-c.test, explain_reinterpret_cast_pv.test,
     explain_rf_i.test, explain_rf_v-c++03.test, explain_rf_v.test,
     explain_rgf_v.test, explain_rgi-c++11.test, explain_rgi.test,
     explain_rgk.test, explain_ri-c.test, explain_ri.test,
     explain_ro_amper_rk_pk.test, explain_ro_exclam_k_b.test,
     explain_ro_minus2_i_rk.test, explain_ro_minus_rk_rk.test,
     explain_ro_plus2_i_rk.test, explain_ro_plus_rk_rk.test,
     explain_ro_star_rk_rk.test, explain_rr.test, explain_rrf_v-c++03.test,
     explain_rrf_v.test, explain_rrgi.test, explain_rro_amper_rk_pk.test,
     explain_rro_exclam_k_b.test, explain_rro_minus2_i_rk.test,
     explain_rro_minus_rk_rk.test, explain_rro_plus2_i_rk.test,
     explain_rro_plus_rk_rk.test, explain_rro_star_rk_rk.test,
     explain_rrr-1.test, explain_rrr-2.test, explain_rrrr.test,
     explain_rtf_v-error.test, explain_rtpf_v.test,
     explain_rtpi-c++-error.test, explain_rtpi.test, explain_rttdi.test,
     explain_rttdpi.test, explain_rv.test, explain_sib.test,
     explain_sic-knr.test, explain_sic.test, explain_sic16.test,
     explain_sic32.test, explain_sic8.test, explain_sii-knr.test,
     explain_sil-knr.test, explain_siv.test, explain_siwt.test,
     explain_sta2i.test, explain_static_cast_i+.test,
     explain_static_cast_i-c.test, explain_static_cast_i.test,
     explain_stcf_v.test, explain_stf__i.test, explain_stf_v.test,
     explain_sti.test, explain_stmi.test, explain_sto_delete_pv_v.test,
     explain_sto_new_z_pv.test, explain_strf_v.test, explain_strrf_v.test,
     explain_studc_i.test, explain_stxxi.test, explain_th_f_v-c++14.test,
     explain_th_f_v.test, explain_tli-c99.test, explain_tli.test,
     explain_trigraphs_a9i-c++.test, explain_trigraphs_a9i.test,
     explain_trigraphs_nrfi_v-c++11.test,
     explain_trigraphs_o_circ_eq_i_rk.test,
     explain_trigraphs_o_circ_rcki_k.test,
     explain_trigraphs_o_pipe2_2rck_b.test,
     explain_trigraphs_o_pipe_2rck_k.test,
     explain_trigraphs_o_pipe_eq_i_rk.test, explain_trigraphs_o_tilde_k.test,
     explain_type_i.test, explain_typedef_ci32.test, explain_typedef_i.test,
     explain_typedef_ii32.test, explain_typedef_pfc_i.test,
     explain_typedef_ulz.test, explain_ub.test, explain_uc.test,
     explain_uc16.test, explain_uc32.test, explain_uc8.test, explain_ud.test,
     explain_udc_a4i.test, explain_udc_i.test, explain_udc_rcc.test,
     explain_udl_2c_i.test, explain_udl_3c_i.test, explain_udl__i.test,
     explain_udl_c16_i.test, explain_udl_c32_i.test, explain_udl_c8_i.test,
     explain_udl_c_i-01.test, explain_udl_c_i-c.test, explain_udl_c_i.test,
     explain_udl_ld_i.test, explain_udl_pcc16ul_i.test,
     explain_udl_pcc16z_i.test, explain_udl_pcc32ul_i.test,
     explain_udl_pcc32z_i.test, explain_udl_pcc8ul_i.test,
     explain_udl_pcc8z_i.test, explain_udl_pcc_i.test,
     explain_udl_pccul_i.test, explain_udl_pccz_i.test,
     explain_udl_pccz_ul.test, explain_udl_pcwtul_i.test,
     explain_udl_pcwtz_i.test, explain_udl_piul_i.test, explain_udl_ul_i.test,
     explain_udl_ull_i.test, explain_udl_wt_i.test, explain_uf.test,
     explain_ull.test, explain_unknown_attribute.test, explain_using_a3i.test,
     explain_using_a_mu_i.test, explain_using_pfi_v-c.test,
     explain_using_pfi_v.test, explain_uv.test, explain_uw3.test,
     explain_uwt.test, explain_v+f_v.test, explain_v.test,
     explain_vcompl_dtor.test, explain_vcpi.test, explain_vdtor.test,
     explain_vf_v-c.test, explain_vf_v.test, explain_vi-knr.test,
     explain_vo_amper_rk_pk.test, explain_vo_exclam_k_b.test,
     explain_vo_minus2_i_rk.test, explain_vo_minus_rk_rk.test,
     explain_vo_plus2_i_rk.test, explain_vo_plus_rk_rk.test,
     explain_vo_star_rk_rk.test, explain_vovyf-c.test, explain_vovyf.test,
     explain_vpi.test, explain_vv_o_new_z.test, explain_wt-c89.test,
     explain_wt.test, explain_xif_i.test, explain_xxctor.test,
     explain_xxf_v-c++11.test, explain_xxi-c.test, explain_xxi.test,
     explain_ydtor.test, explain_yf.test, explain_yi.test,
     explain_yo_amper_rk_pk.test, explain_yo_exclam_k_b.test,
     explain_yo_minus2_i_rk.test, explain_yo_minus_rk_rk.test,
     explain_yo_plus2_i_rk.test, explain_yo_plus_rk_rk.test,
     explain_yo_star_rk_rk.test, explain_z.test, explain_zw3.test,
     explain_zz.test, file-cast_i.test, file-cast_x.test, file-declare_i.test,
     file-declare_x.test, file-explain_i.test, file-explain_x.test,
     help-c++.test, help-c.test, help_command-c++.test,
     help_command-c++03.test, help_command-c.test, help_commands-c++.test,
     help_commands-c.test, help_english-c++.test, help_english-c++03.test,
     help_english-c.test, help_english-c89.test, help_english-knr.test,
     help_options.test, i.test, ins_ns_typedef_i.test, ins_typedef_i.test,
     k_declare_i.test, k_explain_ai.test, k_explain_b_i.test,
     k_explain_f_i.test, k_explain_i.test, k_ns_typedef_i.test,
     k_typedef_i-c.test, k_typedef_i_explain_i.test,
     k_typedef_i_typedef_tn_i.test, ns_+typedef_i-c++14.test,
     ns_+typedef_i.test, ns_c_ns_+e.test, ns_c_ns_c.test, ns_c_typedef_i.test,
     ns_ins_ns_typedef_i.test, ns_ins_typedef_i.test, ns_k_typedef_i.test,
     ns_n_typedef_i.test, ns_ns_typedef_i-c++14.test, ns_ns_typedef_i.test,
     ns_typedef_i.test, ns_using_i.test, reinterpret_cast_+pv.test,
     reinterpret_cast_pv-c.test, reinterpret_cast_pv.test,
     reinterpret_cast_v.test, retypedef-01.test, set.test, set_-e-a--st-.test,
     set_alt-tokens.test, set_bison-debug.test, set_c++.test, set_c++03.test,
     set_c++11.test, set_c++14.test, set_c++17.test, set_c++20.test,
     set_c++23.test, set_c++98.test, set_c.test, set_c11.test, set_c17.test,
     set_c18.test, set_c89.test, set_c90.test, set_c95.test, set_c99.test,
     set_cknr.test, set_debug.test, set_digraphs-c89.test, set_digraphs.test,
     set_digraphs_c89.test, set_ea.test, set_east-const.test, set_east.test,
     set_eastconst.test, set_expl.test, set_explain-by-default.test,
     set_explain.test, set_expli.test, set_explicit-ecsu.test,
     set_explicit-ecsu_ecsu.test, set_explicit-ecsu_x.test,
     set_explicit-int.test, set_explicit-int_i.test, set_explicit-int_u.test,
     set_explicit-int_x.test, set_graphs.test, set_knr.test, set_knrc.test,
     set_lang_c++.test, set_lang_xxx.test, set_nobison-debug.test,
     set_nodebug.test, set_nodigraphs.test, set_noexplain-by-default.test,
     set_noexplain.test, set_noexplicit-int.test, set_noexplicit-int_u.test,
     set_nographs.test, set_noprompt.test, set_nosemicolon.test,
     set_nousing-c++.test, set_options.test, set_prompt.test,
     set_prompt_x.test, set_semicolon.test, set_trigraphs-c++.test,
     set_trigraphs-c++17.test, set_trigraphs-cknr.test, set_trigraphs.test,
     set_xxx.test, show_all-c++.test, show_all.test,
     show_all_predefined-c++.test, show_all_predefined.test,
     show_all_predefined_glob-01.test, show_all_predefined_glob-02.test,
     show_all_predefined_glob-03.test, show_all_predefined_glob-04.test,
     show_all_predefined_typedef-c++.test, show_all_typedef.test,
     show_cpf_cpcc_v_using.test, show_cpi_using.test, show_cpmki_using.test,
     show_foo.test, show_int8_t.test, show_int8_t_typedef.test,
     show_predefined-c++.test, show_predefined.test,
     show_predefined_typedef.test, show_predefined_using.test, show_user.test,
     show_user_typedef.test, show_using-c++03.test, static_cast_+i.test,
     static_cast_i-c.test, static_cast_i.test, typedef_ai.test,
     typedef_c_int_least32_t.test, typedef_cv_explain_ftd_v.test,
     typedef_eti.test, typedef_fi_v_show.test, typedef_i+.test, typedef_i.test,
     typedef_i_declare_i.test, typedef_i_explain_i.test,
     typedef_i_int_least32_t.test, typedef_i_pi.test, typedef_iw3.test,
     typedef_pfi_v_show.test, typedef_rgi.test, typedef_sti.test,
     typedef_tni.test, typedef_v.test, typedef_v_explain_v.test, using_ai.test,
     using_c_int_least32_t.test, using_config_i.test, using_eti.test,
     using_f-name_v.test, using_i-c.test, using_i.test, using_i_declare_i.test,
     using_i_explain_i.test, using_i_int_least32_t.test,
     using_pfi_v_show_f.test, using_rgi.test, using_sti.test,
     xec_explain_a.test, xec_explain_ha.test, xec_explain_hr.test,
     xec_explain_la.test, xec_explain_lla.test, xec_explain_llr.test,
     xec_explain_lr.test, xec_explain_r.test, xec_explain_t.test,
     xec_explain_ta.test, xec_explain_ti.test, xec_explain_tr.test,
     xec_explain_tua.test, xec_explain_ua.test, xec_explain_uhta.test,
     xec_explain_uhtr.test, xec_explain_ur.test, xec_explain_uta.test,
     xupc_declare_a2di.test, xupc_declare_dpi.test, xupc_declare_pdi.test,
     xupc_declare_ptdi.test, xupc_declare_rdi.test, xupc_declare_rdpi.test,
     xupc_declare_tdi.test, xupc_explain_da2i.test, xupc_explain_dpi.test,
     xupc_explain_dq+a4i.test, xupc_explain_pdi.test, xupc_explain_ptdi.test,
     xupc_explain_rdi.test, xupc_explain_rdpi.test, xupc_explain_ri.test,
     xupc_explain_tdi.test, update_test.sh: Changed tests to shell "here"
     documents for more flexibility.
   * color.c, lexer.l, util.c, util.h: Now checking for plain file.
   * lexer.l, include-err-01.out, include-too_many_files.out,
     include-unquoted.out: Now including path in error message.

2022-07-02  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am: Test renaming.
   * red_black.c: Sorted functions.
   * red_black.c: Fixed NDEBUG build.
   * red_black.c: s/surrogate->parent/RB_ROOT(tree)/
   * red_black.c: s/rb_tree_repair_node/rb_tree_repair/
   * red_black.c, red_black_test.c: Removed rb_tree_check() from
     rb_node_rotate(); more tests.
   * red_black.c: s/rb_tree_rotate_node/rb_node_rotate/
   * red_black.c: Added is_full().
   * red_black.c: s/rb_tree_node_successor/rb_node_next/
   * red_black.c, red_black.h, red_black_test.c: Put nil inside each rb_tree
     the way the original code had it.

2022-07-01  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Now allowing no space between include and ".
   * c_typedef.c, red_black.c, red_black.h, red_black_test.c: Added
     rb_insert_rv_t.
   * red_black.c: Removed assert( rb_nil.color == RB_BLACK );
   * red_black.c, red_black_test.c: Fixed bug from original code that altered
     the nil node.
   * red_black.c: Added assert( rb_nil_is_nil() );

2022-06-29  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: s/supported//
   * cdecl.1: Mentioned lambdas as not being supported.

2022-06-28  Paul J. Lucas <paul@lucasmail.org>

   * util.h: s/uint64_t/uintmax_t/
   * lexer.l: Now using include_path_stack.

2022-06-27  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am, include_1.cdeclrc, include_2.cdeclrc,
     include-nested.out, include-nested.test: Nested include test.
   * lexer.l: Added asserts.
   * cdecl_command.c, lexer.l, literals.c, literals.h: Added push_file() and
     pop_file().
   * cdecl.1: Updated man page.
   * lexer.l, test/Makefile.am, include-unquoted.out, include-unquoted.test:
     More tests.
   * test/Makefile.am, include-ok.out, include-too_many_files.out,
     include-ok.test, include-too_many_files.test: More tests.
   * help.c, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c++03.out, help_command-c.out, help_commands-c++.out,
     help_commands-c.out: Updated help.
   * test/Makefile.am, declare_config_tdu.test, explain_config_tdu.test: Test
     renaming.

2022-06-26  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Added "include" command.

2022-06-21  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, src/Makefile.am: Added `--enable-msan` and `--enable-ubsan`;
     renamed `--enable-address-sanitizer` to `--enable-asan`.

2022-06-19  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c: Fixed undefined behavior bug.

2022-06-14  Paul J. Lucas <paul@lucasmail.org>

   * strbuf.c: Removed new_len.
   * strbuf.c: Added args_len.
   * strbuf.c: Made strbuf_paths() slightly more efficient by reserving space
     for '/' and comp_len.

2022-06-13  Paul J. Lucas <paul@lucasmail.org>

   * strbuf.c: Avoid undefined behavior of adding an offset to NULL.

2022-06-12  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, cdecl-d-cmo_exclam__b.out: Reworked the way C++ operators are
     parsed so as not to set oper_id on the type's AST.
   * c_ast_util.h: s/type/kind/
   * c_ast_check.c, c_ast_util.c, c_ast_util.h: Added
     c_ast_is_ref_to_kind_any().
   * c_ast.c, c_sname.c, c_type.c, c_type.h, english.c, gibberish.c:
     s/c_type_equal/c_type_equiv/

2022-06-11  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am, declare_en-c++.out, declare_en-c++.test: New enum test.
   * c_type.c, c_type.h, gibberish.c, declare_enc.out, declare_enk.out: The
     `explicit-ecsu` option for enums is fixed.

2022-06-10  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am: Replaced "=" in filenames with either "++" or "_" since
     it caused problems on some versions of Make.

2022-06-09  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am: Renamed 's' files to 'si' for signed.
   * test/Makefile.am: Renamed 's' files to 'st' for static.
   * c_ast_check.c, c_ast_util.c, c_sname.h, english.c, slist.c, util.c,
     util.h: Split REINTERPRET_CAST into INTEGER_CAST and POINTER_CAST because
     it's not possible to implement C++'s `reinterpret_cast` as a single macro
     in C.

2022-06-05  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added suggestions to error messages in certain cases when a
     keyword is expected.
   * did_you_mean.c: No longer offering a suggestion for an exact match.

2022-06-03  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c: Reworked loop in is_command() to use `continue`.

2022-06-02  Paul J. Lucas <paul@lucasmail.org>

   * print.c: Reworked asserts.

2022-06-01  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, help.c, help_english-c++.out, help_english-c++03.out: Added
     `explicit` to the help.
   * autocomplete.c: The `show` command now has command-specific
     autocompletion.

2022-05-31  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added temporary variable.
   * print.c: Don't need assert here.
   * print.c: Now turning off only C_GIB_USING bit.
   * cdecl.c, read_line.c, util.c, util.h: Added null_if_empty();
     s/str_is_blank()/str_is_empty()/

2022-05-30  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, cli_options.c: Moved setting of "me" to main().
   * c_ast_check.c, gibberish.c, strbuf.c: Added PJL_WARN_UNUSED_RESULT.
   * gibberish.c: s/cdecl_fout/gout/
   * cdecl.1, color.c: TERM is no longer used when determining whether to print
     in color.

2022-05-29  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Removed (uint64_t) from CONST_CAST.
   * cli_options.c, set_options.c, cdecl-Ix.out, cdecl-Sx.out, cdecl-kxxx.out,
     cdecl-xx.out, set_explicit-ecsu=x.out, set_explicit-int=x.out: Normalized
     printing of invalid value for option.

2022-05-28  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Removed PUTC() -- not used.
   * cli_options.c: Now printing non-error usage message to cdecl_fout.
   * cli_options.c: Whitespace.
   * cli_options.c: Now printing the version to cdecl_fout.

2022-05-27  Paul J. Lucas <paul@lucasmail.org>

   * util.c: home_dir() now checks for whitespace-only values.

2022-05-26  Paul J. Lucas <paul@lucasmail.org>

   * util.c: Now defensively checking "home" for empty string.
   * c_ast.c, c_ast_check.c, c_ast_util.c, c_kind.c, c_lang.c, c_lang.h,
     c_type.c, c_typedef.c, english.c, gibberish.c, parser.y, util.h: Reworked
     bit functions and tightened asserts.

2022-05-23  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c: Simplified assert().
   * parser.y: Simplification in type_modifier_c_type re: LEXER_FIND_TYPES.
   * lexer.h, lexer.l, parser.y: s/LEXER_FIND_TYPEDEFS/LEXER_FIND_TYPES/
   * lexer.h, lexer.l: s/LEXER_FIND_ALL/LEXER_FIND_ANY/

2022-05-22  Paul J. Lucas <paul@lucasmail.org>

   * help.c, help_options.out: Help for options types was added.
   * util.c: Simlification.
   * print.c: Now incrementing *ppelt only if dym->token != NULL.
   * set_options.c: print_options() now takes FILE*.
   * c_typedef.c, c_typedef.h, parser.y: Added "is_" prefix to some bool
     variables.
   * c_ast_check.c, english.c: s/C_MAX(17)/KNR_FUNC_DEFINITION/
   * c_ast_check.c, english.c: More use of OPT_LANG_IS().
   * c_ast_check.c, test/Makefile.am, explain_nrfi_v-c17.out,
     explain_nrfi_v.out, declare_nrfi_v-01-c17.test,
     declare_nrfi_v-02-c17.test, declare_nrfi_v-03-c17.test,
     explain_nrfi_v-c17.test: _Noreturn is now deprecated in C2X.

2022-05-20  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, print.h, set_options.h, slist.h, types.h: Moved typedefs.

2022-05-19  Paul J. Lucas <paul@lucasmail.org>

   * set_options.c: Got rid of DECLARE_SET_OPTION_FN().
   * autocomplete.c, did_you_mean.c, set_options.c, set_options.h:
     s/SET_OPT_/SET_OPTION_/
   * autocomplete.c, did_you_mean.c, set_options.c, set_options.h:
     s/set_option_type/set_option_kind/
   * parser.y, set_options.c, set_options.h: s/option_set/set_option/

2022-05-17  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, strbuf.c, strbuf.h, util.c, util.h: Added strbuf_paths().
   * cdecl.c: Added conf_init().

2022-05-16  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, test/Makefile.am, k_declare_i.out, k_declare_i.test: Now
     checking that previously declared types in pseudo-English are not being
     used as objects.
   * parser.y: s/$4/decl_ast/

2022-05-15  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, c_sname.c, c_typedef.c, c_typedef.h, english.h, gibberish.h,
     parser.y, print.c, print.h, define_c_int_least32_t.out,
     explain_typedef_ci32.out, typedef_c_int_least32_t.out,
     using_c_int_least32_t.out: Now printing types in error messages as they
     were originally defined (pseudo-English vs. gibberish) in more cases.

2022-05-14  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_ast_util.h, parser.y: Moved c_ast_is_typename_ok() and
     c_ast_join_type_decl() to parser.y.
   * c_ast_util.c, c_ast_util.h, parser.y: c_ast_join_type_decl() now
     duplicates decl_ast if necessary.
   * c_ast_check.c, c_kind.h, gibberish.c, parser.y:
     s/K_ENUM_CLASS_STRUCT_UNION/K_ANY_ENUM_CLASS_STRUCT_UNION/ to connote that
     it's not a single kind so == should not be used for comparison.

2022-05-13  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, config_using_i.cdeclrc: No longer temporarily setting language to
     latest C++ while reading configuration file.
   * cdecl.1: Added missing langauge feature support.

2022-05-12  Paul J. Lucas <paul@lucasmail.org>

   * Makefile.am, src/Makefile.am: Fixed distclean and distclean-coverage
     rules.
   * Makefile.am: Added to .PHONY.

2022-05-11  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, c_ast_check.c, c_ast_util.c, c_kind.c, c_kind.h,
     c_lang.h, dump.c, english.c, gibberish.c, parser.y, types.h,
     test/Makefile.am, cdecl-d-cmo_exclam__b.out, cdecl-d-eni.out,
     declare_en_al4.out, declare_en_al4.test: Split K_ENUM_CLASS_STRUCT_UNION
     into K_ENUM and K_CLASS_STRUCT_UNION; now allow _Alignas for enums in C.
   * c_ast_check.c: OPT_LANG_IS() clean-up.
   * gibberish.c, gibberish.h, parser.y: Made c_ast_gibberish() use
     C_GIB_FINAL_SEMI as well.
   * gibberish.c: Added assert().
   * c_ast_check.c: Removed unecessary uses of c_kind_name().

2022-05-10  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, cdecl.c: Now can use the CDECLRC environment variable.
   * cdecl.c, cdecl.h, cli_options.c, options.c, options.h, print.c, print.h:
     s/opt_conf_file/opt_conf_path/; added print_params.conf_path;
     read_conf_file() now takes a path; CONF_FILE_NAME_DEFAULT no longer
     includes the '.'.

2022-05-09  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, test/Makefile.am, k_explain_ai.out, k_explain_b_i.out,
     k_explain_f_i.out, k_explain_i.out, k_explain_ai.test, k_explain_b_i.test,
     k_explain_f_i.test, k_explain_i.test: Now checking that previously
     declared types are not being used as objects.
   * c_ast_util.c: s/for_ast/raw_ast/

2022-05-08  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Now correctly duplicating the type in typedef_type_decl_c_ast.
   * parser.y: Added decl_ast local variables.

2022-05-06  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, explain_typedef_ci32.out: Better error location when
     explaining a wrong existing typedef.
   * c_typedef.c, c_typedef.h, parser.y: Move type equivalence checking out of
     c_typedef_add().

2022-05-05  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Fixed sign conversion warning.
   * c_ast_util.c, gibberish.c, gibberish.h, parser.y, en_ns_c.out: Added
     C_GIB_FINAL_SEMI flag to simplify calling c_typedef_gibberish().
   * dump.c, cdecl--debug.out, cdecl-d-cmo_exclam__b.out, cdecl-d-f2i_pi.out:
     When dumping a location, no longer dumping last_column if it's the same as
     first_column.
   * parser.y: s/SHOW_USER_TYPES/SHOW_USER_DEFINED_TYPES/
   * c_sglob.h, parser.y: Added c_sglob_empty().

2022-05-04  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added "Creator of ...".
   * c_ast_check.c, cdecl.c, english.c, gibberish.c, parser.y,
     declare_pmri.out: Using fewer L_* constants.
   * c_sname.c, english.c, english.h, gibberish.h, parser.y:
     s/c_ast_english_type/c_typedef_english/

2022-05-03  Paul J. Lucas <paul@lucasmail.org>

   * english.c: s/cdecl_out/eout/
   * c_sname.c, english.c, english.h, parser.y: s/c_ast_explain/c_ast_english/
   * english.c, english.h, parser.y: Eliminated public c_ast_explain_cast().
   * english.c, english.h, parser.y: Now setting the cast_ast's sname so it no
     longer has to be passed as an argument.
   * gibberish.c: c_cast_gibberish() no longer accepts C_CAST_NONE nor C_CAST_C
     since those can never be emitted in gibberish.
   * c_type.c: Now using LANG_ATTRIBUTES.
   * c_kind.c: Now using LANG_ENUM.

2022-05-02  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: Reworked asserts.
   * gibberish.c: Added assert.
   * gibberish.c: Whitespace.
   * gibberish.c, parser.y: c_ast_gibberish() now prints casts itself.
   * c_ast_check.c, gibberish.c: s/LANG_C_KNR/PROTOTYPES/
   * options.c, options.h: s/btid/btids/
   * options.c, options.h: s/tid/btid/
   * c_ast_util.c: Now using c_tid_check().

2022-05-01  Paul J. Lucas <paul@lucasmail.org>

   * Doxyfile: s/WITH_TERM_COLUMNS/ENABLE_TERM_SIZE/ for docs.
   * Doxyfile, makedoc.sh: Eliminated "html" subdirectory in docs.

2022-04-30  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am, parser.y: Moved check.[ch] -> c_ast_check.[ch].
   * c_sname.c, c_sname.h, check.c, check.h: Moved c_sname_check() to
     c_sname.[ch].
   * c_type.c, c_type.h: Made c_type_get_tid_ptr() static.
   * c_lang.h: Removed cast.
   * c_type.c, c_type.h: Made c_tid_to_type() static.

2022-04-29  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c: Now using c_tid_check().
   * c_type.c: s/c_tid_simplify/c_tid_nosigned/
   * c_type.c: Missed uses of LANG_CONST and LANG_VOLATILE.

2022-04-28  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, check.c, types.h: s/c_ast_param_t/c_param_t/
   * set_options.c, set_explicit-ecsu.out, set_explicit-int.out: Made error
     messages consistent.

2022-04-26  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.h: Now using member designators.

2022-04-25  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.h, c_keyword.c, c_lang.h, c_type.c, c_type.h, cdecl_command.c,
     cdecl_keyword.c, check.c, gibberish.c, help.c, lexer.l, options.h,
     parser.y, set_options.c, test/Makefile.am, cast_pfx_i.out,
     declare_fkr_pi.out, declare_pfkr_i.out, declare_th_f_v.out,
     explain_fkr_pi.out, explain_fkr_v.out, explain_th_f_v-c++14.test: Now
     using LANG_feature macros rather than specific language version macros.

2022-04-22  Paul J. Lucas <paul@lucasmail.org>

   * check.c, gibberish.c, help.c, options.h: Added LANG_VLA plus other
     LAPG_OPT_* clean-up.

2022-04-21  Paul J. Lucas <paul@lucasmail.org>

   * check.c: Removed error_unknown_name().
   * check.c: s/fl_print_error_unknown_name/fl_print_error_unknown_name/
   * c_typedef.c: Now using "if...else".
   * c_ast_util.c, c_typedef.c, c_typedef.h, gibberish.c, parser.y:
     s/c_typedef::user_defined/predefined/; added C_TYPEDEF_AST_LIT().
   * c_typedef.c: Eliminated user_defined variable.

2022-04-20  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added some missing K&R C typedefs.

2022-04-18  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, c_ast_util.c, c_ast_util.h, check.c, test/Makefile.am,
     explain_attda2i.out, typedef_v_explain_v.out, explain_attda2i.test:
     _Atomic arrays are now correctly forbidden.
   * c_ast_util.c: Added PJL_WARN_UNUSED_RESULT.

2022-04-15  Paul J. Lucas <paul@lucasmail.org>

   * red_black_test.c, slist_test.c: Added #include <stdnoreturn.h>

2022-04-14  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c, cdecl.c: Added assert()s.

2022-04-11  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c: Removed unnecessary check.

2022-04-04  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c: Now using LANG_C_CPP_MAX() more.
   * c_type.c: s/.../LANG_IDS/

2022-04-03  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.c: s/c_sname_impl/c_sname_name_impl/
   * c_sname.c, c_sname.h, lexer.l: Folded c_sname_parse_dtor() into
     c_sname_parse_impl().
   * lexer.l: Added assert().

2022-04-02  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: Now using OPT_LANG_IS(RANGE(...)).
   * gibberish.c: Removed code that's no longer needd.

2022-04-01  Paul J. Lucas <paul@lucasmail.org>

   * cli_options.c: Now printing program name in usage message instead of
     always "cdecl".

2022-03-31  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Removed mostly pointless cast.

2022-03-27  Paul J. Lucas <paul@lucasmail.org>

   * c_sglob.c: Reworked assert().
   * c_kind.c, english.c, cdecl-d-pmki.out, explain_pmi-c.out,
     explain_pmrgi.out: Changed K_POINTER_TO_MEMBER's name to "pointer to
     member" (without '-').

2022-03-24  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, c_ast_util.h: Moved c_ast_parent_is_kind().

2022-03-21  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: Simplification.

2022-03-19  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, cdecl.h, cli_options.c, print.c: Removed is_input_a_tty.

2022-03-18  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am, autocomplete.c, cdecl.c, cdecl.h, cdecl_command.c,
     cdecl_command.h, did_you_mean.c, literals.h, types.h: Split out
     cdecl_command.[ch].
   * dam_lev.c: Added PJL_WARN_UNUSED_RESULT.

2022-03-16  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c, c_type.h: Using c_tid_check() more.
   * c_type.h: Removed duplicate TS_TYPEDEF from TS_FUNC_LIKE_CPP.

2022-03-14  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: s/bitmask/flags/
   * gibberish.c, gibberish.h, parser.y, types.h: s/c_gib_flags_t/unsigned/
   * c_typedef.c, cdecl.c, strbuf.c, util.c, util.h: s/IF_EXIT/perror_exit_if/

2022-03-13  Paul J. Lucas <paul@lucasmail.org>

   * pjl_compile.m4: Updated copyright year to 2022.

2022-03-12  Paul J. Lucas <paul@lucasmail.org>

   * c_type.h: Silence "unused parameter 'tpid'" warning with --disable-assert.
   * red_black.c: Added rb_nil_is_nil().
   * red_black.c: Added assert().
   * red_black.c: Simplification.
   * red_black.c: Removed unnecessary check.
   * red_black.c: Added STATIC_CAST; clean-up.

2022-03-09  Paul J. Lucas <paul@lucasmail.org>

   * dump.c, english.c, gibberish.c, parser.y, util.h: s/print_sep/fprint_sep/
   * dump.c: s/dump_indent/fprint_spaces/

2022-03-08  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Removed c_qualifier.

2022-03-07  Paul J. Lucas <paul@lucasmail.org>

   * options.c, options.h, set_options.c: Added print_explicit_ecsu().
   * set_options.c: Print a warning if alt-tokens is set and the current
     language changes to one that doesn't support them.
   * c_lang.h, check.c, lexer.l, parser.y, set_options.c: Added C_LANG_WHICH().
   * options.h, set_options.c: Now prints a warning that neither alternative
     tokens nor digraphs are supported until C95; now prints a warning that
     `using` isn't supported until C++11.
   * set_options.c: Now prints a warning that `east-const` isn't supported
     until C89.
   * cdecl.1: Removed yet another remnant of file arguments.
   * cdecl.1: s/current/default/

2022-03-06  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c, cdecl.c, cdecl.h: Made CDECL_COMMANDS static; added
     cdecl_command_next().
   * slist.c, util.h: s/intptr_t/int64_t/; s/uintptr_t/uint64_t/

2022-03-03  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am, cdecl.c, cli_options.c, cli_options.h, did_you_mean.c,
     options.c, options.h: Split CLI code from options.[ch] into
     cli_options.[ch].
   * options.c, options.h, set_options.c, cdecl-Ix.out: parse_explicit_ecsu()
     and parse_explicit_int() no longer print error messages; their callers do.

2022-02-28  Paul J. Lucas <paul@lucasmail.org>

   * options.c, cdecl-h.out: The old mention of `files...` was removed.
   * dump.c, english.c, gibberish.c, parser.y, util.h: Added print_sep().

2022-02-27  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, parser.y, test/Makefile.am, explain_fpf_v_i.out,
     explain_fpf_v_i.test: Finally fixed `explain void f(int())`.
   * c_ast_util.c: Now also checking placeholder_ast->parent_ast == NULL.

2022-02-25  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, c_ast_util.c, c_operator.h, check.c, dump.c: Got rid of
     C_FN_MASK_MEMBER and C_OP_MASK_OVERLOAD.

2022-02-23  Paul J. Lucas <paul@lucasmail.org>

   * dump.c, dump.h, parser.y: Added c_ast_dump_impl() and
     c_ast_list_dump_impl().

2022-02-22  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, parser.y: s/constructor/ctor/
   * parser.y, test/Makefile.am, explain_ff_i_v-02.out, explain_ff_i_v-02.test:
     Fixed function returning function parameter crash.
   * parser.y: s/type_ast/ret_ast/
   * dump.c, dump.h, parser.y, cdecl--debug.out, cdecl-d-alli.out,
     cdecl-d-cmo_exclam__b.out, cdecl-d-f2i_pi.out, cdecl-d-f_v.out,
     cdecl-d-faia4iaviacias6i_v.out, cdecl-d-udc_i.out, cdecl-d-z.out: AST
     debug output now always prints the key and prints "NULL" for null.

2022-02-20  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, c_ast_util.c, check.c, english.c, gibberish.c: Eliminated
     c_ast_is_kind_any().

2022-02-19  Paul J. Lucas <paul@lucasmail.org>

   * check.c, test/Makefile.am, declare_en_al4.out, declare_en_al4.test:
     Alignment of `enum`, `struct`, and `union` is now correctly forbidden in
     C.
   * cdecl_keyword.c, parser.y: `alignas` & `_Alignas` are now additionally
     allowed instead of `aligned [as|to]` in pseudo-English.
   * autocomplete.c, c_keyword.c, c_lang.h, cdecl_keyword.c, cdecl_keyword.h,
     lexer.l: Eliminated AC_CDECL_KEYWORDS; now _not_ completing English
     keywords when C/C++ is expected.
   * c_keyword.h, cdecl_keyword.h, lexer.l: s/yy_token_id/y_token_id/

2022-02-18  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Made is_command() more efficient by stripping leading
     whitespace once.

2022-02-17  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Now skipping leading spaces in is_command().
   * c_keyword.c: `new` is now autocompletable.  The following are now _not_
     autocompletable: `co_await`, `co_return`, `co_yield`, `concept`,
     `decltype`, and `requires`.
   * autocomplete.c: "variadic" is now autocompletable only in C89 and later.

2022-02-16  Paul J. Lucas <paul@lucasmail.org>

   * c_keyword.c: "default" is now auto-completable only in C++11 and later.
   * parser.y: New-style cast keyword synonyms for corresponding two-word
     English phrases.
   * parser.y: s/new_style_cast_c/new_style_cast_expr_c/ to remove duplicate
     name. (How did this ever work?)
   * c_lang.c: Made c_lang_literal() able to exit the loop.

2022-02-15  Paul J. Lucas <paul@lucasmail.org>

   * cdecl_keyword.c: Using LANG_C_CPP_MAX().
   * parser.y: `return` is now accepted as a shorthand for `returning` in
     pseudo-English.
   * color.c: Added color capability macros for names.
   * set_options.c: Now more simply using opt_prompt.

2022-02-14  Paul J. Lucas <paul@lucasmail.org>

   * c_type.h, parser.y: s/TS_NOT_CONSTRUCTOR/TS_FUNC_LIKE_NOT_CTOR/
   * c_type.h: TS_CONSTRUCTOR_DECL & TS_DESTRUCTOR_DECL clean-up.
   * c_ast_util.c, c_ast_util.h, c_sname.c, c_type.h, check.c, english.c,
     gibberish.c, parser.y: Eliminated c_type_is_tid_any().
   * check.c: Simplification.
   * check.c, gibberish.c, literals.h: s/alignas_lang/alignas_name/

2022-02-13  Paul J. Lucas <paul@lucasmail.org>

   * c_operator.c: Fixed a core dump when using the `--debug`/`-d` option for
     an operator.
   * c_ast_util.c, check.c, parser.y, declare_a_cd_i.out, declare_ac3i.out,
     declare_as3i.out, declare_avi.out, explain_a_cd_i.out,
     explain_udl_c_i-01.out: print_error() and print_warning() clean-up.
   * configure.ac, c_ast_util.c, c_ast_util.h, check.c, test/Makefile.am,
     explain_rttdi.out, explain_rttdpi.out, explain_rttdi.test,
     explain_rttdpi.test: `restrict` is now correctly allowed on `typedef`s of
     pointer.

2022-02-09  Paul J. Lucas <paul@lucasmail.org>

   * util.c: Now returning immediately if ncolumns == NULL and nlines == NULL.
   * util.h: FATAL_ERR now calls _Exit() insstead of exit() since functions
     called via atexit() must not call exit().
   * c_typedef.c, cdecl.c: Added '&'.
   * c_operator.c: s/OVER/OVR/

2022-02-07  Paul J. Lucas <paul@lucasmail.org>

   * print.c: Fixed interactive column number.

2022-02-06  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.h, util.h: Now using BITS_Lx macros in c_lang.h.
   * c_lang.h, check.c, lexer.l, parser.y, set_options.c, declare_th_f_v.out,
     set_trigraphs-c++.out, set_trigraphs_c++17.out: s/is no longer/not/; added
     LANG_RANGE() macro.

2022-02-04  Paul J. Lucas <paul@lucasmail.org>

   * check.c, explain_th_f_v-c++17.out: Now using c_lang_which() more.

2022-02-03  Paul J. Lucas <paul@lucasmail.org>

   * check.c, explain_c-02.out: Now checking opt_lang >= LANG_C_99 for implicit
     int.
   * c_ast.h, check.c: Got rid of VLA.
   * check.c: Added assert()s.
   * c_lang.c: Added if ( opt_lang == lang_ids ).
   * check.c: Moved K_VARIADIC.
   * parser.y: Revert "Bison %destructor clean-up."

2022-02-02  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Bison %destructor clean-up.
   * parser.y: Improved error messages for syntax errors after commas.
   * parser.y, test/Makefile.am: Can now parse dynamic exception
     specifications.
   * check.c, declare_thf_v.out: s/in/since/
   * parser.y: `noexcept` is now allowed for pointers to function parameter
     arguments.
   * c_typedef.c: Sorted PREDEFINED_KNR_C.
   * c_typedef.c, cdecl.c, cdecl.h: cdecl_parse_*() now return the exit status
     to use.

2022-02-01  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, c_typedef.h, cdecl.c: Made c_typedef_cleanup() static and
     called seperately.

2022-01-31  Paul J. Lucas <paul@lucasmail.org>

   * slist.c, slist.h: Added slist_at_nocheck_offset().

2022-01-25  Paul J. Lucas <paul@lucasmail.org>

   * util.c: Added PJL_IGNORE_RV().
   * cdecl.c: Added IF_EXIT() for atexit().

2022-01-24  Paul J. Lucas <paul@lucasmail.org>

   * read_line.c: Better WITH_READLINE code.
   * read_line.c: Added #ifndef WITH_READLINE.

2022-01-23  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, autocomplete.c, util.c, util.h: Now matching a command even
     when there's leading whitespace.

2022-01-22  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_type.h, check.c, gibberish.c:
     s/TS_MASK_STORAGE/TS_ANY_STORAGE/
   * c_type.h, check.c, gibberish.c: Type mask rework.
   * c_type.h, gibberish.c: Removed TS_MASK_REF_QUALIFIER.
   * c_type.h: Removed TS_CVR.
   * c_ast.c, c_ast.h, dump.c, english.c, gibberish.c, parser.y, types.h,
     cdecl--debug.out, cdecl-d-+i.out, cdecl-d-al8i.out, cdecl-d-alli.out,
     cdecl-d-f2i_pi.out, cdecl-d-f_v.out, cdecl-d-faia4iaviacias6i_v.out,
     cdecl-d-pmki.out, cdecl-d-z.out: Removed c_bit_width_t,
     PRId_C_BIT_WIDTH_T, c_ast_depth_t, and PRId_C_AST_DEPTH_T.
   * c_ast.c, c_sname.c, c_sname.h, parser.y, set_options.c, slist.c, slist.h,
     slist_test.c, util.c: Renamed slist functions to be more C++ STL-like.
   * c_ast.h, types.h: s/c_alignas_arg/c_alignas_kind/

2022-01-21  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, c_ast_util.c, c_ast_util.h, check.c, english.c, english.h,
     gibberish.c, help.c, options.c, options.h, parser.y, set_options.c,
     test/Makefile.am, cdecl-h.out, declare_type_2i-c++.out,
     declare_type_i-c++.out, help_options.out, set.out, set_c++.out,
     set_c++03.out, set_c++11.out, set_c++14.out, set_c++17.out, set_c++20.out,
     set_c++23.out, set_c++98.out, set_c11.out, set_c17.out, set_c18.out,
     set_c89.out, set_c90.out, set_c95.out, set_c99.out, set_cknr.out,
     set_digraphs_c89.out, set_explicit-ecsu=ecsu.out, set_explicit-int=i.out,
     set_explicit-int=u.out, set_lang=c++.out, set_noexplicit-int.out,
     set_nousing-c++.out, set_options.out, set_trigraphs_c++17.out,
     declare_type_2i-c++.test, declare_type_i-c++.test, set_nousing-c++.test:
     Added --no-using/-u CLI options and `using` set option. Can now print
     types as `using` declarations in C++11 and later.
   * c_ast_util.c, red_black.c: Added struct designators.
   * parser.y: Now checking multi-declarations only once.

2022-01-20  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: s/ast->type/type/
   * c_ast.c, c_ast.h: c_ast_dup() and c_ast_new() now require a non-null
     ast_list.
   * parser.y, test/Makefile.am, cast_type_i.out, cast_typedef_i.out,
     declare_af.out, declare_fsi_v.out, define_ai.out, define_eti.out,
     define_si.out, explain_using_a_mu_i.out, explain_using_a_mu_i.test: Now
     supporting attributes for "using" declarations.

2022-01-18  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added missing %destructor for param_decl_list_english_opt.
   * parser.y: Renamed *decl_list* to *param_decl_list*.

2022-01-16  Paul J. Lucas <paul@lucasmail.org>

   * dam_lev.c, dam_lev.h, did_you_mean.c, did_you_mean.h: Got rid of
     dam_lev_t.

2022-01-13  Paul J. Lucas <paul@lucasmail.org>

   * dam_lev.c: No longer using a VLA.
   * c_type.c, cdecl.c: Added "const" to some array parameter declarations.

2022-01-12  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.h, c_typedef.c, parser.y: Removed opt_lang_and_newer() and
     opt_lang_newer(): they were used only in one place.
   * c_lang.h: Moved macro.

2022-01-11  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.c, c_lang.h: Fixed c_lang_coarse_name() so it returns NULL for
     LANG_NONE.
   * c_lang.c, c_lang.h, check.c: Improved error message for types that are
     illegal in the current language.

2022-01-09  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, c_ast_util.c, c_typedef.c, check.c, did_you_mean.c,
     english.c: Visitor data struct renaming.
   * configure.ac, c_typedef.c, cdecl--debug.out, cdecl-d-+i.out,
     cdecl-d-al8i.out, cdecl-d-alli.out, cdecl-d-cmo_exclam__b.out,
     cdecl-d-eni.out, cdecl-d-f2i_pi.out, cdecl-d-f_v.out,
     cdecl-d-faia4iaviacias6i_v.out, cdecl-d-pmki.out, cdecl-d-udc_i.out,
     cdecl-d-z.out, show_all-c++.out, show_all.out,
     show_all_predefined-c++.out, show_all_predefined.out,
     show_all_predefined_typedef-c++.out, show_all_typedef.out,
     show_predefined-c++.out, show_predefined.out, show_predefined_typedef.out,
     show_predefined_using.out: The types `caaddr_t` and `daddr_t` were added;
     `jmp_buf` was moved from C89.

2022-01-07  Paul J. Lucas <paul@lucasmail.org>

   * check.c: Fixed function cast warning.
   * lexer.h, lexer.l: plen for lexer_input_line() must now not be NULL.

2022-01-06  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: parse_cleanup() comment renaming.
   * parser.y: Got rid of parse_init().
   * parser.y: Made ast_depth be a field of in_attr.

2022-01-05  Paul J. Lucas <paul@lucasmail.org>

   * dump.c: s/dump_comma/comma/

2022-01-04  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: s/no_except_bool_stid_exp/noexcept_bool_stid_exp/

2022-01-03  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: s/name/str_val/ for set_option_value_opt.
   * cdecl.1: Added note that arbitrary array sizes are not supported.

2022-01-02  Paul J. Lucas <paul@lucasmail.org>

   * check.c: s/ret_ast/raw_ret_ast/
   * parser.y, test/Makefile.am, explain_2pii-c89.out, explain_a4pii-c89.out,
     explain_f_rpii-c89.out, explain_npii-c89.out, explain_npiii-c89.out,
     explain_pii-c89.out, explain_piii-c89.out, explain_2pii-c89.test,
     explain_a4pii-c89.test, explain_f_rpii-c89.test, explain_npii-c89.test,
     explain_npiii-c89.test, explain_pii-c89.test, explain_piii-c89.test:
     Support for pre-C99 pointer to implicit int declarations.
   * parser.y: s/knr/pc99/

2022-01-01  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_ast_util.h, check.c, test/Makefile.am, declare_frg_v.out,
     declare_fvx_v.out, explain_fcv_v.out, explain_frg_v.out,
     explain_fvx_v.out, typedef_cv_explain_ftd_v.out, explain_fcv_v.test,
     typedef_cv_explain_ftd_v.test: Now flagging `void f(const void)` as an
     error.
   * c_ast_util.c: s/ast_stids/ast_tids/
   * Doxyfile, Makefile.am, bootstrap, cdecl.css, configure.ac, lcovrc,
     makedoc.sh, man/Makefile.am, man/man1/c++decl.1, cdecl.1, src/Makefile.am,
     autocomplete.c, c_ast.c, c_ast.h, c_ast_util.c, c_ast_util.h, c_keyword.c,
     c_keyword.h, c_kind.c, c_kind.h, c_lang.c, c_lang.h, c_operator.c,
     c_operator.h, c_sglob.c, c_sglob.h, c_sname.c, c_sname.h, c_type.c,
     c_type.h, c_typedef.c, c_typedef.h, cdecl.c, cdecl.h, cdecl_keyword.c,
     cdecl_keyword.h, cdecl_lldb.py, cdecl_parser.h, check.c, check.h, color.c,
     color.h, dam_lev.c, dam_lev.h, did_you_mean.c, did_you_mean.h, dump.c,
     dump.h, english.c, english.h, gibberish.c, gibberish.h, help.c, help.h,
     lexer.h, lexer.l, literals.c, literals.h, options.c, options.h, parser.y,
     pjl_config.h, print.c, print.h, prompt.c, prompt.h, read_line.c,
     read_line.h, red_black.c, red_black.h, red_black_test.c, set_options.c,
     set_options.h, slist.c, slist.h, slist_test.c, strbuf.c, strbuf.h,
     types.h, unit_test.h, util.c, util.h, test/Makefile.am,
     not_in_Makefile.sh, run_test.sh, update_test.sh: s/2021/2022/

2021-12-30  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: s/__attribute/__attribute__/

2021-12-28  Paul J. Lucas <paul@lucasmail.org>

   * util.c: Removed incorrect "const".
   * set_options.c: Simplification.
   * print.c, set_options.c, util.c, set_expl.out, set_expli.out: Now using
     fprint_list() to print ambiguous set options.
   * parser.y, print.c, util.c, util.h: Eliminated fprint_list() elt_size
     parameter.

2021-12-27  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, define_c_int_least32_t.out, typedef_c_int_least32_t.out,
     using_c_int_least32_t.out: Eliminated type_loc parameter from add_type().
   * c_ast_util.c: Removed redundant asserts.

2021-12-26  Paul J. Lucas <paul@lucasmail.org>

   * run_test.sh: Added "ulimit -c 0" to prevent core files during automated
     tests.
   * util.c: s/str/s/
   * parser.y: s/slist_t/c_ast_list_t/
   * c_ast_util.c, c_ast_util.h, check.c, gibberish.c, test/Makefile.am,
     explain_rtpf_v.out, explain_rtpf_v.test: A restricted pointer to a
     non-object, e.g., function, is now correctly flagged as an error.

2021-12-25  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, parser.y, test/Makefile.am, explain_2i-redef-c++.out,
     explain_2i-redef.out, explain_2i-redef-c++.test, explain_2i-redef.test:
     Redefinition in C++ is always an error.
   * gibberish.c: s/_[bsa]tid/_[bsa]tids/
   * english.c, gibberish.c: Now using fputs_sp() more.

2021-12-24  Paul J. Lucas <paul@lucasmail.org>

   * english.c, english.h, parser.y: Replaced c_ast_english() with
     c_ast_explain_cast() to parallel c_ast_explain_declaration() and
     c_ast_explain_type().
   * english.c: s/data/v_data/

2021-12-22  Paul J. Lucas <paul@lucasmail.org>

   * read_line.c: Added assert().
   * file-cast_x.out: Fixed test.
   * read_line.c, read_line.h: Fixed reading from stdin when it's not a TTY.
   * src/Makefile.am: s/$</cdecl$(EXEEXT)/ since $< doesn't always work right.
   * run_test.sh: s/mv/cp/ to avoid user/group problem.
   * c_ast.c, c_ast.h, c_ast_util.c, check.c, english.c:
     s/c_ast_visitor_data_t/c_ast_visit_data_t/ plus cleaned-up visitor data
     handling.
   * slist.c, slist.h: s/slist_predicate_fn_t/slist_pred_fn_t/
   * red_black.c: s/succ/next/

2021-12-21  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, c_typedef.c, cdecl--debug.out, cdecl-d-+i.out, cdecl-d-al8i.out,
     cdecl-d-alli.out, cdecl-d-cmo_exclam__b.out, cdecl-d-eni.out,
     cdecl-d-f2i_pi.out, cdecl-d-f_v.out, cdecl-d-faia4iaviacias6i_v.out,
     cdecl-d-pmki.out, cdecl-d-udc_i.out, cdecl-d-z.out, show_all-c++.out,
     show_all.out, show_all_predefined-c++.out, show_all_predefined.out,
     show_all_predefined_typedef-c++.out, show_all_typedef.out,
     show_predefined-c++.out, show_predefined_using.out: Added the standard C++
     types std::ispanstream, std::stacktrace_entry, and std::wispanstream.
   * cdecl.1: Added "for command-line options".

2021-12-20  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, options.c, options.h: s/opt_no_conf/opt_read_conf/
   * c_ast.c, c_sname.c, c_sname.h, check.c, dump.c, gibberish.c, lexer.l,
     options.c, parser.y, print.c, red_black_test.c, set_options.c, slist.h,
     slist_test.c: Added FOREACH_SNAME_SCOPE_UNTIL(); argument comments.
   * parser.y, test/Makefile.am, explain_ipi-redef.out, explain_ipi-redef.test:
     Names being redefined with a different type in the same declaration are
     now correctly forbidden.
   * configure.ac, check.c, test/Makefile.am, explain_f2i_v-redef.out,
     explain_f2i_v-redef.test: Now checking for function-like parameter
     redefinition.

2021-12-19  Paul J. Lucas <paul@lucasmail.org>

   * slist.c: Now avoiding repeated check in loop of slist_dup().
   * autocomplete.c, c_operator.c, c_sglob.c, c_sname.c, did_you_mean.c,
     dump.c, options.c, print.c, red_black_test.c, slist.c, strbuf.c, util.c:
     Using STATIC_CAST more.
   * parser.y: s/sti_free/sti_cleanup/
   * c_ast.c, c_ast.h, c_typedef.c, c_typedef.h, check.c, red_black.c,
     red_black.h: s/visitor/visit_fn/
   * c_ast.c, c_ast.h, c_ast_util.c, c_typedef.c: s/equiv/equal/
   * c_ast.h, c_operator.h, check.c, dump.c, parser.y: s/C_FUNC/C_FN/

2021-12-16  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: #include sort.
   * configure.ac, autocomplete.c: Simplified autocompletion code.

2021-12-15  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Function re-ordering.

2021-12-14  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, autocomplete.c, c_type.c, cdecl_keyword.c, literals.c,
     literals.h, parser.y, declare_a_cd_i.out, explain_a_cd_fa_cd_i_i.out,
     explain_a_cd_fi_i.out, explain_a_dep_a_mu_i-01.out,
     explain_a_dep_a_mu_i-02.out, explain_a_mu_f_v.out, explain_a_mu_i.out,
     explain_a_mu_k-01.out, explain_a_mu_k-02.out, explain_a_using_a_mu_i.out,
     explain_fa_cd_i_i.out, explain_fa_mu_i_v.out, explain_oi.out,
     explain_tli.out: Now allowing "carries dependency", "maybe unused", "no
     discard", "no except", "no return", "no unique address", and "thread
     local".
   * cdecl.c: The "no files as arguments" change broke reading of stdin; fixed.

2021-12-13  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added "constant evaluation", "constant expression", and "constant
     initialization".
   * configure.ac, cdecl.1, c_type.c, cdecl_keyword.c, literals.c, literals.h,
     parser.y, explain_sxxi.out, explain_xxctor.out, explain_xxi.out: Added
     pseudo-English keywords `evaluation` (plus `eval`), `expression` (plus
     `expr`), and `initialization` (plus `init`).

2021-12-11  Paul J. Lucas <paul@lucasmail.org>

   * did_you_mean.c: Put (double) back.
   * did_you_mean.c: Made SIMILAR_ENOUGH_PERCENT be double.
   * did_you_mean.c: Added assert()s; removed unnecessary = NULL.

2021-12-10  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am, c_keyword.c, c_keyword.h, cdecl_keyword.h,
     cdecl_parser.h, lexer.l: Added cdecl_parser.h.
   * print.h: Removed redundant declaration.
   * print.c, read_line.c, util.c, util.h: s/is_blank_line/str_is_blank/;
     s/ends_with_any_chr/str_rtrim_len/; removed ends_with_chr().
   * lcovrc, cdecl.c, options.c, options.h, util.c, util.h:
     s/PMESSAGE_EXIT/FATAL_ERR/

2021-12-09  Paul J. Lucas <paul@lucasmail.org>

   * util.c: s/fprintf/FPRINTF/
   * parser.y, util.c, util.h: fprint_list() now ignores the supplied elt_size
     when gets is NULL.
   * util.c: Removed duplicate #include <unistd.h>.

2021-12-08  Paul J. Lucas <paul@lucasmail.org>

   * set_options.c: Changed signature to print_options(void).
   * c_ast.c, c_ast.h, c_typedef.c, c_typedef.h, check.c, red_black.c,
     red_black.h: Named typedefs for pointers to function consistently.

2021-12-07  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am, cdecl.c, help.c, help.h, options.c, parser.y:
     Consolidated code that prints `; use --help or -h for help`.
   * options.c: Now using COPT(HELP) in "use --help ..." message.
   * cdecl.c: s/DYM_CLI_OPTIONS/DYM_COMMANDS/
   * cdecl.1, cdecl.c, read_line.c, read_line.h, file-cast_x.out,
     file-cast_i.test, file-cast_x.test, file-declare_i.test,
     file-declare_x.test, file-explain_i.test, file-explain_x.test: Removed
     reading command-line arguments as files; made file-reading code
     line-based.
   * cdecl.c, cdecl.h, color.c, help.c, options.c, parser.y, read_line.c,
     set_options.c: s/fin/cdecl_fin/; s/fout/cdecl_fout/
   * read_line.c: Removed unnecessary strbuf_init().
   * cdecl.c, read_line.c, read_line.h: Changed strbuf_read_line() to take a
     char const*[2].

2021-12-06  Paul J. Lucas <paul@lucasmail.org>

   * cdecl_keyword.h, lexer.l: s/allow_explain/always_find/; added
     lexer_cdecl_keyword_find().

2021-12-05  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.h: Whitespace.
   * strbuf.c: Sorted.
   * slist.h: Added "const" to SLIST_VAR_INIT().
   * c_lang.c, c_sname.c, c_type.c, cdecl.c, color.h, lexer.l, options.c,
     print.c, prompt.c, read_line.c, strbuf.c, strbuf.h: strbuf function
     renaming.
   * Doxyfile, Makefile.am, configure.ac, man/Makefile.am,
     man/man1/Makefile.am, src/Makefile.am, c_ast.c, c_ast.h, c_ast_util.c,
     c_ast_util.h, c_keyword.c, c_keyword.h, c_kind.c, c_kind.h, c_lang.c,
     c_lang.h, c_operator.c, c_operator.h, c_sglob.c, c_sglob.h, c_sname.c,
     c_sname.h, c_type.c, c_type.h, c_typedef.c, c_typedef.h, cdecl_keyword.c,
     cdecl_keyword.h, check.c, check.h, color.c, color.h, dam_lev.c, dam_lev.h,
     did_you_mean.c, did_you_mean.h, dump.c, dump.h, english.c, english.h,
     gibberish.c, gibberish.h, lexer.h, literals.c, literals.h, pjl_config.h,
     print.c, print.h, prompt.c, prompt.h, slist.c, slist.h, strbuf.c,
     strbuf.h, types.h, util.c, util.h, test/Makefile.am: Removed "et al" from
     files that are wholly new.

2021-12-04  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am, cdecl.c, read_line.c, read_line.h: Moved
     cdecl_read_line() to strbuf_read_line() and put in its own file.
   * autocomplete.c, cdecl.c, cdecl.h, did_you_mean.c:
     s/FOREACH_COMMAND/FOREACH_CDECL_COMMAND/
   * cdecl_keyword.c: C_SYN() simplification.
   * c_keyword.h: s/int/yytokentype/
   * check.c, test/Makefile.am, explain_a0i.out, explain_a0i.test: Zero-sized
     arrays are now correctly forbidden.
   * check.c, test/Makefile.am: `register` arrays are now correctly allowed.
   * configure.ac, src/Makefile.am, cdecl_keyword.c, cdecl_keyword.h,
     did_you_mean.c, did_you_mean.h, lexer.l, parser.y, print.c, types.h,
     declare_rgf_v.out, explain_ac9i.out, explain_as9i.out,
     explain_fpcf_i_v.out: Now mentioning that an unknown name is a cdecl
     keyword and also offering cdecl keywords in suggestions.

2021-12-03  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.c: Simplified c_lang_literal().
   * autocomplete.c, c_keyword.h, did_you_mean.c:
     s/FOREACH_KEYWORD/FOREACH_C_KEYWORD/
   * configure.ac: Whitespace.
   * configure.ac: Reordering; removed "support for".

2021-12-02  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: "variadic" and "vector" are now autocompletable.

2021-12-01  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.c, c_sname.h, parser.y: Fixed memory leaks.
   * parser.y: Made '&' implicit in DUMP_TYPE().
   * src/Makefile.am: Added -fno-omit-frame-pointer for Address Sanitizer.
   * configure.ac, src/Makefile.am: Added support for using AddressSanitizer.
   * parser.y, util.c, util.h: Made fprint_list_gets() private to util.c.
   * print.c: s/p/elt/
   * parser.y, slist_test.c: Fixed address errors.

2021-11-29  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: Now using true_clear().
   * gibberish.c: Removed unnecessary {}.
   * gibberish.c: Removed unncessary ().
   * gibberish.c: Changed g_print_ast_func_params() to g_print_ast_list().

2021-11-28  Paul J. Lucas <paul@lucasmail.org>

   * c_operator.c, c_operator.h, test/Makefile.am,
     declare_o_brackets_2i_i-c++20.out, declare_o_brackets_2i_i.out,
     explain_o_brackets_2i_i-c++20.out, explain_o_brackets_2i_i.out,
     declare_o_brackets_2i_i-c++20.test, declare_o_brackets_2i_i.test,
     explain_o_brackets_2i_i-c++20.test, explain_o_brackets_2i_i.test: Now
     allowing `operator[]` to have zero or more arguments starting in C++23.
   * c_ast.c, c_typedef.c, lexer.l: Reformatted INTERNAL_ERR() messages.

2021-11-27  Paul J. Lucas <paul@lucasmail.org>

   * declare_o_brackets_2i_i.out, declare_o_brackets_2i_i.test: Fixed test.
   * configure.ac, lexer.l: The case-insensitive integer literal suffixes of
     `uz` and `zu` for `size_t` and `z` for `ssize_t` are now supported.

2021-11-26  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: Added more assert() cheks in gibberish.c.
   * typedef_fi_v_show.test: Removed unncessary ().
   * c_type.h, test/Makefile.am, typedef_fi_v_show.out, typedef_fi_v_show.test,
     typedef_pfi_v_show.test: typedefs of function are now correctly allowed.

2021-11-25  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c: Removed unnecessary depth assignment.

2021-11-24  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.c, c_sname.h, parser.y, slist.c, slist.h, slist_test.c: slist type
     renamings.
   * help.c: s/PUTC/FPUTC/

2021-11-22  Paul J. Lucas <paul@lucasmail.org>

   * check.c, english.c, util.c, util.h: Got rid of hacky SP_IF() macro.

2021-11-21  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, dump.c: Removed FOREACH_AST_LIST().
   * c_ast.h, c_sname.h, dump.c, parser.y, set_options.c, slist.c, slist.h:
     Added FOREACH_SLIST_NODE_UNTIL().
   * c_ast.c, c_ast.h, c_sname.c, c_sname.h, check.c, dump.c, english.c,
     gibberish.c, options.h, parser.y, set_options.c, set_options.h, slist.c,
     slist.h: FOREACH_* macro clean-up.

2021-11-19  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, c_ast_util.c, test/Makefile.am, explain_a5fd_i.out,
     explain_a5fd_pi.out, explain_a5fd_i.test, explain_a5fd_pi.test: Fixed bug
     with a declaration like int f[5](double).

2021-11-18  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Reworked "explain" rules.

2021-11-17  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, cdecl-d-eni.out: Added DUMP_AST( "decl_list_c_opt", type_ast )
     to decl_list_c_opt.
   * c_ast.c, c_ast.h, c_sglob.c, c_sglob.h, c_sname.c, c_sname.h, c_typedef.c,
     cdecl.c, gibberish.c, lexer.l, parser.y, red_black.c, red_black.h,
     red_black_test.c, set_options.c, slist.c, slist.h, slist_test.c, strbuf.c,
     strbuf.h, util.c: Renamed *_free() functions to *_cleanup() for those that
     don't free the object itself.
   * parser.y: Sorted Bison destructors.

2021-11-16  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, check.c, english.c, gibberish.c:
     s/FOREACH_PARAM/FOREACH_FUNC_PARAM/

2021-11-15  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_sname.c, c_sname.h, parser.y, set_options.c, slist.c, slist.h,
     slist_test.c, util.c: Got rid of slist data -- never used.

2021-11-11  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c: Added cast_kind to c_ast_equiv() and c_ast_dup().

2021-11-09  Paul J. Lucas <paul@lucasmail.org>

   * c_type.h: Reworked TA_ANY_MSC_CALL.

2021-11-08  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: s/(unsigned)/(c_bit_width_t)/
   * parser.y: s/Y_NAME/name_exp/

2021-11-07  Paul J. Lucas <paul@lucasmail.org>

   * check.c, parser.y, const_cast_pi-c.out, declare_cri.out,
     declare_fco_exclam_b.out, declare_fmo_star_rk_rk.out,
     declare_o_less_eq_greater_2rck_a-c++17.out, declare_vri.out,
     explain_+co_eq2_rck_b=default-cpp17.out, explain_2gat_cpi.out,
     explain_a_using_a_mu_i.out, explain_af-c++11.out, explain_c_gat_pi.out,
     explain_c_gat_vpi.out, explain_efi-c.out, explain_f__v-c++03.out,
     explain_f_k-knr.out, explain_fkrel_i.out, explain_frri_v-c++03.out,
     explain_gat_c_gat_vpi.out, explain_gat_cpi.out, explain_gat_i-01.out,
     explain_gat_i-02.out, explain_gat_i-03.out, explain_gat_i-04.out,
     explain_gat_i-05.out, explain_gat_i-06.out, explain_gat_i-07.out,
     explain_gat_i-08.out, explain_gat_i-09.out, explain_i_msds.out,
     explain_k_msds.out, explain_msds_i.out, explain_msds_k.out,
     explain_p_msds_i.out, explain_pmi-c.out, explain_pmrgi.out,
     explain_ri-c.out, explain_rr.out, explain_rrgi.out, explain_rrr-1.out,
     explain_rrr-2.out, explain_rrrr.out, explain_rtpi-c++-error.out,
     reinterpret_cast_pv-c.out, show_using-c++03.out, static_cast_i-c.out: s/is
     not supported/not supported/
   * parser.y, test/Makefile.am, show_using-c++03.out, show_using-c++03.test: A
     `show using` before C++11 now prints an error.
   * check.c: Properly calling c_ast_check_errors().
   * lexer.l: Added unlikely().
   * lexer.l: Moved lexer_update_loc().
   * check.c, english.c, gibberish.c, parser.y, test/Makefile.am,
     cast_pfi_i-cknr.out, cast_pfkr_i-cknr.out, declare_fkr_pi-c17.out,
     declare_fkr_pi-cknr.out, declare_pfkr_i-c17.out, explain_fkr_i-cknr.out,
     explain_fkr_pi-c17.out, cast_pfi_i-cknr.test, cast_pfkr_i-cknr.test,
     declare_fkr_pi-c17.test, declare_fkr_pi-cknr.test: For functions having
     K&R C typeless parameters, `int` is now printed in C89 and later since
     such parameters are implicitly `int`.

2021-11-06  Paul J. Lucas <paul@lucasmail.org>

   * check.c, declare_rrgi.out: A deprecated warning is now printed for a
     `register` array, enum, class, struct, union, pointer, pointer to member,
     reference, and rvalue reference between C++11 and C++14.  (Previously, a
     warning was printed only for built-in types and typedefs.)
   * c_ast.c: Removed unncessary special-case code for K_TYPEDEF.
   * c_ast.c, c_ast.h, c_kind.h: Added K_ANY_REFERRER, c_ast_is_referrer().

2021-11-05  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, c_ast_util.c, c_sname.h, c_typedef.c, check.c,
     did_you_mean.c, english.c, gibberish.c, parser.y: Removed unnecessary
     c_ast_*_name() functions.
   * c_ast.c, cdecl-d-pmki.out: Removed c_ast_set_local_type_if_is_any_scope()
     -- not needed.

2021-11-04  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Sorted rules.
   * parser.y: DUMP whitespace fix.
   * c_kind.h: s/it's/its/
   * parser.y: Moved parser_cleanup().

2021-11-03  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_ast_util.h: Made c_ast_root() not be static.

2021-11-02  Paul J. Lucas <paul@lucasmail.org>

   * check.c: s/assert/UNEXPECTED_INT_VALUE/

2021-11-01  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_ast_util.h, parser.y: Reworked parameter order for
     c_ast_add_array(), c_ast_append_array_impl(), and c_ast_add_func().
   * cdecl.1: s/number error/number/

2021-10-29  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.c, c_sname.c, c_type.c, cdecl.c, lexer.l, print.c, prompt.c,
     strbuf.c, strbuf.h: Added strbuf_reset().
   * parser.y, print.c, util.c, util.h: Added fprint_list().
   * parser.y, show_foo.out: `show` now lists all commands for defining types.

2021-10-28  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.c: Whitespace.
   * c_sname.c, c_sname.h: c_sname_impl() clean-up.

2021-10-26  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Removed unused SET_TOKEN_TO_AND_RETURN(); moved "?".
   * src/Makefile.am: Fixed slist_test_SOURCES.

2021-10-25  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am: Fixed *_test dependencies.

2021-10-24  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am, c_ast.h, parser.y, red_black_test.c, slist.c, slist.h,
     slist_test.c, unit_test.h: Added slist_free_if() to free placeholder nodes
     when adding types.

2021-10-23  Paul J. Lucas <paul@lucasmail.org>

   * slist.c: Added: if ( i_list == j_list ).

2021-10-22  Paul J. Lucas <paul@lucasmail.org>

   * options.c: Previous explicit int for signed was a bad idea.
   * options.c: For explicit int, the special case of "unsigned" by itself
     meaning "unsigned int" has been extened to "signed" by itself to mean
     "signed int."

2021-10-19  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Formatting fixes.
   * cdecl.1: s/,/./
   * cdecl.1: Qualified commands with languages valid in.
   * help.c, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c++03.out, help_command-c.out, help_commands-c++.out,
     help_commands-c.out: s/typedef/type[def]/ in help.

2021-10-17  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_ast_util.h, parser.y, explain_typedef_ci32.out: Removed
     c_ast_join_type_decl() decl_loc parameter.
   * configure.ac, parser.y, cast_rgi.out, cdecl--debug.out,
     cdecl-d-f2i_pi.out, cdecl-d-pmki.out, declare_frg_v.out,
     declare_fvx_v.out, define_rgi.out, explain_+o_eq_rck_rk=default-02.out,
     explain_+o_eq_rck_rk=delete-02.out,
     explain_+o_exclam_eq_rck_rk=delete.out, explain_a4f_i.out,
     explain_a_cd_i.out, explain_alrgi.out, explain_ari.out,
     explain_ati-c++20.out, explain_cast_ai.out, explain_cast_eti.out,
     explain_cast_rgi.out, explain_cast_si.out, explain_cast_typedef_i.out,
     explain_exsi.out, explain_fo_less_eq_greater_2rck_i=default.out,
     explain_fsi_v.out, explain_hb.out, explain_hc.out, explain_hc16.out,
     explain_hc32.out, explain_hc8.out, explain_hd.out, explain_hf.out,
     explain_hv.out, explain_hwt.out, explain_ii.out, explain_lb.out,
     explain_lc.out, explain_lc16.out, explain_lc32.out, explain_lc8.out,
     explain_ld-knr.out, explain_lf-c.out, explain_lv.out, explain_lwt.out,
     explain_main_fiapc_hi.out, explain_p_cdecl_v.out, explain_pri.out,
     explain_prri.out, explain_rf_i.out, explain_rgi-c++11.out, explain_rr.out,
     explain_rrr-1.out, explain_rrr-2.out, explain_rrrr.out, explain_sb.out,
     explain_sc16.out, explain_sc32.out, explain_sc8.out, explain_smi.out,
     explain_sv.out, explain_swt.out, explain_ub.out, explain_uc16.out,
     explain_uc32.out, explain_uc8.out, explain_ud.out, explain_uf.out,
     explain_uv.out, explain_uwt.out, typedef_ai.out, typedef_eti.out,
     typedef_rgi.out, typedef_si.out, using_eti.out, using_f-name_v.out,
     using_rgi.out, using_si.out, xec_explain_lla.out, xec_explain_llr.out,
     xec_explain_ti.out, xupc_explain_ri.out: Better error/warning locations.
   * run_test.sh: Now using diff -u for better diffs.
   * test/Makefile.am: Removed unnecessary test.

2021-10-16  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, cdecl--debug.out, cdecl-d-+i.out, cdecl-d-al8i.out,
     cdecl-d-alli.out, cdecl-d-cmo_exclam__b.out, cdecl-d-f2i_pi.out,
     cdecl-d-f_v.out, cdecl-d-faia4iaviacias6i_v.out, cdecl-d-pmki.out,
     cdecl-d-udc_i.out, cdecl-d-z.out: Fixed DUMP_AST() in
     east_modified_type_c_ast.

2021-10-15  Paul J. Lucas <paul@lucasmail.org>

   * man/man1/c++decl.1: Added -2021.
   * man/man1/Makefile.am: s/cdecl.1/$</
   * cdecl.1: s/no semantic/only some semantic/

2021-10-13  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, c_ast_util.c, check.c, english.c, test/Makefile.am,
     explain_ptdv.out, explain_ptdv.test: Fixed pointer to a `typedef` of
     `void`.

2021-10-12  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, cdecl-d-faia4iaviacias6i_v.out: Fixed DUMP_START for
     array_cast_c_astp.
   * parser.y, cdecl--debug.out, cdecl-d-+i.out, cdecl-d-al8i.out,
     cdecl-d-alli.out, cdecl-d-cmo_exclam__b.out, cdecl-d-eni.out,
     cdecl-d-f2i_pi.out, cdecl-d-f_v.out, cdecl-d-faia4iaviacias6i_v.out,
     cdecl-d-pmki.out, cdecl-d-udc_i.out, cdecl-d-z.out: Rewrote parts of the
     grammar to lower the shift-reduce conflicts from 33 to 17.
   * c_type.c: Removed redundant condition.
   * parser.y: Fix for ancient gcc that didn't like the previous static
     declaration.
   * parser.y: Rewrote parts of the grammar to lower the shift-reduce conflicts
     from 48 to 33.

2021-10-11  Paul J. Lucas <paul@lucasmail.org>

   * parser.y:
     s/type_qualifier_list_english_stid_opt/ref_qualifier_english_stid_opt/
   * parser.y: Split out type_qualifier_english_stid; eliminated
     qualifier_stack.

2021-10-10  Paul J. Lucas <paul@lucasmail.org>

   * check.c, parser.y, test/Makefile.am, cdecl-d-z.out, explain_2+n.out,
     explain_2+n.test: Now assume an unknown scoped name is a type when used as
     one.
   * src/Makefile.am: Added parser.output to clean rule.

2021-10-09  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, test/Makefile.am, xupc_explain_dq+a4i.out,
     xupc_explain_dq+a4i.test: Added %prec rule to eliminate a shift/reduce
     conflict. Also added UPC shared test with layout qualifier.
   * parser.y: Removed Y_TYPES.
   * cdecl.1: Added "[, gibberish]*" to explain.
   * cdecl.1: Added mention of _Atomic in C++23.
   * dump.c, english.c, gibberish.c, types.h: Added c_ast_sid_t,
     PRId_C_BIT_WIDTH_T, PRId_C_ARRAY_SIZE_T, PRId_C_AST_DEPTH_T,
     PRId_C_AST_ID_T, and PRId_C_AST_SID_T.
   * parser.y, explain_atci.out: Now checking for any storage or attribute
     qualified _Atomic type.

2021-10-08  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, c_ast_util.c, c_keyword.c, c_type.c, c_type.h, check.c,
     gibberish.c, parser.y, test/Makefile.am, declare_ati-c++20.out,
     explain_atci.out, explain_ati-c++20.out,
     show_all_predefined_typedef-c++.out, show_predefined_using.out,
     declare_ati-c++20.test, explain_atci.test, explain_ati-c++20.test: Now
     allowing _Atomic(T) in C++23 but forbidding cvr-qualified types.

2021-10-07  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, cdecl.h, color.c, options.c, options.h: Moved fin, fout to
     cdecl.[hc].
   * parser.y: Now doing this more: c_ast_t *const type_ast =
     ia_type_ast_peek();
   * c_ast_util.c, c_ast_util.h, parser.y, test/Makefile.am,
     cdecl-d-faia4iaviacias6i_v.out, explain_na4i.out, explain_na4i.test: Fixed
     nested array declarations, e.g.: int (a)[4].
   * c_ast_util.c: s/c_ast_is_parent( ast->parent_ast )/ast->parent_ast !=
     NULL/
   * c_ast.c: s/unsigned/size_t/

2021-10-06  Paul J. Lucas <paul@lucasmail.org>

   * check.h, dam_lev.h, did_you_mean.h, options.h: Added
     PJL_WARN_UNUSED_RESULT.
   * lcovrc: s/CASE_K_NONE_OR_PLACEHOLDER/CASE_K_PLACEHOLDER/
   * help.c, help_options.out: Added <lang> to help for options.
   * help.c, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c++03.out, help_command-c.out, help_commands-c++.out,
     help_commands-c.out: Added [, <sibberish>]* to help for explain.
   * help.c, help_options.out: Added missing explicit-ecsu to options help.
   * configure.ac, cdecl.1, c_type.c, c_type.h, gibberish.c, options.c,
     options.h, set_options.c, test/Makefile.am, cdecl-Ix.out, cdecl-Sx.out,
     cdecl-h.out, declare_c.out, declare_pmf_pc.out, declare_pmf_pk.out,
     dynamic_cast_+pc.out, dynamic_cast_pc.out, dynamic_cast_pk.out, set.out,
     set_c++.out, set_c++03.out, set_c++11.out, set_c++14.out, set_c++17.out,
     set_c++20.out, set_c++23.out, set_c++98.out, set_c11.out, set_c17.out,
     set_c18.out, set_c89.out, set_c89_digraphs.out, set_c90.out, set_c95.out,
     set_c99.out, set_cknr.out, set_digraphs_c89.out, set_expl.out,
     set_expli.out, set_explicit-ecsu.out, set_explicit-ecsu=ecsu.out,
     set_explicit-ecsu=x.out, set_explicit-int=i.out, set_explicit-int=u.out,
     set_explicit-int=x.out, set_lang=c++.out, set_noexplicit-int.out,
     set_options.out, set_trigraphs_c++17.out, cdecl-Sx.test,
     declare_pmf_pk.test, dynamic_cast_pk.test, set_expli.test,
     set_explicit-ecsu.test, set_explicit-ecsu=ecsu.test,
     set_explicit-ecsu=x.test: Added explicit-ecsu option.

2021-10-05  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: s/Ovtober/October/
   * cdecl.1: Removed "to standard error".

2021-10-04  Paul J. Lucas <paul@lucasmail.org>

   * dump.c, cdecl--debug.out, cdecl-d-+i.out, cdecl-d-al8i.out,
     cdecl-d-alli.out, cdecl-d-cmo_exclam__b.out, cdecl-d-eni.out,
     cdecl-d-f2i_pi.out, cdecl-d-f_v.out, cdecl-d-faia4iaviacias6i_v.out,
     cdecl-d-pmki.out, cdecl-d-udc_i.out, cdecl-d-z.out: Now printing "none"
     when the type is none.
   * dump.c, cdecl-d-cmo_exclam__b.out: Reworked dumping of C++ operators.
   * dump.c: s/FPRINTF/FPUTS/
   * options.c: If the exit status is 0, the usage message is now printed to
     stdout.
   * options.c: s/printf/puts/
   * options.c: If there are more CLI options after either -h or --help, the
     exit status is now 64.
   * options.c: s/OPT_/SOPT_/

2021-10-03  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Reverted AC_INIT change.
   * help.c, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c++03.out, help_command-c.out, help_commands-c++.out,
     help_commands-c.out: Added "name" to commands help.
   * autocomplete.c: Fixed help command completion crash.
   * configure.ac: Expanded AC_INIT.
   * slist.c: Split the loop for efficiency.
   * configure.ac: Updated to 11.2 and fixed NEWS.

2021-10-02  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, c_ast_util.c, c_ast_util.h, c_kind.c, c_kind.h, check.c,
     dump.c, english.c, gibberish.c, parser.y, types.h:
     s/c_kind_id_t/c_ast_kind_t/; s/kind_id/kind/
   * c_ast.h, c_ast_util.c, check.c, check.h, dump.c, english.c, english.h,
     gibberish.c, gibberish.h, parser.y, types.h, test/Makefile.am,
     cdecl--debug.out, cdecl-d-+i.out, cdecl-d-al8i.out, cdecl-d-alli.out,
     cdecl-d-cmo_exclam__b.out, cdecl-d-eni.out, cdecl-d-f2i_pi.out,
     cdecl-d-f_v.out, cdecl-d-faia4iaviacias6i_v.out, cdecl-d-pmki.out,
     cdecl-d-udc_i.out, cdecl-d-z.out, const_cast_i-c++03.out,
     const_cast_i.out, dynamic_cast_i.out, dynamic_cast_pi.out,
     reinterpret_cast_v.out, const_cast_i-c++03.test, const_cast_i.test,
     dynamic_cast_i.test, dynamic_cast_pi.test, reinterpret_cast_v.test:
     const_cast, dynamic_cast, and reinterpret_cast now perform additional
     checks.
   * dump.c, dump.h, parser.y: Added bool_dump().

2021-10-01  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c, c_keyword.c, c_keyword.h, lexer.l, literals.h: Moved
     auto-completion information for C/C++ keywords to C_KEYWORDS.
   * autocomplete.c: Now autocompletable: bits, bytes, const, enum.

2021-09-30  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h: Added missing PJL_WARN_UNUSED_RESULT.
   * parser.y: s/func/constructor/
   * parser.y: Rearranged decl_list_english.
   * parser.y: No longer printing odd "operator expected" message.
   * parser.y: Better error message for invalid help option.
   * autocomplete.c: Now autocompletes for "help" command.
   * slist.c: Reworked slist_free() to be more efficient.
   * c_ast.c, c_ast.h, c_ast_util.c: Moved c_ast_root() to c_ast_util.c.
   * c_ast.h, c_ast_util.c, c_typedef.c, check.c, english.c, gibberish.c,
     parser.y: s/c_ast_empty_name()/c_ast_name_empty()/
   * c_ast.c, c_ast.h, parser.y: s/c_ast_dup_name()/c_ast_name_dup()/
   * c_ast.h, check.c, gibberish.c, parser.y:
     s/c_ast_count_name()/c_ast_name_count()/
   * cdecl.c, util.c: FILE renaming.
   * lexer.l: s/strndup/check_strndup/
   * lexer.l: s/rv/rv_loc/
   * parser.y: Removed error_newlined.

2021-09-29  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, c_sname.c, c_sname.h, dump.c, dump.h, gibberish.c, gibberish.h,
     help.c, parser.y, types.h, test/Makefile.am, declare_2a4i.out,
     declare_2i.out, declare_2pfid_pc.out, declare_2pfid_pcc.out,
     declare_2pfid_v.out, declare_2pi.out, help-c++.out, help-c.out,
     help_command-c++.out, help_command-c++03.out, help_command-c.out,
     help_commands-c++.out, help_commands-c.out, declare_2a4i.test,
     declare_2i.test, declare_2pfid_pc.test, declare_2pfid_pcc.test,
     declare_2pfid_v.test, declare_2pi.test: Added ability to declare multiple
     things in the same "declare" command.
   * parser.y, test/Makefile.am, cdecl--debug.out, cdecl-d-+i.out,
     cdecl-d-al8i.out, cdecl-d-alli.out, cdecl-d-cmo_exclam__b.out,
     cdecl-d-f2i_pi.out, cdecl-d-f_v.out, cdecl-d-faia4iaviacias6i_v.out,
     cdecl-d-pmki.out, cdecl-d-z.out, explain_2npi.out, explain_2npi.test:
     Fixed multiple nested declarations crash.
   * configure.ac, cdecl.1, gibberish.c, help.c, lexer.l, literals.c,
     literals.h, parser.y, types.h, test/Makefile.am,
     declare_trigraphs_nrfi_v-c++.out, declare_trigraphs_nrfi_v-c++14.out,
     help-c++.out, help-c.out, help_command-c++.out, help_command-c++03.out,
     help_command-c.out, help_commands-c++.out, help_commands-c.out,
     help_options.out, declare_trigraphs_nrfi_v-c++14.test, help_options.test:
     Help for options is now on a separate page. Digraphs & trigraphs are no
     longer printed in unsupported languages.
   * lexer.l: Fixed comment.
   * c_ast.c, c_ast.h, c_ast_util.c, c_kind.c, c_kind.h, check.c, dump.c,
     english.c, gibberish.c: Removed K_NONE.

2021-09-28  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Fixed dump text for sname_english_ast.
   * c_ast.c, c_ast.h, c_sname.c, c_sname.h, strbuf.c, strbuf.h: Moved all
     *_free() functions out-of-line.

2021-09-27  Paul J. Lucas <paul@lucasmail.org>

   * Makefile.am: Now using coverage.info per convention.
   * Makefile.am: Added "Code coverage not enabled" message.
   * lexer.l: Removd PJL_WARN_UNUSED_RESULT from yywrap().
   * src/Makefile.am: "make clean" now removes BUILT_SOURCES.
   * configure.ac, src/Makefile.am: s/ENABLE_CODE_COVERAGE/ENABLE_COVERAGE/
   * AUTHORS, Makefile.am, configure.ac, lcovrc, src/Makefile.am, c_ast.c,
     c_ast.h, c_ast_util.c, c_ast_util.h, c_kind.c, c_sglob.c, c_type.c,
     c_type.h, check.c, dump.c, lexer.l, options.c, options.h, parser.y,
     red_black_test.c, set_options.c, set_options.h, util.c, test/Makefile.am,
     cdecl--kolor.out, cdecl-9.out, cdecl-d-+i.out, cdecl-d-al8i.out,
     cdecl-d-alli.out, cdecl-d-cmo_exclam__b.out, cdecl-d-eni.out,
     cdecl-d-f_v.out, cdecl-d-faia4iaviacias6i_v.out, cdecl-d-pmki.out,
     cdecl-d-udc_i.out, cdecl-d-z.out, cdecl-h.out, cdecl-k.out,
     cdecl-knever.out, cdecl-kxxx.out, declare_=i-c.out,
     declare_alttokens_dtor.out, declare_alttokens_o_pipe2_rck_b.out,
     declare_alttokens_rri.out, declare_ari.out, declare_cf_v-c.out,
     declare_cnmf_v-c.out, declare_cnmf_v.out, declare_efi.out, declare_ii.out,
     declare_o_minus2_d_rk.out, declare_o_plus2_d_rk.out, declare_prgi.out,
     declare_rrgi.out, declare_rtf_v-c.out, declare_rti.out, declare_sctor.out,
     declare_thf_v.out, declare_udl_pcci_i.out, declare_xvi.out,
     explain_+compl_dtor.out, explain_+i-c.out, explain_0f_v-03.out,
     explain_a4f_i.out, explain_a4v.out, explain_a_nd_f_v.out,
     explain_af-c++11.out, explain_al8ty_i.out, explain_alf_i.out,
     explain_alrgi.out, explain_c-02.out, explain_cf_v-c.out, explain_cfi.out,
     explain_co_less_i_b=default.out, explain_co_less_rck_i=default.out,
     explain_cri.out, explain_ctor=default.out, explain_ctor_2i=default.out,
     explain_digraphs_a9i-c89.out, explain_f+o_exclam__b.out,
     explain_f_k-knr.out, explain_f_v=default.out, explain_f_v=delete.out,
     explain_fac3_v-c++.out, explain_fas3_v-c++.out, explain_fav_v-c++.out,
     explain_fd_i-cknr.out, explain_fkrel_i.out, explain_fo_exclam__b.out,
     explain_fudc_i.out, explain_i+w3.out, explain_i-reserved-c++.out,
     explain_i-reserved-c.out, explain_ii.out, explain_ktnk.out,
     explain_main_f4i_i.out, explain_main_fiapci_i.out, explain_main_fkr_i.out,
     explain_main_sf_i-c.out, explain_o_delete__v.out,
     explain_o_delete_i_v.out, explain_o_delete_pv_i.out,
     explain_o_eq_rck_v=default.out, explain_o_exclam__b=delete.out,
     explain_o_less_2rck_b=default.out, explain_o_less_rck_b=default.out,
     explain_o_minus2_d_rk.out, explain_o_new_i_pv.out,
     explain_o_new_zrrk_pv.out, explain_o_plus2__rk.out,
     explain_o_plus2_d_rk.out, explain_o_plus2_rk_rk.out,
     explain_o_plus_kel.out, explain_rf_i.out, explain_rf_v-c++03.out,
     explain_rga4i.out, explain_rgi-c++11.out, explain_rrf_v-c++03.out,
     explain_scf_v.out, explain_sudc_i.out, explain_trigraphs_a9i-c++.out,
     explain_udl__i.out, explain_udl_c_i-01.out, explain_vv_o_new_z.out,
     explain_xxf_v-c++11.out, help_english-c++03.out, k_typedef_i-c.out,
     ns_+typedef_i-c++14.out, set_alt-tokens.out, set_c89_digraphs.out,
     set_digraphs-c89.out, set_digraphs_c89.out, set_expl.out,
     set_explicit-int.out, set_explicit-int=i.out, set_explicit-int=u.out,
     set_explicit-int=x.out, set_graphs.out, set_lang=c++.out,
     set_lang=xxx.out, set_nodigraphs.out, set_noexplicit-int.out,
     set_noexplicit-int=u.out, set_prompt=x.out, set_trigraphs-c++.out,
     set_trigraphs-cknr.out, set_trigraphs_c++17.out, set_xxx.out,
     show_all_predefined_glob-04.out, cdecl--kolor.test, cdecl-9.test,
     cdecl-d-+i.test, cdecl-d-al8i.test, cdecl-d-alli.test,
     cdecl-d-cmo_exclam__b.test, cdecl-d-eni.test, cdecl-d-f_v.test,
     cdecl-d-faia4iaviacias6i_v.test, cdecl-d-pmki.test, cdecl-d-udc_i.test,
     cdecl-d-z.test, cdecl-h.test, cdecl-k.test, cdecl-knever.test,
     cdecl-kxxx.test, declare_alttokens_dtor.test,
     declare_alttokens_o_pipe2_rck_b.test, declare_alttokens_rri.test,
     declare_ari.test, declare_cnmf_v-c.test, declare_cnmf_v.test,
     declare_efi.test, declare_prgi.test, declare_rrgi.test, declare_rti.test,
     declare_sctor.test, declare_thf_v.test, declare_udl_pcci_i.test,
     declare_xvi.test, explain_+compl_dtor.test, explain_0dtor.test,
     explain_0f_v-03.test, explain_a4f_i.test, explain_a4v.test,
     explain_a_nd_f_v.test, explain_af-c++11.test, explain_al8ty_i.test,
     explain_alf_i.test, explain_alrgi.test, explain_c-02.test,
     explain_cfi.test, explain_co_less_i_b=default.test,
     explain_co_less_rck_i=default.test, explain_cri.test,
     explain_ctor=default.test, explain_ctor_2i=default.test,
     explain_digraphs_a9i-c89.test, explain_f+o_exclam__b.test,
     explain_f_v=default.test, explain_f_v=delete.test, explain_fd_i-cknr.test,
     explain_fkrel_i.test, explain_fo_exclam__b.test, explain_fudc_i.test,
     explain_i+w3.test, explain_i-reserved-c++.test, explain_i-reserved-c.test,
     explain_ktnk.test, explain_main_f4i_i.test, explain_main_fiapci_i.test,
     explain_main_fkr_i.test, explain_main_sf_i-c.test,
     explain_o_delete__v.test, explain_o_delete_i_v.test,
     explain_o_delete_pv_i.test, explain_o_eq_rck_v=default.test,
     explain_o_exclam__b=delete.test, explain_o_less_2rck_b=default.test,
     explain_o_less_rck_b=default.test, explain_o_new_i_pv.test,
     explain_o_new_zrrk_pv.test, explain_o_plus2__rk.test,
     explain_o_plus2_rk_rk.test, explain_o_plus_kel.test, explain_rf_i.test,
     explain_rga4i.test, explain_rgi-c++11.test, explain_sudc_i.test,
     explain_trigraphs_a9i-c++.test, explain_udl_c_i-01.test,
     explain_vv_o_new_z.test, explain_xxf_v-c++11.test,
     help_english-c++03.test, set_alt-tokens.test, set_digraphs-c89.test,
     set_digraphs_c89.test, set_expl.test, set_explicit-int.test,
     set_explicit-int=i.test, set_explicit-int=u.test, set_explicit-int=x.test,
     set_graphs.test, set_lang=c++.test, set_lang=xxx.test,
     set_nodigraphs.test, set_noexplicit-int.test, set_noexplicit-int=u.test,
     set_prompt=x.test, set_trigraphs-c++.test, set_trigraphs-cknr.test,
     set_trigraphs_c++17.test, set_xxx.test, show_all_predefined_glob-04.test:
     Added code-coverage and many more tests to cover previously uncovered
     code.
   * prompt.c, set_options.c: Reworked prompt handling to eliminate two
     pointers.

2021-09-26  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am, set_c++.out, set_c++03.out, set_c++11.out,
     set_c++14.out, set_c++17.out, set_c++20.out, set_c++23.out, set_c++98.out,
     set_c11.out, set_c17.out, set_c18.out, set_c89.out, set_c90.out,
     set_c95.out, set_c99.out, set_cknr.out, set_c++.test, set_c++03.test,
     set_c++11.test, set_c++14.test, set_c++17.test, set_c++20.test,
     set_c++23.test, set_c++98.test, set_c11.test, set_c17.test, set_c18.test,
     set_c89.test, set_c90.test, set_c95.test, set_c99.test, set_cknr.test:
     Added set c++23 test; updated set language tests to include expected
     output.

2021-09-24  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am: Renamed tests.

2021-09-22  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: s/scope_declaration_c/scoped_declaration_c/
   * parser.y: Better error message for missing fixed enum type.
   * parser.y: Grammar reorganization.

2021-09-21  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: s/IS_NESTED_TYPE_OK/CHECK_NESTED_TYPE_OK/
   * parser.y: Rule reordering.
   * parser.y: Moved c_sname_check() later.
   * c_type.c, parser.y: Now using c_tid_is_any() more.

2021-09-20  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Grammar rework.
   * parser.y: Renamed some grammar productions to be *_command.
   * parser.y: Better error message for in-scope declarations.
   * parser.y: Added typed_declaration_c production.
   * AUTHORS: Added C++23.

2021-09-19  Paul J. Lucas <paul@lucasmail.org>

   * check.c: Added assert().
   * check.c: Better error message for using ... in K&R C.
   * gibberish.c: Now using c_ast_is_ptr_to_kind().
   * AUTHORS, cdecl.1: Added mentions of inline and nested inline namespaces.
   * c_typedef.c: s/td_rb_visitor_data/tdef_rb_visitor_data/
   * parser.y: Added assert().
   * travis.sh: Added MAKE_OPTS.
   * c_sname.c, c_sname.h, check.c, gibberish.c, parser.y, strbuf.c, strbuf.h,
     test/Makefile.am, define_ins_ns_i.out, ins_ns_typedef_i.out,
     ns_ins_ns_typedef_i.out, ns_ins_typedef_i.out, define_ins_ns_i.test,
     ins_ns_typedef_i.test, ns_ins_ns_typedef_i.test, ns_ins_typedef_i.test:
     Added support for C++20's nested inline namespaces.

2021-09-18  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am: Namespace test renaming.
   * test/Makefile.am: Removed duplicate test.
   * cdecl.1, autocomplete.c, cdecl.c: `inline` is now a command in C++11 and
     later (presumed to be followed by `namespace`) and `namespace` is
     auto-completable.
   * autocomplete.c: Added "typedef" and "using" to autocomplete for "set"
     command.
   * test/Makefile.am, inamespace_typedef_i.out, inamespace_typedef_i.test:
     Added inline namespace test.

2021-09-17  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Moved comment.
   * check.c, define_namespace_c_namespace_c.out, en_ns_c.out,
     namespace_c_namespace_c.out: Removed "a" from error message.
   * c_sname.c: Eliminated is_match local variable.
   * c_sname.c: Fixed crash for any-scope matches.
   * configure.ac: Changed version to 11.0.
   * lexer.l, set_options.c: Either using a digraph or setting the digraphs
     option in a language before C95 now prints a warning that digraphs are not
     supported until C95.
   * literals.c, literals.h: Reordering.

2021-09-16  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, lexer.l, literals.c, literals.h: Added "floating-point".
   * cdecl.1, lexer.l, literals.c, literals.h: Added "double-precision".

2021-09-15  Paul J. Lucas <paul@lucasmail.org>

   * travis.sh: Switch to sh.
   * .travis.yml, travis.sh: Added own Travis CI build script.
   * .travis.yml: Added --disable-term-size.
   * cdecl.1: Added exit status code of 69.
   * run_test.sh: Now including exit status.
   * .travis.yml: Fixed ppc64le.
   * red_black_test.c: Silence -Wunused-value.
   * .travis.yml: Now using && in script; added after_success.
   * .travis.yml: Travis CI Linux + FreeBSD, multiple architectures.
   * .travis.yml: Travis-CI integration.
   * cdecl.1, c_lang.c, c_lang.h, help.c, cdecl-xx.out, help-c++.out,
     help-c.out, help_command-c++.out, help_command-c++03.out,
     help_command-c.out, help_commands-c++.out, help_commands-c.out: Now allow
     and default to C++23 for C++.
   * print.c: More print clean-up.
   * run_test.sh: Fixed columns-dependent tests.

2021-09-13  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c: Decided to remove the MEM_ZERO() completely.
   * c_ast.c: Moved MEM_ZERO() _before_ free().
   * util.h: Removed UNEXPECTED_STR_VALUE -- not used.

2021-09-12  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, dump.c: Now calling UNEXPECTED_INT_VALUE() for K_NONE.
   * c_ast.h: Using c_ast_is_kind_any() more.
   * check.c, gibberish.c: Using c_ast_is_kind_any() more.
   * c_ast_util.c, check.c: Using c_ast_is_kind_any() more.
   * c_kind.h, check.c, english.c, gibberish.c: Added
     CASE_K_NONE_OR_PLACEHOLDER.
   * c_ast.h, c_ast_util.c, c_ast_util.h, check.c, english.c, gibberish.c: More
     explicit with cases in some switches; now untypedefing more types before
     checks.
   * gibberish.c: Made kind switch cases explicit.
   * check.c, test/Makefile.am, explain_ari.out, explain_ari.test: An array of
     reference (or rvalue reference) is now correctly flagged as an error.
   * c_sname.c, c_sname.h: c_name_local_name() and c_name_full_name() now allow
     NULL.
   * cdecl.1: Removed ancient K&R C examples.
   * cdecl.1: Added "See PREDEFINED TYPES".
   * cdecl.1: Added mention of [file:line] in debug output.
   * cdecl.1: Proper way to indent.
   * cdecl.1: Now only 1 section in ~/.editrc.
   * cdecl.1: Added https://github.com/paul-j-lucas/cdecl/issues.

2021-09-11  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, test/Makefile.am, explain_fpf_pac_i.out, explain_fpf_pac_i.test:
     Fixed "pointer to function returning pointer to array" function argument.
   * check.c, test/Makefile.am, typedef_v.out, typedef_v_explain_v.out,
     typedef_v.test, typedef_v_explain_v.test: `typedef void V` is now
     correctly allowed and `V p` is now correctly flagged as an error.
   * check.c, test/Makefile.am, explain_p_typedef_ri.out,
     explain_p_typedef_ri.test: Declarations like "typedef int &RI; explain RI
     *p" are now correctly flagged as illegal.
   * check.c, test/Makefile.am, explain_f_typedef_ai.out,
     explain_f_typedef_ai.test: Functions returning a typdef of an array are
     now flagged as illegal.

2021-09-10  Paul J. Lucas <paul@lucasmail.org>

   * print.c: Test results are now consistent regardless of whether term-size
     is enabled or disabled.
   * print.c: Made comparison explicit.
   * print.c: Setting term_columns = 0 only when !defined(ENABLE_TERM_SIZE).
   * cdecl.1, c_keyword.c, literals.c, literals.h: Added partial support for
     Microsoft's __forceinline.

2021-09-09  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l, set_options.c, test/Makefile.am,
     declare_trigraphs_o_circ_eq_i_rk.test,
     declare_trigraphs_o_circ_rcki_k.test,
     declare_trigraphs_o_pipe2_2rck_b.test,
     declare_trigraphs_o_pipe_2rck_k.test,
     declare_trigraphs_o_pipe_eq_i_rk.test, declare_trigraphs_o_tilde_k.test,
     explain_trigraphs_nrfi_v-c++11.test,
     explain_trigraphs_o_circ_eq_i_rk.test,
     explain_trigraphs_o_circ_rcki_k.test,
     explain_trigraphs_o_pipe2_2rck_b.test,
     explain_trigraphs_o_pipe_2rck_k.test,
     explain_trigraphs_o_pipe_eq_i_rk.test, explain_trigraphs_o_tilde_k.test:
     More trigraph warnings.
   * cdecl.1, c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all-c++.out,
     show_all.out, show_all_predefined-c++.out, show_all_predefined.out,
     show_all_predefined_typedef-c++.out, show_all_typedef.out,
     show_predefined-c++.out, show_predefined.out, show_predefined_typedef.out,
     show_predefined_using.out: More POSIX/standard-ish types.
   * cdecl.1, c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all-c++.out,
     show_all.out, show_all_predefined-c++.out, show_all_predefined.out,
     show_all_predefined_typedef-c++.out, show_all_typedef.out,
     show_predefined-c++.out, show_predefined.out, show_predefined_typedef.out,
     show_predefined_using.out: Added sig_t and sighandler_t.
   * c_sglob.c: Made c_sglob_parse() more robust.
   * parser.y: Added MEM_ZERO().
   * c_ast.c: Added MEM_ZERO( ast ).
   * AUTHORS: Added mention of Microsoft calling conventions.

2021-09-08  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Removed unnecessary ().
   * lexer.l: Variable renaming.
   * parser.y, test/Makefile.am, explain_mscc_f_v.out, explain_mscd_f_v.out,
     explain_msfc_f_v.out, explain_mssc_f_v.out, explain_mstc_f_v.out,
     explain_msvc_f_v.out, explain_mswa_f_v.out, explain_p_mssc_f_v.out,
     explain_pp_mssc_f_v.out, explain_mscc_f_v.test, explain_mscd_f_v.test,
     explain_msfc_f_v.test, explain_mssc_f_v.test, explain_mstc_f_v.test,
     explain_msvc_f_v.test, explain_mswa_f_v.test, explain_p_mssc_f_v.test,
     explain_pp_mssc_f_v.test: Fixed declarations like: explain int (__stdcall
     **f)()

2021-09-07  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.h, check.c: Removed c_lang_oldest_name() -- used in only 1 place.

2021-09-06  Paul J. Lucas <paul@lucasmail.org>

   * c_sglob.c: s/C_SGLOB/C_SGLOB_INLINE/

2021-09-05  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: Added g_print_ast_bit_width().
   * gibberish.c: Made "if"s slightly more efficient by added "else"s where
     possible.

2021-09-04  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, c_ast_util.c, c_ast_util.h, c_sname.c, c_type.c,
     c_type.h, check.c, dump.c, english.c, gibberish.c, parser.y: s/tid/tids/
     where appropriate.
   * cdecl.h: Added #include <stddef.h>.
   * c_typedef.c, cdecl.c, cdecl.h: Added parse_cdecl_string() to cdecl.h.
   * c_typedef.c: s/c_typedef_parse_predefined/parse_predefined_types/
   * cdecl.1: s/earlier/later/
   * cdecl.1, help.c, parser.y, help_english-c++.out: Declaring a destructor in
     English now optionally allows `()`.

2021-09-03  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Reworked scope commands; added DIR.
   * parser.y: Better error message when missing '{' after namespace.
   * cdecl.1: s/pfi_rv/pfi_v/

2021-09-02  Paul J. Lucas <paul@lucasmail.org>

   * util.c: Added missing IF_EXIT( dup_s == NULL, EX_OSERR ).
   * util.c: Added PJL_IGNORE_RV().
   * c_sglob.c, c_sname.c, prompt.c, red_black.c: Added missing #include
     <stdlib.h>.
   * c_type.h: Added missing PJL_WARN_UNUSED_RESULT.
   * src/Makefile.am, c_sglob.c, c_sglob.h, c_sname.c, c_sname.h, parser.y,
     types.h: Made showing types more efficient by parsing glob only once.

2021-09-01  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l, test/Makefile.am, explain_ecf_v-Rstr-03.out,
     explain_ecf_v-Rstr-03.test: Fixed parsing of C++ raw string literals.
   * c_type.c: Sorted functions.

2021-08-31  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c: s/PREDEFINED_STD_C89/PREDEFINED_STD_C_89/
   * lexer.l: In K&R C, now printing a warning that trigraphs are not
     supported.
   * c_type.c, c_type.h: Split off functionality for "de-signed"-ing into
     c_tid_simplify() and now calling it from c_type_name().  Made
     c_tid_normalize() now also add `int` explicitly if it's implicit.
   * c_type.c: s/C2/E2/

2021-08-30  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all-c++.out,
     show_all.out, show_all_predefined-c++.out, show_all_predefined.out,
     show_all_predefined_typedef-c++.out, show_all_typedef.out,
     show_predefined-c++.out, show_predefined.out, show_predefined_typedef.out,
     show_predefined_using.out: Added the missing standard `DIR` type.
   * configure.ac, check.c, test/Makefile.am, explain_f_k-knr.out,
     explain_f_k-knr.test: Now correctly forbidding functions returning
     `struct` in K&R C.

2021-08-27  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, c_keyword.c, c_typedef.c, literals.c, literals.h,
     cdecl--debug.out, cdecl-d.out, show_all-c++.out, show_all.out,
     show_all_predefined-c++.out, show_all_predefined.out,
     show_all_predefined_typedef-c++.out, show_all_typedef.out,
     show_predefined-c++.out, show_predefined.out, show_predefined_typedef.out,
     show_predefined_using.out: Added single-underscore equivalents for
     Microsoft's extensions.

2021-08-26  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all-c++.out,
     show_all.out, show_all_predefined-c++.out, show_all_predefined.out,
     show_all_predefined_typedef-c++.out, show_all_typedef.out,
     show_predefined-c++.out, show_predefined.out, show_predefined_typedef.out,
     show_predefined_using.out: Added Microsoft types `__m128`, `__m128d`,
     `__m128i`, and `__m64`.
   * c_typedef.c: Added "Microsoft".
   * c_keyword.c, literals.c, literals.h: Added partial support for Microsoft's
     __asm.

2021-08-24  Paul J. Lucas <paul@lucasmail.org>

   * c_keyword.c: s/LANG_MIN(C_89)/LANG_ANY/ for __attribute__ and __declspec
     -- why not?
   * configure.ac: Added AC_TYPE_UINT64_T.
   * cdecl.1, c_keyword.c, literals.c, literals.h, parser.y, test/Makefile.am,
     explain_i_msds.out, explain_k_msds.out, explain_msds_i.out,
     explain_msds_k.out, explain_p_msds_i.out, explain_i_msds.test,
     explain_k_msds.test, explain_msds_i.test, explain_msds_k.test,
     explain_p_msds_i.test: Added partial support for Microsoft's __declspec.

2021-08-22  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, cdecl.1, c_ast.h, c_ast_util.c, c_ast_util.h, c_keyword.c,
     c_type.c, c_type.h, check.c, gibberish.c, lexer.l, literals.c, literals.h,
     parser.y, test/Makefile.am, declare_cdecl_f.out, declare_p_cdecl_f.out,
     explain_cdecl_f.out, explain_p_cdecl_f.out, explain_p_cdecl_v.out,
     declare_cdecl_f.test, declare_p_cdecl_f.test, explain_cdecl_f.test,
     explain_p_cdecl_f.test, explain_p_cdecl_v.test: Support for Microsoft
     calling conventions.

2021-08-21  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added "in cdecl".

2021-08-19  Paul J. Lucas <paul@lucasmail.org>

   * bootstrap: Now pre-checking for autoreconf, automake, and m4.
   * pjl_config.h: s/HAVE___TYPEOF__/PJL_IGNORE_RV/

2021-08-18  Paul J. Lucas <paul@lucasmail.org>

   * c_keyword.c, c_keyword.h, c_sname.c, check.c, lexer.l, parser.y, print.c:
     s/C_KW_CTX_ALL/C_KW_CTX_DEFAULT/
   * parser.y: Moved C99 check earlier.

2021-08-15  Paul J. Lucas <paul@lucasmail.org>

   * red_black.c, red_black.h: Made rb_tree_find() take pointer-to-const
     rb_tree.

2021-08-08  Paul J. Lucas <paul@lucasmail.org>

   * red_black.c: Changed rb_tree_visit_node() to use iteration rather than
     recursion.

2021-08-07  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Put when-to-colorize value synonyms on the same line.

2021-08-06  Paul J. Lucas <paul@lucasmail.org>

   * run_test.sh: Test script can now count ERRORs.

2021-08-05  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c, c_type.h, check.c, parser.y, print.c, test/Makefile.am,
     2k_typedef_i.out, c_namespace_c.out, cast_a3i.out, cast_f_i.out,
     cast_pfx_i.out, cast_rgi.out, cast_type_i.out, cast_typedef_i.out,
     cdecl-23.out, cdecl-Ix.out, cdecl-xx.out, const_cast_pi-c.out,
     declare_+ctor-error.out, declare_+o_eq_rck_rk=default-c++03.out,
     declare_+o_eq_rck_rk=delete-c++03.out, declare_0f_v-c.out,
     declare_=i-c.out, declare_a_cd_i.out, declare_a_nua_f.out,
     declare_ac3i.out, declare_af.out, declare_ai-c++11.out, declare_as3i.out,
     declare_avi.out, declare_b-c89.out, declare_b_ai.out, declare_b_f_i.out,
     declare_c-c.out, declare_c16-c++03.out, declare_c16-c99.out,
     declare_c32-c++03.out, declare_c32-c99.out, declare_c8-c++17.out,
     declare_cf_v-c.out, declare_cnmf_v.out, declare_co_exclam_k_b.out,
     declare_cri.out, declare_en-knr.out, declare_enc-c.out, declare_epf.out,
     declare_etsf_v.out, declare_exsi.out, declare_f_ai.out, declare_f_f_i.out,
     declare_fcf.out, declare_fco_exclam_b.out, declare_ff_v-c.out,
     declare_fiiv_v.out, declare_fiv_v.out, declare_fkr_pi.out,
     declare_fmf_v.out, declare_fmo_star_rk_rk.out, declare_fn.out,
     declare_frg_v.out, declare_fsi_v.out, declare_fuw3_v.out,
     declare_fvx_v.out, declare_hb.out, declare_hc.out, declare_hc16.out,
     declare_hc32.out, declare_hc8.out, declare_hd.out, declare_hf.out,
     declare_hl.out, declare_hll.out, declare_hv.out, declare_hwt.out,
     declare_ii.out, declare_ji.out, declare_lb.out, declare_lc.out,
     declare_lc16.out, declare_lc32.out, declare_lc8.out, declare_ld-knr.out,
     declare_lf-c.out, declare_ll-c89.out, declare_ll-knr.out, declare_lll.out,
     declare_lv.out, declare_lwt.out, declare_mo_arrow_i.out,
     declare_nmo_amper_i_i.out, declare_nmo_arrow_rk_pk.out,
     declare_nmo_brackets_rcki_v.out, declare_nmo_eq_rki_rk.out,
     declare_nmo_parens_rck_v.out, declare_nrfi_v-01-c++.out, declare_nri.out,
     declare_o_arrow_i.out, declare_o_arrow_rk_pk.out,
     declare_o_brackets_2i_i.out, declare_o_colon2_rk_rk.out,
     declare_o_dot_k.out, declare_o_dot_star_rk_rk.out,
     declare_o_exclam_2i.out, declare_o_less_eq_greater_2rck_a-c++17.out,
     declare_o_minus2_d_rk.out, declare_o_minus2_rkd_rk.out,
     declare_o_minus_iel_i.out, declare_o_oexclam_k_b.out,
     declare_o_plus2_d_rk.out, declare_o_plus2_rkd_rk.out,
     declare_o_plus_iel_i.out, declare_o_qmark_colon_k2i_i.out,
     declare_pfkr_i.out, declare_pk.out, declare_pmri.out, declare_pri.out,
     declare_puw3.out, declare_pv-knr.out, declare_rgf_v.out,
     declare_ro_exclam_k_b.out, declare_rrgi.out, declare_rro_exclam_k_b.out,
     declare_rtf_v-c.out, declare_rv.out, declare_sb.out, declare_sc-knr.out,
     declare_sc16.out, declare_sc32.out, declare_sc8.out, declare_si-knr.out,
     declare_sl-knr.out, declare_smi.out, declare_sv.out, declare_swt.out,
     declare_t.out, declare_typedef_i_al8.out, declare_ub.out,
     declare_uc16.out, declare_uc32.out, declare_uc8.out, declare_ud.out,
     declare_udc_a4i.out, declare_uf.out, declare_uv.out, declare_uwt.out,
     declare_uz.out, declare_v+f_v.out, declare_v.out, declare_vf_v-c.out,
     declare_vo_exclam_k_b.out, declare_vri.out, declare_wt-c89.out,
     declare_xxi-c.out, declare_yo_exclam_k_b.out, define_=sc_i.out,
     define_ai.out, define_c_int_least32_t.out, define_eti.out,
     define_namespace_=c_i.out, define_namespace_c_namespace_c.out,
     define_rgi.out, define_si.out, dynamic_cast_pc-c.out, en_ns_c.out,
     explain_+co_eq2_rck_b=default-cpp17.out, explain_+ctor-error.out,
     explain_+dtor-error.out, explain_+i-c.out,
     explain_+o_eq_rck_rk=default-02.out, explain_+o_eq_rck_rk=delete-02.out,
     explain_+o_exclam_eq_rck_rk=delete.out, explain_0f_v-02.out,
     explain_0f_v-c.out, explain_a_cd_i.out, explain_a_nua_f.out,
     explain_ac9i.out, explain_af.out, explain_ai-c++11.out, explain_al3_c.out,
     explain_as9i.out, explain_b-c89.out, explain_b_ai.out, explain_c-c.out,
     explain_c16-c++03.out, explain_c16-c99.out, explain_c32-c++03.out,
     explain_c32-c99.out, explain_c8-c++17.out, explain_c_al3.out,
     explain_cast_a3a5a7i.out, explain_cast_a3a5i.out, explain_cast_a3i.out,
     explain_cast_ai.out, explain_cast_eti.out, explain_cast_lll.out,
     explain_cast_rgi.out, explain_cast_si.out, explain_cast_typedef_i.out,
     explain_cepctor_i.out, explain_cf_v-c.out, explain_ci-knr.out,
     explain_cmo_less_eq_greater_rck_i=default.out, explain_co_exclam_k_b.out,
     explain_const_cast_pi-c.out, explain_dynamic_cast_pc-c.out,
     explain_efd.out, explain_efi-c.out, explain_en-knr.out, explain_enc.out,
     explain_enk.out, explain_etsf_v.out, explain_exsi.out, explain_f+_v.out,
     explain_f__v-c++03.out, explain_f_ai.out, explain_f_v__v.out,
     explain_fa_v-c++17.out, explain_fac3_v-c++.out, explain_fas3_v-c++.out,
     explain_fasv_v.out, explain_fav_v-c++.out, explain_fel_v.out,
     explain_felcc_v.out, explain_felel_v.out, explain_felv_v.out,
     explain_ff_v-c.out, explain_fiiv_v.out, explain_fiv_v.out,
     explain_fkr_pi.out, explain_fkr_v.out, explain_fn.out,
     explain_fo_eq2_crki_b=default.out, explain_fo_eq2_crkk_b=default.out,
     explain_fo_eq2_crkrk_b=default.out, explain_fo_eq2_icrk_b=default.out,
     explain_fo_eq2_ik_b=default.out, explain_fo_eq2_kcrk_b=default.out,
     explain_fo_eq2_ki_b=default.out, explain_fo_eq2_rkcrk_b=default.out,
     explain_fo_less_eq_greater_2rck_i=default.out,
     explain_fo_plus_2crk_b=default.out, explain_fpcf_i_v.out,
     explain_frg_v.out, explain_frri_v-c++03.out, explain_fsf_v.out,
     explain_fsi_v.out, explain_fuw3_v.out, explain_fvel_v.out,
     explain_fvi_v.out, explain_fvv_v.out, explain_fvx_v.out, explain_hb.out,
     explain_hc.out, explain_hc16.out, explain_hc32.out, explain_hc8.out,
     explain_hd.out, explain_hf.out, explain_hl.out, explain_hll.out,
     explain_hv.out, explain_hwt.out, explain_i-itself.out, explain_ii.out,
     explain_lb.out, explain_lc.out, explain_lc16.out, explain_lc32.out,
     explain_lc8.out, explain_ld-knr.out, explain_lf-c.out, explain_ll-c89.out,
     explain_ll-knr.out, explain_lll.out, explain_lv.out, explain_lwt.out,
     explain_main_f2c_i.out, explain_main_f_v.out, explain_main_fi_i.out,
     explain_main_fiapc_hi.out, explain_main_fic_i.out,
     explain_main_fipc_i.out, explain_main_fippi_i.out,
     explain_nrfi_v-c++-error.out, explain_o_arrow_i.out,
     explain_o_brackets_2i_i.out, explain_o_exclam_2i.out,
     explain_o_minus2_d_rk.out, explain_o_minus2_rkd_rk.out,
     explain_o_minus_iel_i.out, explain_o_new_z_z.out,
     explain_o_plus2_d_rk.out, explain_o_plus2_rkd_rk.out,
     explain_o_plus_iel_i.out, explain_o_qmark_colon_k2i_i.out,
     explain_ov_o_exclam_k_b.out, explain_pcf_i.out, explain_pmi-c.out,
     explain_pmrgi.out, explain_pmri.out, explain_pri.out, explain_prri.out,
     explain_puw3.out, explain_pv-knr.out, explain_reinterpret_cast_pv-c.out,
     explain_rf_v-c++03.out, explain_rgf_v.out, explain_ri-c.out,
     explain_ro_exclam_k_b.out, explain_rr.out, explain_rrf_v-c++03.out,
     explain_rrgi.out, explain_rro_exclam_k_b.out, explain_rrr-1.out,
     explain_rrr-2.out, explain_rrrr.out, explain_rtf_v-error.out,
     explain_rtpi-c++-error.out, explain_rv.out, explain_sb.out,
     explain_sc-knr.out, explain_sc16.out, explain_sc32.out, explain_sc8.out,
     explain_scf_v.out, explain_si-knr.out, explain_sl-knr.out,
     explain_smi.out, explain_srf_v.out, explain_srrf_v.out,
     explain_static_cast_i-c.out, explain_sv.out, explain_swt.out,
     explain_thf_v.out, explain_tli-c99.out, explain_type_i.out,
     explain_typedef_ci32.out, explain_ub.out, explain_uc16.out,
     explain_uc32.out, explain_uc8.out, explain_ud.out, explain_udc_a4i.out,
     explain_udl_2c_i.out, explain_udl_3c_i.out, explain_udl__i.out,
     explain_udl_c_i-c.out, explain_udl_piul_i.out, explain_udl_ul_i.out,
     explain_uf.out, explain_using_pfi_v-c.out, explain_uv.out,
     explain_uwt.out, explain_v+f_v.out, explain_v.out, explain_vf_v-c.out,
     explain_vi-knr.out, explain_vo_exclam_k_b.out, explain_vovyf-c.out,
     explain_wt-c89.out, explain_xif_i.out, explain_xxi-c.out,
     explain_yo_exclam_k_b.out, file-cast_x.out, file-declare_x.out,
     file-explain_x.out, k_namespace_typedef_i.out, k_ns_typedef_i.out,
     k_typedef_i-c.out, namespace_+typedef_i-c++14.out,
     namespace_c_namespace_c.out, reinterpret_cast_pv-c.out, show_foo.out,
     static_cast_i-c.out, typedef_ai.out, typedef_c_int_least32_t.out,
     typedef_eti.out, typedef_i+.out, typedef_iw3.out, typedef_rgi.out,
     typedef_si.out, typedef_tni.out, using_ai.out, using_c_int_least32_t.out,
     using_eti.out, using_f-name_v.out, using_i-c.out, using_rgi.out,
     using_si.out, xec_explain_lla.out, xec_explain_llr.out, xec_explain_t.out,
     xec_explain_ti.out, xupc_explain_ri.out, run_test.sh,
     explain_fo_plus_2crk_b=default.test, update_test.sh: Now diff'ing error
     test output during "make check"; improved several error messages.

2021-08-01  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Better error message when attempting to overload operators in C.
   * check.c, parser.y: s/c_lang_which( LANG_CPP_11 )/c_lang_which(
     LANG_CPP_MIN(11) )/ and similar so error messages print " until C++XX"
     rather than " unless C++XX".

2021-07-29  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.h: Fixed printing of "(with XXXXX extensions)".
   * c_kind.h, c_type.h, types.h: s/0/0u/

2021-07-28  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.c: Now in error messages, if there is only a single language that's
     relevant, prints "unless <lang>".

2021-07-16  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, check.c: Marking functions and conversion operators `=
     delete` is now supported.

2021-07-12  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.c, lexer.l, util.c, util.h: Simplified parse_identifier().

2021-07-08  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Clarification that ~/.editrc doesn't _need_ to be present.
   * cdecl.1: Added "or even the platform on which cdecl is running.
   * cdecl.1: Added less(1).

2021-07-05  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Now setting lexer_keyword_ctx = C_KW_CTX_MBR_FUNC only in C++.
   * gibberish.c: Completed set of digraphs and trigraphs even though they're
     not used in cdecl.
   * c_typedef.c: Moved mbstate_t to C95.

2021-07-03  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Added free_later().

2021-07-02  Paul J. Lucas <paul@lucasmail.org>

   * check.c: s/identifier/name/

2021-07-01  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, cdecl.c, did_you_mean.c, lexer.l: Fixed
     PJL_WARN_UNUSED_RESULT and PJL_NOWARN_UNUSED_RESULT in various locations.

2021-06-30  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: s/CONFIGURATION FILE/CONFIGURATION FILES/
   * cdecl.1: Added section on ~/.editrc.
   * cdecl.1: Added .editrc entry.
   * c_ast_util.c: Added asserts.

2021-06-29  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_kind.c: Added assert().
   * c_ast_util.c: s/kind_id/kind_ids/

2021-06-28  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c, c_lang.c, c_lang.h, c_type.c, did_you_mean.c, gibberish.c,
     parser.y: Added opt_lang_is_any().
   * cdecl.c, types.h: s/C_COMMAND_ANY/C_COMMAND_ANYWHERE/
   * cdecl.c, cdecl.h, print.c, print.h: Moved command_line, command_line_len,
     and inserted_len into new print_params struct.

2021-06-27  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c: c_ast_set_name() is now also setting the local scope-type if
     necessary.
   * c_kind.h: Reworked c_kind to use (1u << n).
   * c_kind.h: Simplified K_ANY_OBJECT and K_ANY_PARENT.

2021-06-24  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.h: Fixed comment capitalization.

2021-06-19  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Pointers to union members are now allowed.
   * c_ast.h, types.h: Moved c_visit_dir to c_ast.h.

2021-06-17  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, cdecl.h, print.c: Moved extern variables into cdecl.h.
   * c_type.h, english.c: s/c_tid_name_eng/c_tid_name_english/
   * english.c: s/non_type_name/c_type_print_not_base/

2021-06-14  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added missing "on".

2021-06-13  Paul J. Lucas <paul@lucasmail.org>

   * help.c, help_english-c++.out, help_english-c.out, help_english-c89.out,
     help_english-knr.out: `typedef` has been added to the "store" section of
     English help.
   * c_keyword.c, c_lang.c, options.c, set_options.c: Simplified *_next()
     functions.
   * c_keyword.c, c_lang.c, set_options.c: Simplified *_next() functions.
   * options.c, options.h, set_options.c: Swapped parameter order for
     parse_explicit_int().
   * util.h: s/long long/unsigned long long/
   * c_kind.c, c_kind.h: Removed INLINE stuff -- no longer needed.
   * configure.ac, c_ast.c, c_ast.h, c_ast_util.c, c_kind.h, check.c,
     english.c: Changed visitor data type to uint64_t so it's always 64 bits
     and so can always hold that or a pointer, even on 32-bit platforms.
   * c_ast_util.c: No longer using "data" parameter of c_ast_visitor_name().
   * c_ast_util.c: Now using c_type_or_eq().
   * c_type.c: Optimized calls to c_tid_normalize().
   * c_type.c: c_type_equal() now normalizes the base tids.

2021-06-12  Paul J. Lucas <paul@lucasmail.org>

   * c_type.h: Added TB_COMPLEX and TB_INT to TB_ANY_MODIFIEE.
   * c_type.c, c_type.h, check.c, gibberish.c: More uses of TS_CONST_VOLATILE.
   * c_type.h: Simplification of c_tid_is_size_t().
   * c_type.c, c_type.h: s/TX_MASK_PART_ID/TX_MASK_TPID/
   * c_type.c, check.c, gibberish.c, options.c: Now using c_tid_is_any() more.
   * dump.c: s/_/./
   * dump.c, dump.h, parser.y: s/kv_dump/str_dump/
   * parser.y: Sorted macros.

2021-06-11  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, test/Makefile.am, using_f-name_v.test: `using` declarations now
     correctly forbid names in the types on the right-hand side.
   * cdecl.1: Added (missing) mention of `constexpr` to C++11.

2021-06-10  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, c_type.c, gibberish.c, declare_ovc_udc_i.out,
     declare_ovyf.out, declare_vovyf.out: In C++, at most one of `virtual`,
     `final`, or `override` is now printed.
   * c_type.c: Simplified c_type_name() a bit.
   * c_type.c: Simplified c_tid_normalize().

2021-06-08  Paul J. Lucas <paul@lucasmail.org>

   * dump.c, cdecl--debug.out, cdecl-d.out: s/base/btid/; s/store/stid/;
     s/attr/atid/
   * parser.y, cdecl--debug.out, cdecl-d.out: Renamed grammar rules *_tid* to
     *_[bsa]tid*.
   * c_ast_util.c, c_type.c, c_type.h, check.c, parser.y: s/_tid/_tids/ (when
     plural)/; s/_tid/_stid/ (when appropriate)
   * c_ast.c, c_ast.h, c_ast_util.c, c_ast_util.h, c_sname.c, c_type.c,
     c_type.h, check.c, dump.c, english.c, gibberish.c, parser.y:
     s/base_tid/btid/; s/store_tid/stid/; s/attr_tid/atid/
   * c_ast.h, c_ast_util.c, c_ast_util.h, c_keyword.h, c_sname.c, c_type.c,
     c_type.h, check.c, did_you_mean.c, dump.c, dump.h, english.c, gibberish.c,
     lexer.l, options.c, options.h, parser.y, print.c, types.h:
     s/c_type_id/c_tid/; s/c_type_part_id/c_tpid/

2021-06-07  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, cdecl.c: /parse_/parse_cdecl_/
   * c_typedef.c: Added "const".
   * c_sname.c, lexer.l: Made c_sname_parse() more robust and not return false
     positives.

2021-06-06  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.h: Simplified SNAME_VAR_INIT().
   * parser.y: Didn't need c_type_is_none() check before setting TB_SCOPE.
   * parser.y: Now using c_sname_check() in of_scope_list_english.

2021-06-05  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, c_sname.h, c_type.h, lexer.l, parser.y: s/scope
     type/scope-type/
   * src/Makefile.am, c_ast_util.h, check.c, check.h, parser.y: Added check.h;
     moved c_sname_check() into it (and .c).
   * test/Makefile.am: Test renaming.
   * c_type.c, c_type.h, parser.y, test/Makefile.am, en_ns_c.test: Fixed
     checking of enum scope types.
   * c_type.c, c_type.h: Adde TB_ANY_MODIFIEE.
   * c_sname.c, c_sname.h, c_type.c, c_type.h, parser.y: Moved functions
     around.

2021-06-04  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_typedef.c, c_typedef.h, parser.y: When attempting to use
     an sname with a scope-type that doesn't match a previously declared type,
     the previously declared type is printed.
   * c_type.h, parser.y, test/Makefile.am, define_namespace_c_namespace_c.test:
     Now also checking the scope-types of English snames.
   * parser.y: Fixed "previosuly declared as <type>".

2021-06-03  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Fixed printing of previously declared type.
   * parser.y: Added c_typedef_find_scope().
   * parser.y: Removed redundant code.
   * configure.ac, c_type.h, c_typedef.c, parser.y, test/Makefile.am,
     cdecl--debug.out, cdecl-d.out, namespace_c_namespace_+e.out,
     c_namespace_c.test, namespace_c_namespace_+e.test,
     namespace_c_namespace_c.test: Fixed setting of snames' scope types and
     checking for clashes with previous declarations.
   * c_ast_util.c, c_ast_util.h, c_type.h, check.c: Fixed incorrect using of
     loc of untypedef'd AST.

2021-06-02  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.c, c_sname.h, english.c: c_sname_local_type() now always returns
     the type of the inner-most scope.
   * slist.h: Made FOREACH_SLIST() cast away const so it can iterate over const
     and non-const.

2021-06-01  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.h: Fixed comment.
   * c_typedef.c, cdecl--debug.out, cdecl-d.out: Now using abbreviated type
     declaration syntax for more predefined types.
   * parser.y: Now setting intermediate scopes to TB_NAMESPACE if they don't
     already have a type.
   * cdecl.1, c_typedef.c, lexer.l, cdecl--debug.out, cdecl-d.out,
     show_all-c++.out, show_all.out, show_all_predefined-c++.out,
     show_all_predefined.out, show_all_predefined_typedef-c++.out,
     show_all_typedef.out, show_predefined-c++.out, show_predefined_using.out:
     Fixed lexer matching partial tokens; added regex_constants and other
     types.

2021-05-31  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Now checking for constructor sname first.
   * parser.y: No longer unnessarily changing TB_SCOPE to TB_NAMESPACE.

2021-05-30  Paul J. Lucas <paul@lucasmail.org>

   * print.c, util.h: Added WS.
   * print.c: Made whitespace order sorted.
   * lexer.l: Reformatting.
   * c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all-c++.out,
     show_all.out, show_all_predefined-c++.out, show_all_predefined.out,
     show_all_predefined_typedef-c++.out, show_all_typedef.out,
     show_predefined-c++.out, show_predefined_using.out: Added types
     `std::ios_base`, `std::ios_base::fmtflags`, `std::ios_base::iostate`,
     `std::ctype_base::mask`, `std::ios_base::openmode`, `std::launch`, and
     `std::chars_format`.

2021-05-29  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Now forbidding changing scope type of nested namespaces.
   * parser.y: For nested namespaces, now setting scope type only if they don't
     have one.
   * parser.y: s/any_sname_c/any_sname_c_exp; s/sname_c/any_sname_c_exp/
   * configure.ac, options.c: Fixed flex-debug build.

2021-05-27  Paul J. Lucas <paul@lucasmail.org>

   * did_you_mean.c: Removed unnecessary check.
   * autocomplete.c, cdecl.c, cdecl.h, did_you_mean.c: Added FOREACH_COMMAND().

2021-05-26  Paul J. Lucas <paul@lucasmail.org>

   * Makefile.am: Added bootstrap ane makedoc.sh to EXTRA_DIST.
   * configure.ac: Updated version to 10.0.
   * check.c: Formatting.
   * cdecl.1: Added NOTES section about main().
   * cdecl.1: Rewording.
   * cdecl.1: Added "constant".
   * check.c: Always do main() checks in C.
   * c_type.h, check.c, test/Makefile.am, explain_main_vf_h.out,
     explain_main_vf_h.test: If a function named "main" has any storage-like
     type that can't be used with the program's `main()`, assume it's just a
     member function named "main" and not the program's `main()`.
   * cdecl.1, c_ast_util.c, c_ast_util.h, c_type.c, c_type.h, c_typedef.c,
     check.c, test/Makefile.am, cdecl--debug.out, cdecl-d.out,
     explain_+co_eq2_rck_b=default.out,
     explain_cmo_less_eq_greater_rck_a=default.out,
     explain_co_eq2_crk_b=default.out, explain_fo_eq2_2crk_b=default.out,
     explain_fo_eq2_2k_b=default.out, explain_mo_less_eq_greater_rck_a.out,
     explain_o_less_eq_greater_2rck_i.out,
     explain_+co_eq2_rck_b=default-cpp17.test,
     explain_+co_eq2_rck_b=default.test,
     explain_cmo_less_eq_greater_rck_a=default.test,
     explain_cmo_less_eq_greater_rck_i=default.test,
     explain_co_eq2_crk_b=default.test, explain_fo_eq2_2crk_b=default.test,
     explain_fo_eq2_2k_b=default.test, explain_fo_eq2_crki_b=default.test,
     explain_fo_eq2_crkk_b=default.test, explain_fo_eq2_crkrk_b=default.test,
     explain_fo_eq2_icrk_b=default.test, explain_fo_eq2_ik_b=default.test,
     explain_fo_eq2_kcrk_b=default.test, explain_fo_eq2_ki_b=default.test,
     explain_fo_eq2_rkcrk_b=default.test,
     explain_fo_less_eq_greater_2rck_i=default.test,
     explain_fo_plus_2crk_b=default.test,
     explain_mo_less_eq_greater_rck_a.test,
     explain_o_less_eq_greater_2rck_i.test: Now support defaulting of
     relational operators in C++20.
   * c_ast_util.c, c_ast_util.h: Removed c_ast_is_ref_to_type_any() --
     shouldn't be here yet.
   * test/Makefile.am: Fixed test run.
   * c_ast_util.c, test/Makefile.am, explain_rgk.out, explain_rgk.test: The
     return type of `main()` is now correctly restricted to `int`. Declaring a
     `struct` as `register` is now legal.
   * test/Makefile.am: Fixed some duplicate/incorrect tests.

2021-05-25  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Made show_type_visitor() slightly more efficient.

2021-05-24  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.h, c_type.h, check.c: Added C_TYPE_LIT_x_ANY() macros.

2021-05-23  Paul J. Lucas <paul@lucasmail.org>

   * check.c: Simplification.
   * check.c: Added missing "const".
   * check.c: s/c_type_is_tid_any( &ast->type, TB_VOID )/c_ast_is_builtin_any(
     ast, TB_VOID )/
   * check.c: Simplified member vs. non-member operator string.
   * check.c: Fixed hidden bug with and cleaned-up operator member/non-member
     determination.
   * check.c: Moved call of c_ast_check_oper_params() to end of
     c_ast_check_oper().
   * c_ast_util.c, c_ast_util.h, c_operator.c, c_operator.h, english.c:
     s/c_oper_get_overload()/c_ast_oper_overload()/
   * c_operator.c, c_operator.h: Added C_OP_NOT_OVERLOADABLE into
     c_oper_get_overload(); changed C_OP_NOT_OVERLOADABLE to (1u<<2); changed
     C_OP_MASK_OVERLOAD to 0x7u.

2021-05-22  Paul J. Lucas <paul@lucasmail.org>

   * check.c: Changed if/else/if to switch.
   * check.c: Added overload_flags; s/is_user_non_member/is_non_member/

2021-05-21  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_ast_util.h, c_type.h: Overhaul of
     c_ast_is_ptr_to_tid_any() and c_ast_is_ref_to_tid_any() to better handle
     const/volatile.
   * c_type.c, c_type.h: Added c_type_get_tid().

2021-05-20  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c, c_type.h: Changed semantics of c_type_is_any() to check only
     non-NONE types.

2021-05-18  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c: Added c_type_id_normalize().
   * c_type.c: Simplified c_type_is_any().

2021-05-18  Marco Sirabella <marco@sirabella.org>

   * configure.ac: Search for the library containing: tigetnum (tinfo)

2021-05-17  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c: c_ast_is_ref_to_tid_any() now insists on a reference.
   * dump.c: For typedefs, now dumping entire for_ast.
   * c_ast_util.c, c_type.c, c_type.h: Made c_ast_is_ptr_to_tid_any() and
     c_ast_is_ref_to_tid_any() now accept any type part ID.
   * declare_+o_delete_a_pv_v.test, declare_+o_delete_pv_v.test,
     declare_+o_eq_rck_rk=default-c++03.test,
     declare_+o_eq_rck_rk=default.test, declare_+o_eq_rck_rk=delete-c++03.test,
     declare_+o_eq_rck_rk=delete.test, declare_+o_new_a_z_pv.test,
     declare_+o_new_z_pv.test, declare_alttokens_o_amper2_rck_b.test,
     declare_alttokens_o_amper_eq_rki_rk.test,
     declare_alttokens_o_amper_rcki_k.test,
     declare_alttokens_o_circ_eq_i_rk.test,
     declare_alttokens_o_circ_rcki_k.test,
     declare_alttokens_o_exclam_eq_rcki_b.test,
     declare_alttokens_o_exclam_rck_b.test,
     declare_alttokens_o_pipe_2rck_k.test,
     declare_alttokens_o_pipe_eq_i_rk.test, declare_alttokens_o_pipe_i_rk.test,
     declare_alttokens_o_tilde_k.test, declare_ck2-ec.test, declare_ck2.test,
     declare_co_exclam_k_b.test, declare_fmo_star_rk_rk.test,
     declare_mo_amper2_rck_b.test, declare_mo_amper_eq_i_rk.test,
     declare_mo_amper_i_rk.test, declare_mo_amper_pk.test,
     declare_mo_arrow_i.test, declare_mo_arrow_pk.test,
     declare_mo_arrow_star_i_rk.test, declare_mo_circ_eq_i_rk.test,
     declare_mo_comma_i_rk.test, declare_mo_greater2_eq_i_rk.test,
     declare_mo_greater2_i_k.test, declare_mo_greater_eq_rcki_b.test,
     declare_mo_less2_eq_i_rk.test, declare_mo_less2_i_k.test,
     declare_mo_less_eq_rcki_b.test, declare_mo_minus_eq_i_rk.test,
     declare_mo_minus_i_k.test, declare_mo_percent_eq_i_rk.test,
     declare_mo_percent_i_k.test, declare_mo_pipe2_rck_b.test,
     declare_mo_pipe_eq_i_rk.test, declare_mo_pipe_i_rk.test,
     declare_mo_plus_eq_i_rk.test, declare_mo_plus_i_k.test,
     declare_mo_slash_eq_i_rk.test, declare_mo_star_eq_i_rk.test,
     declare_mo_star_i_rk.test, declare_mo_star_rk.test,
     declare_mo_tilde_k.test, declare_nmo_amper2_2rck_b.test,
     declare_nmo_amper_eq_rki_rk.test, declare_nmo_amper_rcki_k.test,
     declare_nmo_amper_rk_pk.test, declare_nmo_arrow_rk_pk.test,
     declare_nmo_arrow_star_rki_rk.test, declare_nmo_brackets_rcki_v.test,
     declare_nmo_circ_rcki_k.test, declare_nmo_comma_rki_rk.test,
     declare_nmo_eq_rki_rk.test, declare_nmo_exclam_eq_ki_b.test,
     declare_nmo_exclam_rck_b.test, declare_nmo_greater2_rcki_k.test,
     declare_nmo_greater_eq_rcki_b.test, declare_nmo_greater_rcki_b.test,
     declare_nmo_less2_eq_rki_rk.test, declare_nmo_less2_rcki_k.test,
     declare_nmo_less_eq_rcki_b.test, declare_nmo_less_rcki_b.test,
     declare_nmo_minus2_rki_rk.test, declare_nmo_minus_eq_rki_rk.test,
     declare_nmo_minus_rcki_k.test, declare_nmo_parens_rck_v.test,
     declare_nmo_percent_eq_rki_rk.test, declare_nmo_percent_rcki_k.test,
     declare_nmo_pipe2_2rck_b.test, declare_nmo_pipe_eq_rki_rk.test,
     declare_nmo_plus2_rki_rk.test, declare_nmo_plus_eq_rki_rk.test,
     declare_nmo_plus_rcki_k.test, declare_nmo_slash_eq_rki_rk.test,
     declare_nmo_slash_rcki_k.test, declare_nmo_star_eq_rki_rk.test,
     declare_nmo_star_rck_k.test, declare_nmo_star_rcki_k.test,
     declare_nmo_tilde_rck_k.test, declare_o_amper2_2rck_b.test,
     declare_o_amper2_rck_b.test, declare_o_amper_2rck_k.test,
     declare_o_amper_eq_i_rk.test, declare_o_amper_eq_rki_rk.test,
     declare_o_amper_i_rk.test, declare_o_amper_pk.test,
     declare_o_amper_rcki_k.test, declare_o_arrow_i.test,
     declare_o_arrow_rk_pk.test, declare_o_arrow_star_i_rk.test,
     declare_o_arrow_star_rki_rk.test, declare_o_circ_eq_i_rk.test,
     declare_o_colon2_rk_rk.test, declare_o_comma_rki_rk.test,
     declare_o_dot_k.test, declare_o_dot_star_rk_rk.test,
     declare_o_eq2_ki_b.test, declare_o_exclam_eq_ki_b.test,
     declare_o_exclam_rck_b.test, declare_o_greater2_eq_i_rk.test,
     declare_o_greater2_i_k.test, declare_o_greater2_rcki_k.test,
     declare_o_greater_eq_rcki_b.test, declare_o_less2_eq_i_rk.test,
     declare_o_less2_i_k.test, declare_o_less2_rcki_k.test,
     declare_o_less_eq_greater_2rck_a-c++17.test,
     declare_o_less_eq_greater_2rck_a.test, declare_o_less_eq_rcki_b.test,
     declare_o_minus2_d_rk.test, declare_o_minus2_rkd_rk.test,
     declare_o_minus_i_k.test, declare_o_oexclam_k_b.test,
     declare_o_percent_eq_i_rk.test, declare_o_percent_eq_rki_rk.test,
     declare_o_percent_i_k.test, declare_o_percent_rcki_k.test,
     declare_o_pipe2_2rck_b.test, declare_o_pipe2_rck_b.test,
     declare_o_pipe_eq_i_rk.test, declare_o_pipe_eq_rki_rk.test,
     declare_o_pipe_i_rk.test, declare_o_plus2_d_rk.test,
     declare_o_plus2_rkd_rk.test, declare_o_plus_i_k.test,
     declare_o_qmark_colon_k2i_i.test, declare_o_slash_eq_i_rk.test,
     declare_o_star_eq_i_rk.test, declare_o_star_eq_rki_rk.test,
     declare_o_star_i_rk.test, declare_o_star_rck_k.test,
     declare_o_star_rcki_k.test, declare_o_star_rk.test,
     declare_o_tilde_k.test, declare_o_tilde_rck_k.test,
     declare_ro_exclam_k_b.test, declare_rro_exclam_k_b.test,
     declare_trigraphs_o_circ_eq_i_rk.test,
     declare_trigraphs_o_circ_rcki_k.test,
     declare_trigraphs_o_pipe2_2rck_b.test,
     declare_trigraphs_o_pipe_2rck_k.test,
     declare_trigraphs_o_pipe_eq_i_rk.test, declare_trigraphs_o_tilde_k.test,
     declare_udc_rcc.test, declare_vo_exclam_k_b.test,
     declare_yo_exclam_k_b.test, define_k_declare_k.test,
     define_k_define_k_explain_k+k.test, define_k_explain_pmki.test,
     explain_+o_delete_a_pv_v.test, explain_+o_delete_pv_v.test,
     explain_+o_eq2_rcki_b.test, explain_+o_eq_rck_rk.test,
     explain_+o_eq_rck_rk=default-01.test,
     explain_+o_eq_rck_rk=default-02.test, explain_+o_eq_rck_rk=delete-01.test,
     explain_+o_eq_rck_rk=delete-02.test,
     explain_+o_exclam_eq_rck_rk=default.test,
     explain_+o_exclam_eq_rck_rk=delete.test, explain_+o_new_a_z_pv.test,
     explain_+o_new_z_pv.test, explain_+udc_i.test,
     explain_0o_amper_rk_pk.test, explain_0o_minus2_i_rk.test,
     explain_0o_minus_rk_rk.test, explain_0o_plus2_i_rk.test,
     explain_0o_plus_rk_rk.test, explain_0o_star_rk_rk.test,
     explain_a_nua_k-2.test, explain_co_amper_rk_pk.test,
     explain_co_exclam_k_b.test, explain_co_minus2_i_rk.test,
     explain_co_minus_rk_rk.test, explain_co_plus2_i_rk.test,
     explain_co_plus_rk_rk.test, explain_co_star_rk_rk.test,
     explain_co_tilde_k.test, explain_ki+.test, explain_o_amper2_2rck_b.test,
     explain_o_amper2_rck_b.test, explain_o_amper_2rck_k.test,
     explain_o_amper_eq_i_rk.test, explain_o_amper_eq_rki_rk.test,
     explain_o_amper_i_rk.test, explain_o_amper_pk.test,
     explain_o_amper_rcki_k.test, explain_o_amper_rk_pk.test,
     explain_o_arrow_pk.test, explain_o_arrow_star_i_rk.test,
     explain_o_arrow_star_rki_rk.test, explain_o_circ_eq_i_rk.test,
     explain_o_circ_eq_rki_rk.test, explain_o_circ_rcki_k.test,
     explain_o_comma_i_rk.test, explain_o_comma_rcki_k.test,
     explain_o_comma_rki_rk.test, explain_o_eq2_ki_b.test,
     explain_o_exclam_eq_ki_b.test, explain_o_exclam_rck_b.test,
     explain_o_greater2_eq_i_rk.test, explain_o_greater2_eq_rki_rk.test,
     explain_o_greater2_i_k.test, explain_o_greater2_i_rk.test,
     explain_o_greater2_rcki_k.test, explain_o_greater2_rki_rk.test,
     explain_o_greater_eq_rcki_b.test, explain_o_greater_rcki_b.test,
     explain_o_less2_eq_i_rk.test, explain_o_less2_eq_rki_rk.test,
     explain_o_less2_i_k.test, explain_o_less2_i_rk.test,
     explain_o_less2_rcki_k.test, explain_o_less2_rki_rk.test,
     explain_o_less_eq_rcki_b.test, explain_o_less_rcki_b.test,
     explain_o_minus2_d_rk.test, explain_o_minus2_rkd_rk.test,
     explain_o_minus2_rki_rk.test, explain_o_minus_2rck_k.test,
     explain_o_minus_eq_i_rk.test, explain_o_minus_eq_rki_rk.test,
     explain_o_minus_i_k.test, explain_o_minus_rcki_k.test,
     explain_o_oexclam_k_b.test, explain_o_percent_2rck_k.test,
     explain_o_percent_eq_i_rk.test, explain_o_percent_eq_rki_rk.test,
     explain_o_percent_i_k.test, explain_o_percent_rcki_k.test,
     explain_o_pipe2_2rck_b.test, explain_o_pipe2_rck_b.test,
     explain_o_pipe_2rck_k.test, explain_o_pipe_eq_i_rk.test,
     explain_o_pipe_eq_rki_rk.test, explain_o_pipe_i_rk.test,
     explain_o_plus2_d_rk.test, explain_o_plus2_rkd_rk.test,
     explain_o_plus2_rki_rk.test, explain_o_plus_2rck_k.test,
     explain_o_plus_eq_i_rk.test, explain_o_plus_eq_rki_rk.test,
     explain_o_plus_i_k.test, explain_o_plus_rcki_k.test,
     explain_o_qmark_colon_k2i_i.test, explain_o_slash_2rck_k.test,
     explain_o_slash_eq_i_rk.test, explain_o_slash_eq_rki_rk.test,
     explain_o_slash_rcki_k.test, explain_o_star_2rck_k.test,
     explain_o_star_eq_i_rk.test, explain_o_star_eq_rki_rk.test,
     explain_o_star_i_rk.test, explain_o_star_rck_k.test,
     explain_o_star_rcki_k.test, explain_o_star_rk.test,
     explain_o_tilde_k.test, explain_o_tilde_rck_k.test,
     explain_oo_amper_rk_pk.test, explain_oo_minus2_i_rk.test,
     explain_oo_minus_rk_rk.test, explain_oo_plus2_i_rk.test,
     explain_oo_plus_rk_rk.test, explain_oo_star_rk_rk.test,
     explain_ro_amper_rk_pk.test, explain_ro_exclam_k_b.test,
     explain_ro_minus2_i_rk.test, explain_ro_minus_rk_rk.test,
     explain_ro_plus2_i_rk.test, explain_ro_plus_rk_rk.test,
     explain_ro_star_rk_rk.test, explain_rro_amper_rk_pk.test,
     explain_rro_exclam_k_b.test, explain_rro_minus2_i_rk.test,
     explain_rro_minus_rk_rk.test, explain_rro_plus2_i_rk.test,
     explain_rro_plus_rk_rk.test, explain_rro_star_rk_rk.test,
     explain_trigraphs_o_circ_eq_i_rk.test,
     explain_trigraphs_o_circ_rcki_k.test,
     explain_trigraphs_o_pipe2_2rck_b.test,
     explain_trigraphs_o_pipe_2rck_k.test,
     explain_trigraphs_o_pipe_eq_i_rk.test, explain_trigraphs_o_tilde_k.test,
     explain_udc_rcc.test, explain_vo_amper_rk_pk.test,
     explain_vo_exclam_k_b.test, explain_vo_minus2_i_rk.test,
     explain_vo_minus_rk_rk.test, explain_vo_plus2_i_rk.test,
     explain_vo_plus_rk_rk.test, explain_vo_star_rk_rk.test,
     explain_yo_amper_rk_pk.test, explain_yo_exclam_k_b.test,
     explain_yo_minus2_i_rk.test, explain_yo_minus_rk_rk.test,
     explain_yo_plus2_i_rk.test, explain_yo_plus_rk_rk.test,
     explain_yo_star_rk_rk.test: s/define S as struct S/struct S/
   * check.c, test/Makefile.am, explain_o_less_eq_greater_2rck_a.out,
     explain_o_less_eq_greater_2rck_std_partial_ordering.out,
     explain_o_less_eq_greater_2rck_std_strong_ordering.out,
     explain_o_less_eq_greater_2rck_std_weak_ordering.out,
     explain_o_less_eq_greater_2rck_a.test,
     explain_o_less_eq_greater_2rck_i.test,
     explain_o_less_eq_greater_2rck_std_partial_ordering.test,
     explain_o_less_eq_greater_2rck_std_strong_ordering.test,
     explain_o_less_eq_greater_2rck_std_weak_ordering.test: Now ensuring return
     type is one of auto, std::partial_ordering, std::strong_ordering, or
     std::weak_ordering; and that all parameters are a class or reference
     thereto.

2021-05-16  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, c_typedef.h, lexer.l, parser.y: Added c_typedef_find_name();
     s/c_typedef_find()/c_typedef_find_sname()/
   * c_sname.c, c_sname.h, lexer.l, util.c, util.h: Moved parse_identifier() to
     util.[hc]; moved c_sname_parse() to c_sname.[hc].

2021-05-14  Paul J. Lucas <paul@lucasmail.org>

   * bootstrap: Added "echo".

2021-05-13  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am, red_black_test.c: Added unit tests for red-black tree.

2021-05-12  Paul J. Lucas <paul@lucasmail.org>

   * check.c: Now using c_lang_name() more.
   * Makefile.am, makedoc.sh: Added makedoc.sh.
   * c_kind.h: Added K_TYPEDEF to K_ANY_OBJECT.
   * c_kind.h: Expanded K_ANY_FUNCTION_LIKE, K_ANY_OBJECT, and K_ANY_PARENT
     into bitwise-or of other K_* values; added K_TYPEDEF to K_ANY_OBJECT.

2021-05-11  Paul J. Lucas <paul@lucasmail.org>

   * red_black.c, red_black.h: Red-Black tree simplification by using child[2].
   * test/Makefile.am, explain_efi-c.test: Added in forgotten test.
   * lexer.l, parser.y: Added str_val.
   * lexer.l: Now calling strbuf_free() for unterminated strings.
   * parser.y: s/str_lit/literal/ (undid previous change).
   * parser.y: s/literal/str_lit/

2021-05-10  Paul J. Lucas <paul@lucasmail.org>

   * dump.c: s/print_indent/dump_indent/

2021-05-08  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added ret_ast local variable.
   * parser.y: Now using struct literals.
   * lexer.l: Removed c == '\0' ||
   * bootstrap: Added a bootstrap script.

2021-05-07  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c, cdecl.h, options.c, parser.y, print.c, prompt.c: Added
     CDECL.
   * lexer.l: Now using strbuf_catf().
   * lexer.l, parser.y: When the lexer prints an error message, the parser no
     longer does.
   * lexer.l, test/Makefile.am, explain_ecf_v-Rstr-01.out,
     explain_ecf_v-Rstr-02.out, explain_ecf_v-Rstr-01.test,
     explain_ecf_v-Rstr-02.test: Now support C++ raw string literals.
   * lexer.l: Reordering.

2021-05-06  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, parser.y: Now recognizing "asm" just to say it's not
     supported.

2021-05-04  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: Replaced `if` by `?:`.

2021-04-30  Paul J. Lucas <paul@lucasmail.org>

   * slist.h, strbuf.h: s/deleting/freeing/
   * strbuf.h: Added PJL_PRINTF_LIKE_FUNC to strbuf_catf().

2021-04-29  Paul J. Lucas <paul@lucasmail.org>

   * c_keyword.h, c_sname.h, lexer.l, slist.h: s/null/NULL/

2021-04-21  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Macro clean-up.

2021-04-18  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Now recognizing "template" just to say it's not supported.

2021-04-16  Paul J. Lucas <paul@lucasmail.org>

   * print.c: No longer sometime print "null" when an unknown name is
     encountered.

2021-04-13  Paul J. Lucas <paul@lucasmail.org>

   * did_you_mean.c: Eliminated best_count.

2021-04-12  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, dump.c: Added FOREACH_AST_LIST().
   * dump.c, dump.h: kv_dump() now prints `null` only if the value is NULL (not
     empty).

2021-04-06  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.h: Added missing #include.
   * AUTHORS, configure.ac, lib/Makefile.am, alloca.in.h, attribute.h, btowc.c,
     cdefs.h, ctype.in.h, flexmember.h, fnmatch.c, fnmatch.in.h,
     fnmatch_loop.c, hard-locale.c, hard-locale.h, idx.h, intprops.h,
     inttypes.in.h, isblank.c, lc-charset-dispatch.c, lc-charset-dispatch.h,
     libc-config.h, localcharset.c, localcharset.h, locale.in.h,
     mbrtowc-impl-utf8.h, mbrtowc-impl.h, mbrtowc.c, mbsinit.c,
     mbsrtowcs-impl.h, mbsrtowcs-state.c, mbsrtowcs.c, mbtowc-impl.h,
     mbtowc-lock.c, mbtowc-lock.h, mbtowc.c, memchr.c, memchr.valgrind,
     mempcpy.c, setlocale-lock.c, setlocale_null.c, setlocale_null.h, streq.h,
     strnlen1.c, strnlen1.h, verify.h, wchar.in.h, wctype-h.c, wctype.in.h,
     windows-initguard.h, wmemchr-impl.h, wmemchr.c, wmempcpy.c, __inline.m4,
     alloca.m4, btowc.m4, builtin-expect.m4, codeset.m4, ctype.m4,
     flexmember.m4, fnmatch.m4, fnmatch_h.m4, gnulib-cache.m4, gnulib-comp.m4,
     inttypes.m4, isblank.m4, localcharset.m4, locale-fr.m4, locale-ja.m4,
     locale-zh.m4, locale_h.m4, mbrtowc.m4, mbsinit.m4, mbsrtowcs.m4,
     mbstate_t.m4, mbtowc.m4, memchr.m4, mempcpy.m4, mmap-anon.m4,
     setlocale_null.m4, std-gnu11.m4, threadlib.m4, visibility.m4, wchar_h.m4,
     wctype_h.m4, wmemchr.m4, wmempcpy.m4, cdecl.1, c_sname.c, c_sname.h,
     help.c, lexer.l, parser.y, util.c, util.h, test/Makefile.am, help-c++.out,
     help-c.out, help_command-c++.out, help_command-c++03.out,
     help_command-c.out, help_commands-c++.out, help_commands-c.out,
     show_all_predefined_glob-01.out, show_all_predefined_glob-02.out,
     show_all_predefined_glob-03.out, show_all_predefined_glob-01.test,
     show_all_predefined_glob-02.test, show_all_predefined_glob-03.test: The
     "show" command now accepts globs.
   * lexer.l: State renaming.
   * parser.y: s/FREE/free/

2021-04-04  Paul J. Lucas <paul@lucasmail.org>

   * did_you_mean.c: dym_size is now const.
   * autocomplete.c, did_you_mean.c, set_options.c, set_options.h:
     s/SET_/SET_OPT_/

2021-04-03  Paul J. Lucas <paul@lucasmail.org>

   * set_options.c: Simplification.
   * set_options.c, set_options.h: Now using set_option_fn_args_t.
   * set_options.c: Removed unnecessary cast to (void).
   * c_operator.c, c_operator.h, lexer.h, lexer.l, slist.c, slist.h, strbuf.c,
     strbuf.h: *_INLINE clean-up.

2021-04-01  Paul J. Lucas <paul@lucasmail.org>

   * print.c: Added assert.

2021-03-31  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c: Replaced use of malloc() with strbuf_t.
   * strbuf.c: Added call to strbuf_reserve().
   * cdecl.c: s/starts_with/starts_with_token/

2021-03-29  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, cdecl.c: parse_string() now takes size_t.
   * cdecl.c: cdecl_read_line() clean-up.

2021-03-27  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Added \n to SKIP_WS.
   * cdecl.c, util.c, util.h: Made fmemopen() now return NULL on error.

2021-03-26  Paul J. Lucas <paul@lucasmail.org>

   * help.c, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c++03.out, help_command-c.out, help_commands-c++.out,
     help_commands-c.out: Added C78 to help text.

2021-03-25  Paul J. Lucas <paul@lucasmail.org>

   * options.c: Added SOPT_NO_ARGUMENT and SOPT_REQUIRED_ARGUMENT.
   * options.c: Now checking that no arguments are specified with -v.
   * options.c, util.h: Added STRINGIFY().
   * util.h: Added '_' to CHARIFY.
   * options.c, util.h: Now only a single copy of short options; -h is now
     checked for exlusivity.
   * options.c: Got rid of set_opt_explicit_int().
   * options.c: Reworked opts_given.

2021-03-23  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, did_you_mean.c, did_you_mean.h, options.c, options.h,
     print.c, print.h, set_options.c, set_options.h: Added "did you mean ...?"
     suggestions for command-line options.
   * options.c: Added missing 'h' to SHORT_OPTS.
   * options.c: Added FOREACH_CLI_OPTION().

2021-03-22  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: autoupdate.
   * configure.ac: Updated version to 9.9.

2021-03-20  Paul J. Lucas <paul@lucasmail.org>

   * set_options.c: Fixed printing \n.
   * c_lang.c, c_operator.c, c_type.c, cdecl.c, english.c, gibberish.c: More
     assert()s.
   * print.c: Added assert().
   * print.c: Simplification.
   * c_typedef.c: s/for/do...while/

2021-03-19  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c: Whitespace.
   * autocomplete.c, cdecl.c: readline_init() now takes FILEs.
   * util.c: Got rid of local variable.
   * dump.c: Now using c_type_part_id_name() more.
   * c_ast.h, c_keyword.h, c_lang.h, c_sname.c, c_sname.h, check.c, dump.c,
     gibberish.c, parser.y, set_options.h, slist.c, slist.h: Added
     FOREACH_SLIST().

2021-03-18  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am: Added $(EXEEXT).
   * parser.y: Removed pointless language check.

2021-03-17  Paul J. Lucas <paul@lucasmail.org>

   * c_kind.c, c_type.c, parser.y: Now using OPT_LANG_IS() more.
   * parser.y: s/is_nested_type_ok/fl_is_nested_type_ok/

2021-03-16  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added assert().
   * parser.y: Nested types are now not defined when flagged as an error in C.
   * parser.y, test/Makefile.am, k_typedef_i-c.test: Nested types are now
     correctly caught as an error in C.
   * cdecl.1: Added "C++ only" for nested types.
   * cdecl.1: Added mention of complete set of commands useful in .cdeclrc
     file.

2021-03-15  Paul J. Lucas <paul@lucasmail.org>

   * did_you_mean.c: Moved declaration of best_count inside the `if`.
   * check.c, pjl_config.h, strbuf.h: s/argument/parameter/ where appropriate.
   * c_type.h, english.c, parser.y: s/c_type_name_eng/c_type_name_english/
   * check.c: A declaration having a storage class and a bit-field width is now
     correctly caught as an error.

2021-03-14  Paul J. Lucas <paul@lucasmail.org>

   * check.c: A scoped name having a bit-field width is now correctly caught as
     an error.
   * slist.c: Added needed (intptr_t) cast.
   * c_sname.h, slist.h: Added missing CONST_CAST() to SLIST_VAR_INIT().
   * strbuf.c: Now using only a single va_list.

2021-03-12  Paul J. Lucas <paul@lucasmail.org>

   * options.c: Simplified SET_OPTION().
   * options.c: Now using macros to define command-line options exactly once.
   * autocomplete.c, did_you_mean.c, set_options.h:
     s/FOREACH_OPTION/FOREACH_SET_OPTION/

2021-03-11  Paul J. Lucas <paul@lucasmail.org>

   * did_you_mean.c, print.c: Added "Did you mean...?" suggestions for unknown
     name.
   * c_type.c, c_type.h, dump.c, print.c: Added C_TPID_NONE.
   * did_you_mean.c, did_you_mean.h, set_options.c: Added "Did you mean ...?"
     for `set` options.
   * c_typedef.c: Fixed warning.
   * help.c, help_english-c.out, help_english-c89.out: Changed order of long
     and unsigned in C help to match C++ help.
   * help.c, parser.y, print.h, types.h: print_help() now takes an enum; moved
     declaration to print.h.
   * c_ast_util.c, c_ast_util.h, parser.y: Moved c_ast_pointer() to
     c_ast_util.[ch].

2021-03-10  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c: Now correctly free'ing c_typedef_t data from red-black tree
     nodes.
   * c_typedef.c: s/C_TYPEDEF_VAR_INIT/C_TYPEDEF_LIT
   * parser.y: Got rid of placeholder_c_ast.

2021-03-09  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all-c++.out,
     show_all.out, show_all_predefined-c++.out, show_all_predefined.out,
     show_all_predefined_typedef-c++.out, show_all_typedef.out,
     show_predefined-c++.out, show_predefined.out, show_predefined_typedef.out,
     show_predefined_using.out: Added `iconv_t`, `locale_t`,
     `posix_spawnattr_t`, `posix_spawn_file_actions_t`, `regex_t`,
     `regmatch_t`, and `regoff_t`.
   * options.c, options.h, set_options.c: Added PJL_WARN_UNUSED_RESULT; changed
     print_explicit_int() to take FILE*.
   * help.c, help_english-c.out: s/thread_local/_Thread_local/ in C help.
   * help.c, help_english-c++.out, help_english-c.out: Joined char types in
     help.
   * check.c: s/error_kind_to_type/error_kind_to_tid/
   * check.c, test/Makefile.am, explain_fpcf_i_v.test, explain_pcf_i.test: A
     pointer to function with qualifiers is now correctly caught as an error.

2021-03-08  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.c, c_lang.h, c_type.c, set_options.c: Removed
     PJL_WARN_UNUSED_RESULT where not needed; added PJL_WARN_UNUSED_RESULT in
     one missing place.
   * c_lang.c: Moved "C" first so it prints first.
   * util.c: s/harcopy/hardcopy/
   * options.c: Removed more uses of fixed-size string buffers.

2021-03-07  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Merged C90 into C89 and C18 into C17.
   * cdecl.1: More specific about "auto" and "using" in docs.

2021-03-06  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c: Added _Thread_local spelling for C types.
   * cdecl.1, c_lang.c: C78 is now accepted as an alias for K&RC.
   * Makefile.am: Added (the missing) `Doxyfile` to the dist-generated tarball.

2021-03-05  Paul J. Lucas <paul@lucasmail.org>

   * color.h, prompt.c, strbuf.c, strbuf.h: Replaced last sprintf() with
     strbuf.
   * strbuf.h: Sorted functions.
   * configure.ac: Updated version to 9.8.

2021-03-04  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: s/Defines a type/Defines types/
   * help.c, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c++03.out, help_command-c.out, help_commands-c++.out,
     help_commands-c.out: s/or cast/or a cast/
   * cdecl.1, options.c: Added (the missing) `--explicit-int` to the help
     message.

2021-03-03  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, cdecl.h, print.c: Moved some globals out of cdecl.h.
   * parser.y: Now using c_lang_which() in another place.
   * c_lang.c: Now using strbuf in c_lang_which().

2021-03-02  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.c, c_lang.h, check.c, parser.y, print.c, util.c, util.h: Now
     printing "... since <lang>" when the current language > oldest language.
   * parser.y, test/Makefile.am, explain_ec_typedef_i.out,
     explain_ec_using_i.out, explain_ec_typedef_i.test,
     explain_ec_using_i.test: Now accepts extern "C" using declarations.
   * help.c, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c++03.out, help_command-c.out, help_commands-c++.out,
     help_commands-c.out: s/into|to/[in]to/
   * help.c: The help for pseudo-English now correctly includes `auto` as a
     storage class for C++98 and C++03.

2021-02-26  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.c: Always removing LANGX_MASK.
   * c_lang.h: Always removing LANGX_MASK.

2021-02-25  Paul J. Lucas <paul@lucasmail.org>

   * c_keyword.c, c_type.c, c_type.h, cdecl.c, cdecl.h, check.c, lexer.h,
     lexer.l, parser.y, types.h, show_all-c++.out, show_all.out,
     show_all_predefined-c++.out, show_all_predefined.out,
     show_predefined-c++.out, show_predefined.out: Brought c_mode back since it
     needs to maintain its state until after translation is complete unlike the
     lexer's state.
   * c_sname.c, c_type.c, cdecl.c, lexer.l, options.c, prompt.c, strbuf.c,
     strbuf.h: Reworked strbuf cat functions.
   * c_type.c, cdecl.c, strbuf.h: Added strbuf_catsepc().

2021-02-24  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c: Simplified c_ast_free().
   * src/Makefile.am, c_sname.c, c_type.c, cdecl.c, lexer.l, options.c,
     prompt.c, strbuf.c, strbuf.h, util.c, util.h: Split out strbuf.[ch].
   * gibberish.c, help.c, util.h: Added true_clear().
   * parser.y, util.c: More uses of false_set().
   * red_black.c: Fixed comment.
   * cdecl.1, lexer.l, literals.c, literals.h: Added new synonyms: conv, ctor,
     & dtor.
   * autocomplete.c: "linkage" is now auto-completable.

2021-02-23  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, parser.y: Moved c_ast_dup().
   * configure.ac: Updated version.
   * c_sname.c, c_type.c, cdecl.c, options.c, util.c, util.h: Added
     strbuf_catseps().
   * c_ast.c, help.c, parser.y, test/Makefile.am, cdecl--debug.out,
     cdecl-d.out, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c++03.out, help_command-c.out, help_commands-c++.out,
     help_commands-c.out, typedef_i_pi.out, typedef_i_pi.test: Can now define
     multiple types in a single typedef.
   * parser.y: s/ast_type_stack/type_ast_stack/
   * configure.ac, gibberish.c, show_all_predefined_typedef-c++.out,
     show_all_typedef.out, show_predefined_typedef.out: Fixed spacing for
     qualified pointers.

2021-02-21  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: s/ast_gc_list/gc_ast_list/; s/ast_typedef_list/typedef_ast_list/
   * parser.y: Made c_ast_new_gc()'s loc argument be const.
   * c_ast.c: Combined ecsu and ptr_mbr cases in c_ast_equiv().
   * cdecl.c, util.c, util.h: read_input_line() now returns bool.
   * cdecl.c, util.c, util.h: Removed strcpy_end() and STRCAT.

2021-02-20  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c: Simplified parse_string().
   * cdecl.c, util.c, util.h: read_input_line() now uses strbuf_t.
   * cdecl.c: Fixed call of parse_string().
   * cdecl.c, util.c, util.h: read_input_line() now returns char const*.
   * c_typedef.c, cdecl.c: parse_string() now takes -1 to mean calculate string
     length.
   * c_sname.c, c_type.c, cdecl.c, lexer.l, options.c, prompt.c, util.c,
     util.h: More uses of strbuf_t; removed chrcpy_end().
   * help.c, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c++03.out, help_command-c.out, help_commands-c++.out,
     help_commands-c.out, help_english-c++.out, help_english-c.out,
     help_english-c89.out, help_english-knr.out: Added | between all alternates
     in help.

2021-02-19  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Updated version to 9.6.
   * did_you_mean.c: Got rid of "may change value" warning.
   * print.c: Silence warnings.
   * did_you_mean.c: Extracted SIMILAR_ENOUGH_PERCENT.
   * c_keyword.c: `_Bool` is now recognized only in C99 and later and not in
     C++.
   * lexer.l: `imaginary` is now mapped only to `_Imaginary` in C99 and later
     and not in C++.
   * print.c: Simplified; now using c_lang_until().
   * c_keyword.c, c_keyword.h: s/context/kw_ctx/
   * c_type.c, c_type.h: Moved more code around.
   * c_type.c: Remove left-over pointless `if`.
   * c_type.c: Code reorganization.
   * c_type.c, c_type.h: Eliminated c_type_get_tid(); moved
     c_type_get_tid_ptr() into .c.

2021-02-18  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am, parser.y: Renamed debug.[ch] -> dump.[ch].
   * debug.c, cdecl--debug.out, cdecl-d.out: Types are now dumped more
     verbosely.
   * parser.y: DUMP_SNAME() now implicitly does &.
   * c_keyword.c: Allow "restrict" to be recognized in C++ so the parser can
     give a better error messsage.
   * c_ast_util.c, c_type.c, c_type.h, parser.y: s/T_TYPEDEF/T_TS_TYPEDEF/ for
     clarity.
   * c_type.c: Macro clean-up.

2021-02-17  Paul J. Lucas <paul@lucasmail.org>

   * check.c, test/Makefile.am, explain_fa_v.out, explain_fa_v-c++17.test,
     explain_fa_v.test: Function parameters in C++20 now allow auto.
   * c_ast_util.c: The type redefinition error message now includes the
     existing type, part 2.
   * c_ast.c: Fixed warning.
   * parser.y: The type redefinition error message now includes the existing
     type.
   * c_typedef.c, c_typedef.h, parser.y: c_typedef_add() now returns
     c_typedef_t*.
   * c_type.c, c_type.h, debug.c, english.c, gibberish.c, parser.y,
     k_typedef_i_typedef_tn_i.out, show_all-c++.out, show_all.out,
     show_all_predefined-c++.out, show_all_predefined.out,
     show_predefined-c++.out, show_predefined.out: Split out c_type_*name_c()
     and c_type_*name_eng().

2021-02-16  Paul J. Lucas <paul@lucasmail.org>

   * check.c: s/not supported/{is|are} not supported/
   * parser.y, explain_2gat_cpi.out, explain_a_using_a_mu_i.out,
     explain_c_gat_pi.out, explain_c_gat_vpi.out, explain_gat_c_gat_vpi.out,
     explain_gat_cpi.out, explain_gat_i-01.out, explain_gat_i-02.out,
     explain_gat_i-03.out, explain_gat_i-04.out, explain_gat_i-05.out,
     explain_gat_i-06.out, explain_gat_i-07.out, explain_gat_i-08.out,
     explain_gat_i-09.out: s/not supported/is not supported/.  If something is
     not supported by cdecl, it now says so explicitly (as opposed to it not
     being supported in the current language.
   * help.c, help_english-c++.out, help_english-c.out: Simplified help a bit.
   * help.c: Simplification.
   * help.c, help_english-c.out: Added char8_t to C2X help.
   * parser.y: Split out paren_decl_list_english and returning_english_ast.
   * help.c, help_english-c++.out, help_english-c.out, help_english-c89.out,
     help_english-knr.out: Added missing <cv-qual>* in places.
   * help.c, help_english-c.out: The help for `args` no longer prints `<name>`
     for when the current language is either C2X or C++.
   * c_ast.h, c_ast_util.c, check.c, english.c, parser.y: Function renaming.

2021-02-15  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Better comment.
   * lexer.l: Added comment.
   * c_type.c: Got rid of NUM_BUFS.
   * c_type.c: No longer using fixed-sized buffers.
   * c_sname.c, util.c, util.h: strbuf_cat() now accepts -1 for 3rd argument to
     call strlen().
   * c_sname.c, util.h: Switched to using strbuf_t.
   * c_sname.c, c_sname.h: c_sname_t clean-up.
   * c_lang.c: Fixed size of until_buf.
   * c_ast_util.c, c_ast_util.h: Minor clean-up.
   * cdecl.c: "enum" is a command only in C89 and later.
   * autocomplete.c: Fixed some autocompletions.

2021-02-14  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c, c_lang.c, c_lang.h, c_type.c, check.c, gibberish.c,
     help.c, literals.h, parser.y, print.c, prompt.c: Got rid of
     opt_lang_is_c() and opt_lang_is_cpp().
   * autocomplete.c, c_keyword.c, c_lang.h, c_operator.c, c_type.c, cdecl.c,
     check.c, gibberish.c, lexer.l, parser.y, print.c: s/LANG_*ALL/LANG_*ANY/
   * c_lang.h: Simplified opt_lang_is_c() and opt_lang_is_cpp().
   * lexer.h: s/()/( void )/
   * autocomplete.c, c_lang.c, c_lang.h, c_type.c, c_typedef.c, check.c,
     gibberish.c, help.c, literals.h, parser.y, print.c, prompt.c:
     s/C_LANG_/OPT_LANG/ and made some former macros into inline functions.
   * c_lang.h, check.c: Warnings are now given for names that are reserved
     identifiers.
   * lexer.l, test/Makefile.am, explain_tli.out, explain_tli-c99.test,
     explain_tli.test: thread_local is now correctly allowed only in C11 or
     C++11 or later.
   * test/Makefile.am: Test renaming.
   * test/Makefile.am, k_ns_typedef_i.test: Test renaming.

2021-02-13  Paul J. Lucas <paul@lucasmail.org>

   * did_you_mean.h, types.h: Moved did_you_mean_t.
   * src/Makefile.am: Added all-local and clean-local targets to make and
     remove c++decl.
   * c_lang.c, c_lang.h, c_type.c, check.c, parser.y, set_options.c,
     explain_tf_v-c++17.out: Improved error messages specifying when a feature
     becomes legal, if ever.
   * explain_tf_v-c++17.out: Fixed expected test result.
   * check.c: Constructors and destructors are now checked for `throw`. 
     Constructor parameters are now checked for warnings.
   * c_lang.c: Fixed comment.

2021-02-12  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_type.c, c_type.h: s/c_type_intersects()/c_type_is_any()/
   * c_type.h: Function reorder.
   * c_type.c, c_type.h: Made c_type_id_tpid() out-of-line;
     s/c_type_id_intersects/
   * c_ast_util.c, c_type.c, c_type.h, parser.y: Made T_TYPEDEF global.
   * parser.y: Added TYPEDEF_TYPE.
   * c_type.h: Made C_TYPE_LIT a true literal again.

2021-02-11  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c: Now checking bit-field width equivalence.
   * c_ast.c, c_ast.h: Now also checking for alignment equivalence.
   * set_options.c: s/strn_nohyphen_eq/strn_nohyphen_equal/
   * check.c: s/c_ast_name_eq/c_ast_name_equal/
   * check.c: Now using END_STR_LIT for newline printing.
   * check.c: Added hint to c_ast_check_pointer().
   * check.c: Function sorting.

2021-02-10  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: s/C_GRAPH_NONE/C_GIB_NONE/
   * english.c, english.h, gibberish.c, parser.y: c_ast_english_type()
     clean-up.

2021-02-09  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, test/Makefile.am, declare_ff_i_v.out, explain_ff_i_v.out,
     declare_ff_i_v.test, explain_ff_i_v.test: A function as a parameter is now
     automatically converted to a pointer to function per 6.3.2.1(4) of the C
     standard.
   * check.c: Added c_ast_check_udef_conv(); folded code into
     c_ast_check_udef_conv(); added assert()s; other clean-up.
   * check.c: c_ast_visitor_type() clean-up.
   * check.c: Simplified print_error() call.

2021-02-08  Paul J. Lucas <paul@lucasmail.org>

   * check.c: Added kind to type error messages.
   * lexer.l: Added -Wconversion warning.
   * lexer.l: Now setting only first_line & first_column of yylloc for str/char
     literals.
   * lexer.l: str_lit_buf clean-up.
   * util.h: Added missing PJL_WARN_UNUSED_RESULT.
   * c_keyword.c, c_type.c, cdecl.c, cdecl.h, check.c, lexer.h, lexer.l,
     parser.y, types.h: Folded c_mode into lexer_find.

2021-02-07  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: s/SET_TOKEN/SET_TOKEN_TO/ for "[".
   * lexer.l, parser.y: `[[` and `]]` "tokens" allow whitespace.

2021-02-06  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Minor additions.
   * cdecl.1: Added missing "enum" and "show" to set of first-argument
     commands.
   * configure.ac: Updated version to 9.5.1.
   * configure.ac: Now using AX_CHECK_COMPILE_FLAG instead of
     AX_CFLAGS_GCC_OPTION.

2021-02-05  Paul J. Lucas <paul@lucasmail.org>

   * c_type.h: C_TYPE_LIT() now calls c_type_id_check() for arguments.
   * parser.y, cdecl--debug.out, cdecl-d.out: Renamed rules: _ast -> _astp (for
     ast_pair), and others; added comments.

2021-02-04  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: ast_pair clean-up.
   * autocomplete.c: Added some completable keywords.
   * parser.y: If an error token is a keyword in the current language, says so.
   * cdecl.c: Added missing "enum" as cdecl command.
   * AUTHORS, cdecl.1, c_ast.h, c_kind.h, check.c, debug.c, english.c,
     gibberish.c, help.c, parser.y, test/Makefile.am, explain_efi-itself.out,
     explain_efi.out, explain_efui.out, explain_efz.out, help_english-c++.out,
     explain_efd.test, explain_efi-c.test, explain_efi-itself.test,
     explain_efi.test, explain_efui.test, explain_efz.test: Added support for
     enums having an underlying type.
   * c_type.h: Fixed comment.
   * c_ast_util.c, parser.y: Added missing calls to C_AST_CHECK_DECL().
   * check.c: Fixed register enum.

2021-02-03  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Converted many rules to <ast> from <ast_pair>.
   * parser.y: s/sname/any_sname_c/
   * parser.y: Added enum_class_struct_union_english_ast rule.
   * parser.y: Reformatting.
   * c_ast.h, parser.y: CLeaned up enum_tid.
   * parser.y: s/enum_class_struct_union_tid/enum_class_struct_union_c_tid/
   * parser.y: Moved a rule.
   * cdecl.1: Added mention that structured binding declarations are not
     supported.
   * parser.y: Undid yyerrok.
   * parser.y: Removed pointless assignments.
   * parser.y: Added yyerrok in places.
   * parser.y: Token clean-up.
   * parser.y: More operator clean-up.
   * parser.y: Fixed operators.

2021-02-02  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Removed shift/reduce conflict for "delete".
   * help.c: s/stdout/fout/
   * debug.c, debug.h, parser.y: s/slist_t/c_ast_list_t/
   * lexer.l: s/EPRINTF/print_error/
   * AUTHORS, cdecl.1, c_type.c, c_type.h, help.c, lexer.l, literals.c,
     literals.h, parser.y, util.c, util.h, test/Makefile.am, declare_ecf_v.out,
     explain_ecf_v.out, help_english-c++.out, declare_ecf_v.test,
     explain_ecf_v.test: Added support for extern "C" declarations.

2021-02-01  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, c_typedef.h, parser.y: s/TD_/TDEF_/
   * c_ast_util.c, test/Makefile.am, explain_sf__i.out, explain_sf__i.test:
     Fixed `auto` with storage class.

2021-01-31  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: oper_decl_c_ast clean-up.
   * parser.y: Removed unncessary c_ast_take_name().
   * parser.y: Bit-field width clean-up.
   * cdecl.1: Minor improvements.

2021-01-30  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Reorganization of some grammar rules.
   * parser.y: Unified "using" declarations.
   * parser.y: More "using" clean-up.
   * parser.y: "using" clean-up.

2021-01-29  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Renamed grammar rule.
   * parser.y: Added parsing support for attribute arguments.
   * parser.y, test/Makefile.am, explain_a_using_a_mu_i.out,
     explain_a_using_a_mu_i.test: Added suppport for [[using : ... ]].
   * c_type.h, parser.y: Added c_type_id_check() into ia_qual_push_tid().
   * c_type.h, parser.y: Added c_type_id_check().
   * c_type.h, cdecl--debug.out, cdecl-d.out: Type pard IDs are now distinct
     bits.
   * parser.y: Added missing dump of attribute_specifier_list_c_tid_opt.
   * test/Makefile.am: Test renaming.
   * parser.y: Attribues can now parse (but warn about) snames.
   * cdecl.1, c_keyword.c, lexer.h, lexer.l, literals.c, literals.h, parser.y,
     print.c, util.h, test/Makefile.am, cast_pfx_i-c17.out,
     declare_fkr_pi-c17.out, declare_pfkr_i-c17.out, declare_yi.out,
     explain_2gat_cpi.out, explain_c_gat_pi.out, explain_c_gat_vpi.out,
     explain_fkr_pi-c17.out, explain_gat_c_gat_vpi.out, explain_gat_cpi.out,
     explain_gat_i-01.out, explain_gat_i-02.out, explain_gat_i-03.out,
     explain_gat_i-04.out, explain_gat_i-05.out, explain_gat_i-06.out,
     explain_gat_i-07.out, explain_gat_i-08.out, explain_gat_i-09.out,
     explain_tf_v-c++17.out, explain_unknown_attribute.out, run_test.sh,
     explain_2gat_cpi.test, explain_c_gat_pi.test, explain_c_gat_vpi.test,
     explain_gat_c_gat_vpi.test, explain_gat_cpi.test, explain_gat_i-01.test,
     explain_gat_i-02.test, explain_gat_i-03.test, explain_gat_i-04.test,
     explain_gat_i-05.test, explain_gat_i-06.test, explain_gat_i-07.test,
     explain_gat_i-08.test, explain_gat_i-09.test: Added support for parsing
     GNU's __attribute__((...)) syntax.

2021-01-28  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l, parser.y, cdecl--debug.out, cdecl-d.out: Changed "number" to
     "int_val".
   * test/Makefile.am: Test renaming.
   * test/Makefile.am, declare_rgi.test, declare_rrgi.test, explain_rgi.test,
     explain_rrgi.test: Test renaming.

2021-01-27  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.h, c_typedef.c, check.c, did_you_mean.c, parser.y, print.c,
     print.h: When a name is unknown in the current language but exists in a
     later language, the type of name is now used in the error message.

2021-01-26  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Simplified attribute_english_tid.
   * did_you_mean.c, did_you_mean.h, parser.y: Added "Did you mean ...?" for
     attributes.
   * c_keyword.c, literals.c, literals.h: Added C2X `__attr__` aliases.

2021-01-25  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c: Special-cased _Noreturn for C.
   * c_keyword.c, c_keyword.h, lexer.l, parser.y: Added C_KW_CTX_ATTRIBUTE to
     handle attributes in a non-special-case way.
   * parser.y: s/decl_c_list/decl_list_c/ -- following my own naming
     convension.

2021-01-24  Paul J. Lucas <paul@lucasmail.org>

   * set_options.c: Added DECLARE_SET_OPTION_FN().
   * parser.y, test/Makefile.am, explain_uk-01.out, explain_uk-02.out,
     explain_uk-01.test, explain_uk-02.test: Added `enum`, `class`, `struct`,
     and `union` attribute specifier support.
   * configure.ac: Updated version.
   * red_black.c: s/rb_tree_free_impl/rb_node_free/g
   * c_ast.h, c_lang.h, c_sname.h, literals.h, options.h: #include clean-up.
   * slist.h: Added notes about big-O running time.
   * did_you_mean.h: Include-guard renaming.
   * lexer.h: Added PJL_WARN_UNUSED_RESULT for lexer_loc().
   * c_type.h, debug.c: s/PRIX_C_TYPE_T/PRIX_C_TYPE_ID_T/
   * src/Makefile.am: Added missing set_options.h.

2021-01-23  Paul J. Lucas <paul@lucasmail.org>

   * stddef.in.h, gnulib-common.m4: Updated GNUlib.
   * parser.y, set_options.c, set_options.h: s/set_option/option_set/
   * set_options.c: Now printing set options to fout.
   * cdecl.c: Remove old comment.
   * c_lang.c: Remove old comment.
   * c_ast_util.c, test/Makefile.am, explain_f_ppc.out, explain_f_ppc.test:
     Fixed crash with: explain char** f().
   * autocomplete.c: Fixed warning.
   * autocomplete.c: Fixed MALLOC() call.
   * autocomplete.c: Removed unnecessary ().
   * autocomplete.c: Got rid of warnings.
   * autocomplete.c: Fewer check_strdup()s.
   * autocomplete.c, parser.y, set_options.c, set_options.h, util.c, util.h:
     Eliminated duplicate SET_OPTIONS in autocomplete.c.
   * c_keyword.h, did_you_mean.c: Added FOREACH_KEYWORD().
   * c_lang.c, c_lang.h, options.c, types.h: Replaced c_lang_names() with
     c_lang_next().
   * src/Makefile.am: Renamed set.c to set_options.c.

2021-01-22  Paul J. Lucas <paul@lucasmail.org>

   * did_you_mean.c: Whitespace change.
   * did_you_mean.c: Combined copy & count functions.
   * autocomplete.c: Added c90, c17, c2x, lang, to autocomplete; fixed knr for
     autocomplete.
   * check.c, test/Makefile.am, typedef_iw3.test: Types having bit-field widths
     are now correctly reported as errors.
   * c_typedef.c: Sorted typedefs.
   * set.c: Added set_lang_impl() to factor out common code.
   * prompt.c: Simplified prompt_len calculation.

2021-01-21  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, cdecl--debug.out, cdecl-d.out: Grammar rule reorganization.
   * debug.c: Reworked "if".
   * gibberish.c: Eliminated param_ast.
   * gibberish.c: Fixed comment.
   * gibberish.c: s/g_print_func_params/g_print_ast_func_params/
   * gibberish.c: s/g_impl/g_print_ast/;
     s/g_print_array_size/g_print_ast_array_size/
   * gibberish.c: Moved alignas code.
   * gibberish.c: s/g_print_space/g_print_space_once/
   * gibberish.c: Simplification.

2021-01-20  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: Whitespace change.
   * gibberish.c: Removed root_ast -- turns out it's not needed.
   * gibberish.c: Removed leaf_ast -- turns out it's not needed.
   * english.c: Now taking AST for c_ast_english_func_params().
   * check.c: Now printing char8_t for user-defined literals only when lang >=
     C++20.
   * check.c: Added K_APPLE_BLOCK.
   * check.c: Split out c_ast_check_emc() and c_ast_check_upc().

2021-01-19  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.c, c_sname.h, check.c, debug.c, gibberish.c, parser.y: Added
     FOREACH_SCOPE() macro.
   * check.c: Converted error_kind_not_cast_into() into a macro.
   * parser.y: CLean-up.
   * parser.y, print.c, print.h: Now printing [file:line] first.
   * c_lang.h, c_typedef.c, parser.y, util.h: For an error token, now printing
     "not a keyword until <lang>" only if the oldest language the token is in
     is later than the current language.
   * parser.y, test/Makefile.am, explain_k-itself.out, explain_i-itself.test,
     explain_k-itself.test: Forward `enum`, `class`, `struct`, and `union`
     declarations are now supported.
   * lexer.h, lexer.l, parser.y: lexer_loc() now returns a c_loc_t.
   * gibberish.c: Function renaming.
   * gibberish.c: s/is_typedef/is_more_than_plain_typedef/ and added clarifying
     comment.
   * gibberish.c: Sorted declarations.
   * gibberish.c: Fixed incorrect comment.
   * autocomplete.c, c_type.c, check.c, debug.c, english.c, lexer.l,
     literals.c, literals.h, parser.y: s/L_..._H/H_.../ for hyphenated
     literals.
   * gibberish.c: Made != LANG_NONE explicit.
   * gibberish.c: Simplification.
   * gibberish.c, types.h, test/Makefile.am, show_cpf_cpcc_v_using.out,
     show_cpi_using.out, show_cpmki_using.out, show_predefined_using.out,
     show_cpf_cpcc_v_using.test, show_cpi_using.test, show_cpmki_using.test:
     Fixed showing of types having qualified pointers as `using` declarations.

2021-01-18  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all-c++.out,
     show_all.out, show_all_predefined-c++.out, show_all_predefined.out,
     show_all_predefined_typedef-c++.out, show_all_typedef.out,
     show_predefined-c++.out, show_predefined.out, show_predefined_typedef.out,
     show_predefined_using.out: Reworked languages when predefining types so
     opt_lang only ever has 1 bit set; also now setting opt_lang to latest
     C/C++ seperately so `restrict` that is not valid in C++ is available in C;
     added constraint_handler_t.
   * c_keyword.c: s/LANG_MIN(C_11)/LANG_C_MIN(11)/ for _Atomic.
   * cdecl--debug.out, cdecl-d.out, show_all-c++.out, show_all.out,
     show_all_predefined-c++.out, show_all_predefined.out,
     show_all_predefined_typedef-c++.out, show_all_typedef.out,
     show_predefined-c++.out, show_predefined.out, show_predefined_typedef.out,
     show_predefined_using.out: Updated expected tests for lconv.
   * cdecl.1, c_typedef.c: Added lconv typedef.
   * lexer.l: Added %warn.

2021-01-17  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am: s/errors.c/check.c/
   * c_ast.c, c_ast.h, debug.c, parser.y, cdecl--debug.out, cdecl-d.out:
     s/params/param_ast_list/
   * autocomplete.c: s/no_more_matches/more_matches/
   * configure.ac: Updated version.
   * c_type.h, errors.c, parser.y, test/Makefile.am, explain_0dtor.out,
     explain_dtor=delete.out, explain_inx+ctor.out, explain_inx+dtor.out,
     explain_ydtor.out, explain_0dtor.test, explain_dtor=delete.test,
     explain_inx+ctor.test, explain_inx+dtor.test, explain_ydtor.test: Now
     supporting inline destructor definitions and final/override for
     destuctors.
   * c_lang.h, errors.c, parser.y, print.c: Added c_lang_oldest_name();
     reworked fl_elaborate_error() formatting.
   * c_ast.h, c_sname.h, errors.c: Removed c_ast_is_ctor_name().

2021-01-16  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c: Now doing special cases in c_type_name_impl() only when not an
     error.
   * print.c: Added assert()s.
   * parser.y: s/func_qualified_c_tid/func_qualifier_c_tid/

2021-01-15  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: s/AC_PROG_CC_C99/AC_PROG_CC/; moved AC_LANG(C) earlier.
   * run_test.sh: Made --test-name optional.
   * run_test.sh: Now ensuring test and expected output files exist.
   * test/Makefile.am: Fixed test name.
   * c_keyword.h: Removed @note.
   * lexer.l: Added #.
   * lexer.l: Added ().

2021-01-14  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.c: Removed "true".
   * options.c: Made is_cppdecl() take an argument.
   * parser.y: Fixed warnings.

2021-01-13  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS, cdecl.1, c_ast.h, c_type.h, debug.c, english.c, errors.c,
     gibberish.c, help.c, lexer.l, literals.c, literals.h, parser.y, types.h,
     test/Makefile.am, cdecl--debug.out, cdecl-d.out, declare_uw3.out,
     declare_zw3.out, explain_uw3.out, explain_zw3.out, help-c++.out,
     help-c.out, help_command-c++.out, help_command-c++03.out,
     help_command-c.out, help_commands-c++.out, help_commands-c.out,
     declare_fuw3_v.test, declare_puw3.test, declare_uw3.test,
     declare_zw3.test, explain_fuw3_v.test, explain_puw3.test,
     explain_uw3.test, explain_zw3.test: Added support for bit-fields.
   * test/Makefile.am: Test renaming.
   * c_ast_util.c, c_ast_util.h, errors.c:
     s/c_ast_is_builtin/c_ast_is_builtin_any/
   * lexer.l: Whitespace fixes.

2021-01-12  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, set.c: A warning is given if the digraph option is set and
     the current language is C89 or earlier.
   * cdecl.1: Added note about default language being able to be changed in
     cdeclrc file; improved code-fragment indentation; added caveat about not
     all explanations being round-trippable.

2021-01-11  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added "-- default is off" in more places.
   * lexer.l: Whitespace.
   * lexer.l: s/{letter}/{L}/
   * lexer.l: Simplified dtor_sname.
   * c_keyword.c, c_keyword.h, parser.y: s/C_KW_MBR_FUNC/C_KW_CTX_MBR_FUNC/

2021-01-10  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Arranged predefined types by language introducted in.
   * c_keyword.c, c_keyword.h, errors.c, lexer.h, lexer.l, parser.y, print.c,
     types.h, test/Makefile.am, declare_yi.out, explain_yi.out,
     declare_yi.test, explain_yi.test: `final` and `override` are now
     regognized only in a function declaration context.

2021-01-09  Paul J. Lucas <paul@lucasmail.org>

   * c_keyword.c: Whitespace adjustment.
   * c_keyword.c, c_keyword.h: Swapped order ot lang_ids and type_id in
     preparation for keyword context.

2021-01-08  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Now using // comments more.
   * parser.y: Added ast_depth = 0;.

2021-01-07  Paul J. Lucas <paul@lucasmail.org>

   * color.c: s/parse_sgr/sgr_is_valid/

2021-01-06  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Eliminated 2 shift-reduce conflicts by reworking operators.
   * parser.y: Blank lines.
   * c_lang.h: Added const.

2021-01-05  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.h: Added blank line.
   * cdecl.c: Loop clarification.
   * cdecl.c: Now requiring space after "cast" in is_command().
   * red_black.c, red_black.h: s/rb_node_delete/rb_tree_delete/
   * c_sname.c, c_sname.h, parser.y, slist.h: Removed SLIST macros -- not
     really needed.

2021-01-04  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: s/qualifier_pop/qualifier_tid_pop/
   * parser.y: Added missing c_sname_free().

2021-01-03  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, parser.y: Added c_ast_list_free() and Bison %destructor
     directives to call it.
   * c_ast.c, c_ast.h, c_ast_util.c, c_typedef.c, c_typedef.h, debug.c,
     did_you_mean.c, english.c, gibberish.c, gibberish.h, lexer.l, parser.y:
     s/c_typedef/tdef/; s/type/tdef/; s/t/tdef/
   * parser.y: c_ast_t* variable renaming.
   * parser.y: Added c_ast_pair_new_gc().

2021-01-02  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c, parser.y, declare_ctor.out, declare_ctor_i.out,
     explain_ctor_i.out: Unscoped constructor declarations as input are left
     unscoped in output.
   * parser.y: knr_func_or_constructor_c_decl_ast is now of type ast rather
     than ast_pair.
   * parser.y: In-class constructor declaration fix.
   * parser.y: Split out file_scope_destructor_decl_c_ast.
   * parser.y: Split out file_scope_constructor_decl_c_ast.
   * parser.y: More rules now use c_ast_explain_declaration().
   * parser.y: s/c_ast_explain/c_ast_explain_declaration/
   * c_sname.h, parser.y: C++ file-scope constructor definition rule now uses
     c_ast_explain().
   * c_type.h, parser.y: Added TS_NOT_CONSTRUCTOR.
   * configure.ac, cdecl.1, c_sname.h, parser.y, test/Makefile.am,
     explain_ctor_i.out, explain_ctor_i.test: In-class constructor declarations
     without any storage-class-like type are now supported.
   * test/Makefile.am: Test renaming.
   * c_type.h: Added TS_DEFAULT and TS_DELETE to TS_CONSTRUCTOR.
   * c_type.h: Sorting.
   * parser.y: s/pure_virtual_tid/func_equals_tid/
   * c_type.h: Now using TS_ANY_REFERENCE.

2021-01-01  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, parser.y, types.h: s/c_ast_params_t/c_ast_list_t/
   * parser.y: Removed <oper_id> where not needed.
   * parser.y: s/enum_class_struct_union_ast/enum_class_struct_union_c_ast/
   * did_you_mean.c: No longer doing unnecessary != comparison.
   * did_you_mean.c: Simplification in copy_keywords().
   * Doxyfile, Makefile.am, configure.ac, pjl_compile.m4, man/Makefile.am,
     man/man1/Makefile.am, cdecl.1, src/Makefile.am, autocomplete.c, c_ast.c,
     c_ast.h, c_ast_util.c, c_ast_util.h, c_keyword.c, c_keyword.h, c_kind.c,
     c_kind.h, c_lang.c, c_lang.h, c_operator.c, c_operator.h, c_sname.c,
     c_sname.h, c_type.c, c_type.h, c_typedef.c, c_typedef.h, cdecl.c, cdecl.h,
     cdecl_lldb.py, color.c, color.h, dam_lev.c, dam_lev.h, debug.c, debug.h,
     did_you_mean.c, did_you_mean.h, english.c, english.h, errors.c,
     gibberish.c, gibberish.h, help.c, lexer.h, lexer.l, literals.c,
     literals.h, options.c, options.h, parser.y, pjl_config.h, print.c,
     print.h, prompt.c, prompt.h, red_black.c, red_black.h, set.c, slist.c,
     slist.h, types.h, util.c, util.h, test/Makefile.am, not_in_Makefile.sh,
     run_test.sh, update_test.sh: Updated copyright year to 2021.

2020-12-31  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, parser.y: If `returning` <english> is omitted, it's equivalent to
     `returning int` in C95 and earlier.
   * cdecl.1, lexer.l, literals.c, literals.h: Added no-return, no-except,
     no-discard, and no-unique-address synonyms.

2020-12-30  Paul J. Lucas <paul@lucasmail.org>

   * c_keyword.c: Whitespace fixes.
   * lexer.l: Eliminated C_HYPHEN_KEYWORDS, CDECL_HYPHEN_KEYWORDS,
     c_hyphen_find(), and cdecl_hyphen_find() special-case code for matching
     hyphenated tokens.

2020-12-29  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: DUMP fix.
   * test/Makefile.am: Test renaming.
   * c_lang.c, color.c, util.h: Removed FREE_STR_LATER and FREE_STRDUP_LATER --
     not really used.
   * help.c, options.c, parser.y, print.c, set.c, util.c, util.h: Macro
     renaming.

2020-12-28  Paul J. Lucas <paul@lucasmail.org>

   * errors.c, test/Makefile.am, explain_main_fi2apc_i.out,
     explain_main_fi2ppc_i.out, explain_main_fi2apc_i.test,
     explain_main_fi2ppc_i.test: main() now supports a third argument of either
     char*[] or char** (or const versions).
   * errors.c: Function sorting.
   * parser.y, test/Makefile.am, explain_fkr_i.out, explain_fkr_i.test:
     Implicit `int` functions in K&R C are now supported.
   * debug.c: Removed pointless assert().
   * c_typedef.c, show_all-c++.out, show_all.out, show_all_predefined-c++.out,
     show_all_predefined.out, show_all_predefined_typedef-c++.out,
     show_all_typedef.out, show_predefined-c++.out, show_predefined.out,
     show_predefined_typedef.out, show_predefined_using.out: K&R C now has a
     set of predefined typedef declarations distinct from C89 that include only
     those shown in the first edition of _The C Programming Language_.
   * parser.y, print.c: Fixed compiling with --disable-cdecl-debug.

2020-12-27  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Added @warning.
   * parser.y, util.h: s/only_bits_in()/only_bits_set()/ and clarified docs.
   * util.h: MEM_ZERO() now insists that PTR is a pointer and not an array.
   * dam_lev.c: Now using initializer list for last_row[].

2020-12-26  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_type.h: Removed c_type_data_get() -- not needed.
   * c_ast.c: Reverted adding default to c_ast_new().
   * c_type.h: Using TX_NONE more.
   * c_lang.c: Now using LANGX_MASK in c_set_lang().
   * c_ast.h, errors.c: Removed c_ast_find() -- not really needed.
   * c_ast.c: Added default case to c_ast_new().
   * c_typedef.c, util.h: INTERNAL_ERR() now prints the file and line.
   * c_typedef.c: Removed c_typedef_node_data_get().

2020-12-25  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c: Reformatting.
   * parser.y: Using rbracket_exp in more places.
   * parser.y: Added operator_exp grammar rule.
   * errors.c: Fixed error message.
   * help.c, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c++03.out, help_command-c.out, help_commands-c++.out,
     help_commands-c.out, help_english-c++.out, help_english-c.out,
     help_english-c89.out, help_english-knr.out: Reformatted help a bit.
   * help.c: Simplification.
   * configure.ac: Updated version to 9.1.
   * c_lang.h, errors.c, help.c, test/Makefile.am, help-c++.out, help-c.out,
     help_command-c++.out, help_command-c++03.out, help_command-c.out,
     help_commands-c++.out, help_commands-c.out, help_english-c++.out,
     help_english-c.out, help_english-c89.out, help_english-knr.out,
     help_command-c++03.test, help_english-c89.test, help_english-knr.test:
     Help is now specific to particular language versions, not just C or C++.

2020-12-23  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: s/no_except_bool_tid/no_except_bool_tid_exp/
   * errors.c: c_ast_check_alignas() simplification.
   * errors.c: Converte error_*() functions to macros so __FILE__ and __LINE__
     of call-point is correct.
   * parser.y, print.c, print.h: Moved fl_print_error_unknown_type().
   * parser.y: Reworked "unknown type" error message.
   * errors.c, parser.y, print.c, print.h:
     s/print_did_you_mean/print_suggestions/
   * print.h: Whitespace.
   * util.h: Removed unnecessary cast.

2020-12-22  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS: Added mention of "Did you mean ...?" suggestions.
   * parser.y: /* in_attr: qualifier */ comments.
   * parser.y: Inherited attribute comment reformatting.
   * parser.y: Reordering.
   * parser.y: s/namespace_exp/namespace_tid_exp/
   * parser.y: s/virtual_exp/virtual_tid_exp/
   * did_you_mean.c: s/c_sname_full_name/c_ast_full_name/
   * did_you_mean.c: Types for "did you mean ...?" are now those only valid in
     the current language.
   * did_you_mean.c: Simplification.

2020-12-21  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Better error message for "explain <name>" where <name> is not a
     type; added "did you mean ...?" to "show <name>" where <name> is not a
     type.
   * print.c: Now printing "or" before last did-you-mean suggestion.

2020-12-19  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, help.c, parser.y, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c.out, help_commands-c++.out, help_commands-c.out: Now
     allowing "show ... [as] english".
   * c_kind.h, c_sname.h, did_you_mean.c, did_you_mean.h, red_black.h: Added
     "May be null."
   * c_ast.c, c_ast.h, c_keyword.c, c_sname.c, gibberish.h, types.h: Moded some
     types; removed some #include.
   * color.c: s/uint64_t/unsigned long long/
   * c_keyword.c, english.c, errors.c: Removed unnecessary #include.

2020-12-18  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Changed version to 9.0.
   * types.h: Moved declaration.
   * gibberish.c, gibberish.h: Now longer using bits for c_gib_kind.
   * gibberish.c: Added assert().
   * cdecl.1, c_keyword.c, gibberish.c, gibberish.h, help.c, lexer.l, parser.y,
     types.h, test/Makefile.am, help-c++.out, help_command-c++.out,
     help_commands-c++.out, show_predefined_using.out,
     show_predefined_using.test: Added support for showing types as "using"
     declarations.
   * c_keyword.c, c_lang.h, c_typedef.c, gibberish.c, gibberish.h, lexer.l,
     parser.y, test/Makefile.am, show_all_predefined_typedef-c++.out,
     show_all_typedef.out, show_predefined_typedef.out,
     show_all_predefined_typedef-c++.test: The "show" command now prints types
     differently depending on the current language.

2020-12-17  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: s/g_type/c_gib_kind_t/
   * gibberish.c: s/FPRINTF/FPUTS/

2020-12-15  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, c_kind.h, c_type.h, c_typedef.c, english.c: Removed unnecessary
     REINTERPRET_CAST().
   * cdecl.1, c_lang.h, c_typedef.c, c_typedef.h, help.c, parser.y, util.h,
     test/Makefile.am, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c.out, help_commands-c++.out, help_commands-c.out,
     show_all-c++.out, show_all.out, show_all_predefined-c++.out,
     show_all_predefined.out, show_all_typedef.out, show_predefined-c++.out,
     show_predefined.out, show_predefined_typedef.out, show_all-c++.test,
     show_all_predefined-c++.test, show_all_predefined.test,
     show_predefined-c++.test: The `show` command now shows only types that are
     valid in the current language.

2020-12-13  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c: s/c_typedef_parse_builtins/c_typedef_parse_predefined/
   * c_typedef.c: Split TYPEDEFS_STD_CPP[] into separate arrays for C++, C++11,
     c++17, C++20.
   * parser.y: Better annotation of inherited attributes; C++03/11 specific
     error message for "= error".
   * errors.c: Fixed error message for main()'s signature.
   * parser.y: Printing an unknown type error now alternatively prints "X isn't
     a keyword until..." if X is a keyword in a later language version.
   * c_keyword.c: Whitespace fix.
   * parser.y: s/ELABORATE_ERROR/elaborate_error/ to match print_*() functions.
   * parser.y: Fixed @param.
   * parser.y, print.c, print.h: Renamed *_impl() functions to fl_*().
   * parser.y: print_error_unknown_type() now also prints the parser.y file
     location in debug mode.
   * parser.y, print.c: elaborate_error() now also prints file:line in debug
     mode; moved file:line back to end of other messages to match
     elaborate_error().

2020-12-11  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Now checking if the error token is a keyword: if so, mention it
     in the error message.
   * configure.ac, c_keyword.c, literals.c, literals.h, parser.y: Added C++20
     keywords co_await, co_return, and co_yield.
   * dam_lev.c, dam_lev.h, did_you_mean.c, did_you_mean.h: Added missing @file
     comments.

2020-12-10  Paul J. Lucas <paul@lucasmail.org>

   * did_you_mean.c: Silenced warning.
   * src/Makefile.am, c_keyword.c, c_keyword.h, dam_lev.c, dam_lev.h,
     did_you_mean.c, did_you_mean.h, errors.c, parser.y, print.c, print.h,
     types.h: Added "did you mean ...?" suggestions for typograpical errors for
     commands and types.
   * autocomplete.c, cdecl.c, cdecl.h, types.h: Unified CDECL_COMMANDS in
     cdecl.c and autocomplete.c.
   * cdecl.c: Removed "q", "quit", and "exit" from first arg or program name;
     s/COMMAND/C_COMMAND/

2020-12-09  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_operator.c, c_sname.c, c_type.c, c_typedef.c, cdecl.c,
     color.c, debug.c, english.c, gibberish.c, lexer.l, options.c, print.c,
     prompt.c, util.c: x.c now always includes x.h immediately after
     pjl_config.h.
   * red_black.c, red_black.h: Removed "following".

2020-12-08  Paul J. Lucas <paul@lucasmail.org>

   * errors.c, print.c: Hints are now printed on the same line as errors.
   * print.h: Fixed newline comments.
   * c_keyword.c, c_type.h: Added TX_NONE.

2020-12-07  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_type.c, errors.c, parser.y, print.c, set.c: print_error()
     and print_warning() no longer print \n.
   * red_black.c, red_black.h: Added <> around URLs in comments.
   * src/Makefile.am: Moved debug.h to be inside ENABLE_CDECL_DEBUG.

2020-12-06  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_ast_util.h: Made c_ast_join_type_decl() return non-const*.

2020-12-04  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_ast_util.h, parser.y: Moved some code to c_ast_util.c.
   * configure.ac, cdecl.1, parser.y, test/Makefile.am, cdecl--debug.out,
     cdecl-d.out, explain_i_i.out, explain_i_pfd_i.out, explain_i_pi.out,
     explain_i_i.test, explain_i_pfd_i.test, explain_i_pi.test: Can now explain
     multiple, comma-separated declarations.
   * parser.y: Added in_attr_free().

2020-12-02  Paul J. Lucas <paul@lucasmail.org>

   * red_black.c, red_black.h: Removed rb_tree_new() -- no longer used.
   * options.c, util.c: Added "noreturn".
   * pjl_config.h: Removed do { ... } while (0)

2020-12-01  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS, cdecl.1, c_lang.c, c_lang.h, help.c, test/Makefile.am,
     help-c++.out, help-c.out, help_command-c++.out, help_command-c.out,
     help_commands-c++.out, help_commands-c.out, set_c17.out, set_c90.out,
     cast_pfx_i-c17.test, declare_pfkr_i-c17.test, set_c17.test, set_c18.test,
     set_c90.test: Nos using C17 instead of C18 (but still allowing C18); also
     allowing C90 as an alias for C89.

2020-11-30  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c, c_ast.c, c_ast.h, c_ast_util.c, c_ast_util.h, c_keyword.c,
     c_keyword.h, c_kind.c, c_kind.h, c_lang.c, c_lang.h, c_operator.c,
     c_operator.h, c_sname.c, c_sname.h, c_type.c, c_type.h, c_typedef.c,
     c_typedef.h, cdecl.c, color.h, debug.c, debug.h, english.c, english.h,
     errors.c, gibberish.c, gibberish.h, help.c, lexer.h, lexer.l, literals.c,
     literals.h, options.c, options.h, parser.y, print.c, print.h, prompt.c,
     prompt.h, red_black.c, red_black.h, set.c, slist.c, slist.h, util.c,
     util.h: pjl_config.h is now the primary file to #include.

2020-11-28  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c, c_ast.c, c_ast.h, c_ast_util.c, c_ast_util.h, c_keyword.c,
     c_keyword.h, c_kind.h, c_lang.h, c_operator.c, c_operator.h, c_sname.c,
     c_sname.h, c_type.c, c_type.h, c_typedef.c, c_typedef.h, cdecl.c, color.c,
     color.h, debug.c, english.c, errors.c, gibberish.c, gibberish.h, help.c,
     lexer.h, lexer.l, literals.h, options.c, options.h, parser.y,
     pjl_config.h, print.c, print.h, prompt.c, red_black.c, red_black.h,
     slist.h, util.c, util.h: s/C_/PJL_/ for pjl_config.h macros.

2020-11-25  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l, types.h: Now using Bison-defined yytokentype.

2020-11-10  Paul J. Lucas <paul@lucasmail.org>

   * options.c, options.h: opt_fin & opt_fout have been made local to options.c
     and renamed fin_path and fout_path.
   * debug.c: Now pre-incrementing and post-decrementing.

2020-11-08  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Replaced '(' with lparen_exp and ')' with rparen_exp in some
     cases.
   * parser.y: s/_expected/_exp/
   * parser.y: Reordered some lines.

2020-11-07  Paul J. Lucas <paul@lucasmail.org>

   * c_type.h: Added comment.

2020-11-06  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c: s/i_ast/j_ast/
   * parser.y, test/Makefile.am, explain_fac_v-1.out, explain_fac_v-1.test:
     Added support for C99 type-qualified arrays of unspecified size.
   * autocomplete.c, c_lang.c, c_type.c, c_typedef.c, cdecl.c, options.c: Added
     "const" to array sizes.
   * c_typedef.c, red_black.c, red_black.h: Red-black trees are now
     stack-based.

2020-11-05  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.c, c_sname.h, parser.y, slist.h:
     s/slist_head()/slist_peek_head()/; s/slist_tail()/slist_peek_tail()/

2020-11-02  Paul J. Lucas <paul@lucasmail.org>

   * cdecl_lldb.py: Now using linked_list_iter().
   * cdecl_lldb.py: Removed ';'.

2020-11-01  Paul J. Lucas <paul@lucasmail.org>

   * cdecl_lldb.py: Removed "et al.".
   * cdecl_lldb.py: Added LLDB pretty printer for c_scope_t.
   * configure.ac: Updated to 8.2.
   * cdecl.1, help.c, parser.y, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c.out, help_commands-c++.out, help_commands-c.out: The "set"
     command can now take multiple options.
   * set.c: Added asserts.

2020-10-31  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c: s/COMMAND_FIRST_ARG/COMMAND_ANY/
   * .lldbinit, cdecl_lldb.py: Added LLDB formater for c_sname_t.
   * lexer.l: Renamed c_sname parsing functions.

2020-10-28  Paul J. Lucas <paul@lucasmail.org>

   * util.c: path_append() now handles case of component starting with '/'.
   * util.c: Sorted functions.
   * util.h: Removed self @sa.
   * c_sname.c: Added assert().

2020-10-26  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c, c_type.h: Removed c_type_data_dup(), c_type_data_free(), and
     c_type_data_new() -- no longer used.
   * configure.ac: Removed AX_COMPILE_CHECK_SIZEOF(c_type_id_t...) -- no longer
     needed.

2020-10-25  Paul J. Lucas <paul@lucasmail.org>

   * c_kind.h, errors.c: Added K_ANY_OBJECT.
   * parser.y: s/LANG_MIN/LANG_CPP_MIN/
   * parser.y: s/TYPE_ID/TID/
   * c_lang.h: s/c_lant_lit/c_lang_lit/

2020-10-20  Paul J. Lucas <paul@lucasmail.org>

   * help.c, help-c++.out, help_command-c++.out, help_commands-c++.out,
     help_english-c++.out: Moved scope-e in help.

2020-10-19  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.h, c_type.c, lexer.l: Added C_LANG_LIT() macro.
   * lexer.l: Added "const".

2020-10-17  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Now initializing show_type_info_t directly.
   * english.c, gibberish.c, parser.y: Removed newlines from
     c_ast_gibberish_type() and c_ast_english_type().

2020-10-11  Paul J. Lucas <paul@lucasmail.org>

   * ax_append_flag.m4, ax_check_compile_flag.m4: Updated m4 macros.

2020-10-06  Paul J. Lucas <paul@lucasmail.org>

   * help.c, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c.out, help_commands-c++.out, help_commands-c.out: Removed []
     from aligned in help since other words don't have [].

2020-10-05  Paul J. Lucas <paul@lucasmail.org>

   * help.c, lexer.l, literals.c, literals.h, help-c++.out, help-c.out,
     help_command-c++.out, help_command-c.out, help_commands-c++.out,
     help_commands-c.out: Now allowing "align" in English.

2020-10-04  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.c, util.h: Added BUF_END().

2020-10-03  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c, show_all_typedef.out, show_predefined_typedef.out: Now
     printing types in nested namespace form when the language is any version
     of C.
   * english.c, english.h, gibberish.c, gibberish.h, parser.y,
     2c_typedef_i.out, namespace_c_typedef_i.out, namespace_k_typedef_i.out,
     namespace_n_typedef_i.out, show_all_typedef.out,
     show_predefined_typedef.out: Now showing types in abbreviated form rather
     than always typedefs.

2020-10-02  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Rework scoped declarations, part 2.
   * parser.y: Rework scoped declarations.
   * c_sname.c, c_sname.h, debug.c, english.c, errors.c, gibberish.c, parser.y:
     Added c_scope_data(); removed c_scope_name(), c_scope_type(),
     c_scope_set_type().

2020-10-01  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h: Whitespace change.
   * c_ast.c, c_ast.h, c_ast_util.c, debug.c, english.c, gibberish.c, parser.y,
     types.h: Added c_typedef_ast_t.
   * parser.y: Added DUMP_BOOL().
   * c_ast.c, c_ast.h, c_ast_util.c, debug.c, english.c, english.h,
     gibberish.c, gibberish.h, lexer.l, parser.y: Replaced c_typedef by
     typedef_ast.

2020-09-20  Paul J. Lucas <paul@lucasmail.org>

   * types.h: Whitespace change.
   * errors.c, gibberish.c, literals.c, literals.h: Unified alignas_lang().
   * gibberish.c: Change gibberish type eo an enum.

2020-09-19  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c: Now free'ing function parameter list nodes.
   * c_ast.c: Sorted functions.
   * c_ast.h: Sorted functions.
   * c_ast.h, c_sname.h: Removed unused functions.
   * parser.y: s/c_sname_append_name/c_ast_sname_append_name/
   * errors.c: s/c_sname_local_name/c_ast_sname_local_name/
   * c_ast.c, c_ast.h, debug.c, english.c, errors.c, gibberish.c:
     s/c_ast_param_ast/c_param_ast/

2020-09-18  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: s/is_deleted/is_delete/
   * c_ast.c, c_ast.h, c_kind.h, c_operator.c, c_operator.h, debug.c,
     english.c, errors.c, gibberish.c, parser.y, types.h, cdecl--debug.out,
     cdecl-d.out: Changed "arguments" to "parameters" since that's technically
     correct.

2020-09-13  Paul J. Lucas <paul@lucasmail.org>

   * cdecl--debug.out, cdecl-d.out: Now debug printing function flags better,
     part 2.
   * debug.c: Now debug printing function flags better.
   * debug.c: Renamed variable.
   * debug.c: Added INDENT_PRINT_LOC().
   * cdecl.1, c_typedef.c, parser.y, cdecl--debug.out, cdecl-d.out,
     show_all.out, show_all_typedef.out, show_predefined.out,
     show_predefined_typedef.out: Added many more standard C++ types.

2020-09-12  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: COmment fix.
   * parser.y: Parser macro clean-up.
   * parser.y, test/Makefile.am, explain_grtri.out, explain_grtrri.out,
     explain_grtri.test, explain_grtrri.test: Added support for restricted
     references.

2020-09-11  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c: Fix build error on Linux.
   * configure.ac, cdecl.1, autocomplete.c, c_keyword.c, c_lang.c, c_lang.h,
     c_type.c, c_type.h, errors.c, literals.c, literals.h, parser.y,
     test/Makefile.am, xupc_declare_a2di.out, xupc_declare_da2i.out,
     xupc_declare_dpi.out, xupc_declare_pdi.out, xupc_declare_ptdi.out,
     xupc_declare_rdi.out, xupc_declare_rdpi.out, xupc_declare_tdi.out,
     xupc_explain_da2i.out, xupc_explain_dpi.out, xupc_explain_pdi.out,
     xupc_explain_ptdi.out, xupc_explain_rdi.out, xupc_explain_rdpi.out,
     xupc_explain_tdi.out, xupc_declare_a2di.test, xupc_declare_dpi.test,
     xupc_declare_pdi.test, xupc_declare_ptdi.test, xupc_declare_rdi.test,
     xupc_declare_rdpi.test, xupc_declare_tdi.test, xupc_explain_da2i.test,
     xupc_explain_dpi.test, xupc_explain_pdi.test, xupc_explain_ptdi.test,
     xupc_explain_rdi.test, xupc_explain_rdpi.test, xupc_explain_ri.test,
     xupc_explain_tdi.test: Added support for Unified Parallel C.

2020-09-10  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c, c_ast.c, c_ast.h, c_ast_util.c, c_ast_util.h, c_keyword.c,
     c_lang.c, c_lang.h, c_operator.c, c_sname.c, c_sname.h, c_type.c,
     c_type.h, c_typedef.c, debug.c, debug.h, english.c, errors.c, gibberish.c,
     lexer.l, literals.c, literals.h, options.c, parser.y, pjl_config.h,
     types.h, util.h, cdecl--debug.out, cdecl-d.out: Now using multi-part C/C++
     types for >64 bits of type information.

2020-08-13  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, parser.y: Can now declare a class as just "class C[;]".

2020-08-12  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all.out,
     show_all_typedef.out, show_predefined.out, show_predefined_typedef.out:
     Added types std::condition_variable, std::condition_variable_any,
     std::mutex, std::recursive_mutex, std::recursive_timed_mutex, std::regex,
     std::shared_mutex, std::shared_timed_mutex, std::string_view, and
     std::timed_mutex.

2020-08-09  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added more mentions of Embedded C types.
   * cdecl.1: Added misssing "final", "override", and "export".
   * cdecl.1: Storage is * for constructor.

2020-07-31  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: s/slist_t/c_ast_args_t/
   * parser.y: Moved more calls to DUMP_* macros before PARSE_ABORT().
   * parser.y: For trailing_return_type_c_ast_opt, move DUMP_* calls before
     checks.

2020-07-29  Paul J. Lucas <paul@lucasmail.org>

   * Makefile.am: s/gnulib/gnulib-tool/
   * types.h: Made c_lang_id_t be uint32_t to avoid warnings.
   * cdecl.1, autocomplete.c, c_keyword.c, c_type.c, c_type.h, lexer.l,
     literals.c, literals.h, parser.y, test/Makefile.am, declare_exf_i.out,
     declare_exi.out, explain_exf_i.out, explain_exi.out, declare_exf_i.test,
     declare_exi.test, declare_exsi.test, explain_exf_i.test, explain_exi.test,
     explain_exsi.test: Added support for C++20's "export".
   * test/Makefile.am: Test renaming.

2020-07-28  Paul J. Lucas <paul@lucasmail.org>

   * errors.c, lexer.l, test/Makefile.am, cast_pfx_i-c18.test, cast_pfx_i.test,
     declare_fkr_pi-c18.test, declare_fkr_pi.test, declare_pfkr_i-c18.test,
     declare_pfkr_i.test, explain_fkr_pi-c18.test, explain_fkr_pi.test: Removed
     support for typeless function arguments in C2X.
   * cdecl.1, autocomplete.c, c_keyword.c, c_type.c, c_type.h, errors.c,
     literals.c, literals.h, parser.y, test/Makefile.am, declare_xici.out,
     declare_xici.test, explain_xif_i.test: Added "constinit".
   * test/Makefile.am: Test renaming.

2020-07-27  Paul J. Lucas <paul@lucasmail.org>

   * c_keyword.c, literals.c, literals.h, parser.y: Added "asm".
   * cdecl.c, options.c, options.h: Uniform declaration of argv.

2020-07-26  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Upped version to 8.0.
   * english.c, parser.y: Simplified explaining typedefs.
   * english.c: Reformatting.
   * c_type.c: Added L_TYPE for English version of T_TYPEDEF.
   * parser.y: s/c_ast_finish_explain/c_ast_pre_explain/
   * parser.y: Simplified c_ast_explain() a bit.
   * c_ast_util.c, c_ast_util.h, parser.y:
     s/c_ast_take_typedef/c_ast_take_type_any/
   * cdecl.1, help.c, parser.y, help-c++.out, help_command-c++.out,
     help_commands-c++.out: {} are now optional for class/struct/union-alone
     declarations.
   * help.c, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c.out, help_commands-c++.out, help_commands-c.out: Added C2X
     to help.
   * parser.y:
     s/scope_typedef_or_using_declaration_c_opt/in_scope_declaration_c_opt/
   * AUTHORS: Added more stuff added.
   * Makefile.am: Added "update-gnulib" rule.
   * cdecl.1, c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all.out,
     show_all_typedef.out, show_predefined.out, show_predefined_typedef.out:
     Added yet more types _Float16_t, _Float32_t, _Float64_t, _Float128_t,
     _Decimal128_t.

2020-07-25  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all.out,
     show_all_typedef.out, show_predefined.out, show_predefined_typedef.out:
     Added types from Floating-point extensions for C.
   * c_lang.c: s/K&R C/K&RC/ for consistency.
   * cdecl.1, autocomplete.c, c_keyword.c, c_lang.c, c_lang.h, c_type.c,
     parser.y, set.out, set_options.out: Added support for C2X.
   * cdecl.c, cdecl.h, parser.y, types.h: Replaced c_init_t by bool.
   * parser.y: Added unsupported().
   * c_lang.h, types.h: Reworked LANG_*.
   * util.h: UNEXPECTED_INT_VALUE() now also prints in hex.
   * parser.y: The [[xxx]] attribute syntax is now forbidden until C++11.
   * c_keyword.c, c_type.c: Reformatting.
   * cdecl.1, autocomplete.c, c_keyword.c, c_keyword.h, c_lang.c, c_lang.h,
     c_type.c, c_type.h, c_typedef.c, errors.c, lexer.l, literals.c,
     literals.h, parser.y, test/Makefile.am, cdecl--debug.out, cdecl-d.out,
     show_all.out, show_all_typedef.out, show_predefined.out,
     show_predefined_typedef.out, xec_explain_a.out, xec_explain_ha.out,
     xec_explain_hr.out, xec_explain_la.out, xec_explain_lr.out,
     xec_explain_r.out, xec_explain_ta.out, xec_explain_tr.out,
     xec_explain_tua.out, xec_explain_ua.out, xec_explain_uhta.out,
     xec_explain_uhtr.out, xec_explain_ur.out, xec_explain_uta.out,
     xec_explain_a.test, xec_explain_ha.test, xec_explain_hr.test,
     xec_explain_la.test, xec_explain_lla.test, xec_explain_llr.test,
     xec_explain_lr.test, xec_explain_r.test, xec_explain_t.test,
     xec_explain_ta.test, xec_explain_ti.test, xec_explain_tr.test,
     xec_explain_tua.test, xec_explain_ua.test, xec_explain_uhta.test,
     xec_explain_uhtr.test, xec_explain_ur.test, xec_explain_uta.test: Added
     support for Embedded C extensions.

2020-07-24  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am, update_test.sh: Added update_test.sh script.
   * run_test.sh: s/OUTPUT/ACTUAL_OUTPUT/

2020-07-23  Paul J. Lucas <paul@lucasmail.org>

   * print.c, print.h: Now printing file & line where print_warning() was
     called from in debug mode.
   * c_type.c, c_type.h: s/T_INT_MODIFIER/T_ANY_MODIFIER/
   * c_type.c: Reference qualifiers are only in C++11 and later.
   * lexer.l: Added comments.

2020-07-21  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c: Removed silly assert()s.
   * c_ast.c, c_ast.h: Made c_ast_sname_dup() inline.
   * c_sname.c, c_sname.h: Removed c_sname_prepend_name() -- not used.
   * configure.ac, cdecl.1, autocomplete.c, cdecl.c, parser.y,
     2c_typedef_i.out, namespace_c_typedef_i.out, namespace_k_typedef_i.out,
     namespace_n_typedef_i.out, typedef_tki.out: class/struct/union addionally
     define themselves. Added "class", "struct", and "union" as commands. ';'
     is now optional after class/struct/union.
   * c_ast.c, c_ast.h, c_sname.c, c_sname.h, english.c, errors.c, parser.y:
     Changed *_type to *_local_type to be clearer.
   * c_sname.h, gibberish.c: Fixed printing scoped types in gibberish for
     recent sname scoping changes.

2020-07-20  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added debug information to scope_declaration_c.
   * english.c: Simplified c_sname_english() and c_typedef_english().
   * debug.c, debug.h, parser.y, cdecl--debug.out, cdecl-d.out: Now including
     scope types for all scopes in sname debug output.

2020-07-19  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Now setting the scope type to "namespace" for all scopes in a
     namespace declaration.
   * c_ast.c, c_sname.c, c_typedef.c: Added assert()s.
   * c_sname.c: Simplified c_sname_type_impl().
   * parser.y: Moved check for nested types in C only if a nested type is
     actually attempted.
   * help.c, help-c++.out, help_command-c++.out, help_commands-c++.out: Removed
     {} from scope-e in help.
   * c_typedef.c: Added C_TYPEDEF_VAR_INIT().

2020-07-18  Paul J. Lucas <paul@lucasmail.org>

   * c_sname.c, c_sname.h, english.c, errors.c, lexer.l, parser.y, types.h,
     test/Makefile.am, explain_nsct.out, explain_nsct.test: Each scope of a
     scoped name (sname) now has its own type.	Additionally, the English
     printed order is now (correctly) inner-to-outermost.

2020-07-17  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c: Reworked c_ast_sname_set_sname().
   * c_ast.c: s/c_sname_append_sname/c_ast_sname_append_sname/
   * parser.y: Flipper c_sname_append_sname() & c_sname_set_type() order.
   * c_type.c, errors.c, parser.y: s/strdup/check_strdup/

2020-07-16  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, c_sname.h: Moved c_scope_name() from c_ast.h to c_sname.h.
   * prompt.c: Now always freeing old prompt.
   * c_lang.c, cdecl.c, prompt.c, prompt.h, set.c: s/prompt/cdecl_prompt/
   * c_ast_util.h: Sorted functions.
   * c_ast_util.c, c_ast_util.h, errors.c, types.h: Moved c_ast_pair to
     types.h.
   * c_ast.c: Pulled switch() out of loop in c_ast_visit().
   * c_ast.c: Changed c_ast_visit() from recursive to iterative.

2020-07-15  Paul J. Lucas <paul@lucasmail.org>

   * color.c: s/fd_out/fout_fd/
   * help.c: Hoisted is_title() check out of the loop.
   * help.c: s/c/s/

2020-07-14  Paul J. Lucas <paul@lucasmail.org>

   * help.c: Added comment.
   * help.c: Simplified help-printing code; now also highlighting '+'.

2020-07-13  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, cdecl.1, help.c, parser.y, help-c++.out, help-c.out,
     help_command-c++.out, help_command-c.out, help_commands-c++.out,
     help_commands-c.out: Now allowing "to" in addition to "as" for "...
     aligned [as|to] ...".

2020-07-12  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, help.c, parser.y: Now allowing an optional "as" in "show ... [as]
     typedef".

2020-07-11  Paul J. Lucas <paul@lucasmail.org>

   * lib/Makefile.am, string.in.h, unistd.in.h, string_h.m4, unistd_h.m4:
     Updated GNUlib.
   * c_ast.c, c_type.h, parser.y: Added T_ANY_SCOPE.
   * c_ast.h: Moved some documentation.
   * configure.ac, c_ast.c, c_ast.h, c_ast_util.c, c_ast_util.h, c_kind.c,
     c_kind.h, errors.c, parser.y, types.h: s/c_kind/c_kind_id/
   * errors.c, test/Makefile.am, explain_rr.test, explain_rrr-1.test,
     explain_rrr-2.test, explain_rrrr.test: References to references are now
     illegal.

2020-07-10  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: -Wimplicit-int-conversion and -Wshorten-64-to-32 and clang only.
   * c_ast_util.c: Now calling c_type_normalize() in more places.
   * errors.c: s/0/T_NONE/
   * errors.c: Added [const] to error message.
   * errors.c: Simplified c_ast_check_func_main().
   * c_ast_util.c, c_ast_util.h, errors.c: Augmented c_ast_is_ptr_to_type() to
     take a mask parameter.

2020-07-09  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, c_ast_util.h, errors.c: Added c_ast_is_ptr_to_type().
   * c_ast.h, types.h: Added c_ast_args_t.
   * debug.h: s/out/dout/
   * run_test.sh, 2c_typedef_i.test, 2define_k_define_2k_show.test,
     2k_typedef_i.test, cast_+i.test, cast_a3i.test, cast_bii_d.test,
     cast_ci.test, cast_constant.test, cast_cpa3cpa5i.test, cast_cpa3pa5i.test,
     cast_cpa9ci.test, cast_cpa9i.test, cast_cpbv_pi.test, cast_cpcpi.test,
     cast_cpfv_pi.test, cast_cpi.test, cast_cppi.test, cast_cvpi.test,
     cast_f_i.test, cast_gi.test, cast_ll.test, cast_pa3cpa5i.test,
     cast_pa3pa5i.test, cast_pa9i.test, cast_pbv_pi.test, cast_pci.test,
     cast_pcpi.test, cast_pf_i-01.test, cast_pf_i-02.test, cast_pfii_i.test,
     cast_pfv_pi.test, cast_pfx_i.test, cast_pi.test, cast_pmi.test,
     cast_ppi.test, cast_sc.test, cast_si.test, cast_sll.test, cast_ti.test,
     cast_type.test, cast_u.test, cast_uc.test, cast_ui.test, cast_ull.test,
     cast_vcpi.test, cast_vpi.test, cdecl--debug.test,
     cdecl--no-semicolon.test, cdecl--no-typedefs.test, cdecl-23.test,
     cdecl-Ii.test, cdecl-Iiu.test, cdecl-Il.test, cdecl-Ill.test,
     cdecl-Ilull.test, cdecl-Is.test, cdecl-Iu.test, cdecl-Iui.test,
     cdecl-Iul,ll.test, cdecl-Iul.test, cdecl-Iull.test, cdecl-Iulll.test,
     cdecl-Iulull.test, cdecl-Ius.test, cdecl-Ix.test, cdecl-d.test,
     cdecl-e-const_cast_pi.test, cdecl-s.test, cdecl-t.test, cdecl-xx.test,
     ci.test, cl-cast_i.test, cl-declare_i.test, cl-explain_i.test,
     const_cast_+pi.test, const_cast_pi-c.test, const_cast_pi.test,
     declare_+ctor-error.test, declare_+dtor.test, declare_+f_v.test,
     declare_+o_delete_a_pv_v.test, declare_+o_delete_pv_v.test,
     declare_+o_eq_rck_rk=default-c++03.test,
     declare_+o_eq_rck_rk=default.test, declare_+o_eq_rck_rk=delete-c++03.test,
     declare_+o_eq_rck_rk=delete.test, declare_+o_new_a_z_pv.test,
     declare_+o_new_z_pv.test, declare_+udc_i.test, declare_+udl_c_i.test,
     declare_0f_v-c.test, declare_0f_v.test, declare_2+f_v.test,
     declare_=+i.test, declare_=i-c.test, declare_=i.test, declare_a.test,
     declare_a3a5a7i.test, declare_a3a5i.test, declare_a3a5pfv_i.test,
     declare_a3a5pfv_pi.test, declare_a3a5pfv_ppa7a9i.test,
     declare_a3a5pfv_ppa7a9pc.test, declare_a3a5pfv_ppa7i.test,
     declare_a3a5pfv_ppa7pi.test, declare_a3a5pfv_ppi.test,
     declare_a3pfv_i.test, declare_a3ppfv_i.test, declare_a9cpi.test,
     declare_a9i.test, declare_a9pi.test, declare_a_nua_f.test,
     declare_ac3i.test, declare_af-c++.test, declare_af.test,
     declare_ai-01.test, declare_ai-02.test, declare_ai-c++11.test,
     declare_ai.test, declare_alttokens_o_amper2_rck_b.test,
     declare_alttokens_o_amper_eq_rki_rk.test,
     declare_alttokens_o_amper_rcki_k.test,
     declare_alttokens_o_circ_eq_i_rk.test,
     declare_alttokens_o_circ_rcki_k.test,
     declare_alttokens_o_exclam_eq_rcki_b.test,
     declare_alttokens_o_exclam_rck_b.test,
     declare_alttokens_o_pipe_2rck_k.test,
     declare_alttokens_o_pipe_eq_i_rk.test, declare_alttokens_o_pipe_i_rk.test,
     declare_alttokens_o_tilde_k.test, declare_api-01.test, declare_as3i.test,
     declare_avi.test, declare_b-c++.test, declare_b-c89.test, declare_b.test,
     declare_b_ai.test, declare_b_f_i.test, declare_bii_d.test,
     declare_c-c.test, declare_c.test, declare_c16-c++03.test,
     declare_c16-c99.test, declare_c32-c++03.test, declare_c32-c99.test,
     declare_c8-c++17.test, declare_c_al0-c++.test, declare_c_al0.test,
     declare_c_al8-c++.test, declare_c_al8.test, declare_c_alpv.test,
     declare_cdfcdi_i.test, declare_cdfi_i.test, declare_cdi.test,
     declare_cf_v-c.test, declare_cf_v.test, declare_ci-ec.test,
     declare_ci-knr.test, declare_ci.test, declare_ck-ec.test, declare_ck.test,
     declare_ck2-ec.test, declare_ck2.test, declare_cnmf_v.test,
     declare_co_exclam_k_b.test, declare_constant.test, declare_cpa3cpa5i.test,
     declare_cpa3pa5i.test, declare_cpa9ci.test, declare_cpa9i.test,
     declare_cpbv_pi.test, declare_cpcpi.test, declare_cpfv_pi.test,
     declare_cpi.test, declare_cpmi.test, declare_cppi.test,
     declare_crf_v.test, declare_cri.test, declare_crrf_v.test,
     declare_ctor.test, declare_ctor_i.test, declare_cu.test,
     declare_cvpi.test, declare_cz-ec.test, declare_cz.test, declare_df_v.test,
     declare_digraphs_a9i.test, declare_digraphs_nfi_v-c++.test,
     declare_dtor.test, declare_dui.test, declare_e-knr.test, declare_e.test,
     declare_ea2i.test, declare_ec-c.test, declare_ec.test,
     declare_ector_i.test, declare_ef.test, declare_ek.test,
     declare_esf_v.test, declare_f+k_v.test, declare_f.test, declare_f_ai.test,
     declare_f_f_i.test, declare_f_pi.test, declare_f_pmi.test,
     declare_facs3_v.test, declare_facv_v.test, declare_fas3_v.test,
     declare_fasc3_v.test, declare_fav_v.test, declare_fcce_v-01.test,
     declare_fcce_v-02.test, declare_fcce_v-03.test, declare_fcdi_i.test,
     declare_fcf.test, declare_fco_exclam_b.test, declare_fdi_v.test,
     declare_ff_v-c.test, declare_ff_v.test, declare_fg_v-c89.test,
     declare_fg_v.test, declare_fgi_v.test, declare_fid_v.test,
     declare_fiiv_v.test, declare_fipfi_v_pfi_v.test, declare_fiv_v.test,
     declare_fixiy_v.test, declare_fmf_v.test, declare_fmo_star_rk_rk.test,
     declare_fn.test, declare_fpc_pi.test, declare_fpci_pi.test,
     declare_fpfc_i_d.test, declare_frri_v.test, declare_fsi_v.test,
     declare_fti_v-01.test, declare_fti_v-02.test, declare_fui_v-01.test,
     declare_fui_v-02.test, declare_fv_pa3a5i.test, declare_fv_pa3a5pi.test,
     declare_fv_pa3i.test, declare_fv_pa3pi.test, declare_fv_v.test,
     declare_fvx_v.test, declare_fx_pi.test, declare_ga.test,
     declare_gf_v.test, declare_gi.test, declare_grtpi.test, declare_hb.test,
     declare_hc.test, declare_hc16.test, declare_hc32.test, declare_hc8.test,
     declare_hd.test, declare_hf.test, declare_hl.test, declare_hll.test,
     declare_hv.test, declare_hw.test, declare_i=+.test, declare_if_v.test,
     declare_ii-c++.test, declare_ii.test, declare_jf_i.test, declare_ji.test,
     declare_k.test, declare_lb.test, declare_lc.test, declare_lc16.test,
     declare_lc32.test, declare_lc8.test, declare_ld-knr.test, declare_ld.test,
     declare_lf-c.test, declare_lf.test, declare_ll-c89.test,
     declare_ll-knr.test, declare_ll.test, declare_lll.test, declare_lv.test,
     declare_lw.test, declare_md.test, declare_mf.test, declare_mi.test,
     declare_mo_amper2_rck_b.test, declare_mo_amper_eq_i_rk.test,
     declare_mo_amper_i_rk.test, declare_mo_amper_pk.test,
     declare_mo_arrow_i.test, declare_mo_arrow_pk.test,
     declare_mo_arrow_star_i_rk.test, declare_mo_brackets_i_i.test,
     declare_mo_circ_eq_i_rk.test, declare_mo_comma_i_rk.test,
     declare_mo_exclam_b.test, declare_mo_exclam_eq_i_b.test,
     declare_mo_greater2_eq_i_rk.test, declare_mo_greater2_i_k.test,
     declare_mo_greater_eq_rcki_b.test, declare_mo_less2_eq_i_rk.test,
     declare_mo_less2_i_k.test, declare_mo_less_eq_rcki_b.test,
     declare_mo_minus_eq_i_rk.test, declare_mo_minus_i_k.test,
     declare_mo_percent_eq_i_rk.test, declare_mo_percent_i_k.test,
     declare_mo_pipe2_rck_b.test, declare_mo_pipe_eq_i_rk.test,
     declare_mo_pipe_i_rk.test, declare_mo_plus_eq_i_rk.test,
     declare_mo_plus_i_k.test, declare_mo_slash_eq_i_rk.test,
     declare_mo_star_eq_i_rk.test, declare_mo_star_i_rk.test,
     declare_mo_star_rk.test, declare_mo_tilde_k.test, declare_n.test,
     declare_nfi_v-01-c++.test, declare_nfi_v-01.test,
     declare_nfi_v-02-c++.test, declare_nfi_v-02.test,
     declare_nfi_v-03-c++.test, declare_nfi_v-03.test, declare_ni.test,
     declare_nmo_amper2_2rck_b.test, declare_nmo_amper_eq_rki_rk.test,
     declare_nmo_amper_i_i.test, declare_nmo_amper_rcki_k.test,
     declare_nmo_amper_rk_pk.test, declare_nmo_arrow_rk_pk.test,
     declare_nmo_arrow_star_rki_rk.test, declare_nmo_brackets_rcki_v.test,
     declare_nmo_circ_rcki_k.test, declare_nmo_comma_rki_rk.test,
     declare_nmo_eq_rki_rk.test, declare_nmo_exclam_eq_ki_b.test,
     declare_nmo_exclam_rck_b.test, declare_nmo_greater2_rcki_k.test,
     declare_nmo_greater_eq_rcki_b.test, declare_nmo_greater_rcki_b.test,
     declare_nmo_less2_eq_rki_rk.test, declare_nmo_less2_rcki_k.test,
     declare_nmo_less_eq_rcki_b.test, declare_nmo_less_rcki_b.test,
     declare_nmo_minus2_rki_rk.test, declare_nmo_minus_eq_rki_rk.test,
     declare_nmo_minus_rcki_k.test, declare_nmo_parens_rck_v.test,
     declare_nmo_percent_eq_rki_rk.test, declare_nmo_percent_rcki_k.test,
     declare_nmo_pipe2_2rck_b.test, declare_nmo_pipe_eq_rki_rk.test,
     declare_nmo_plus2_rki_rk.test, declare_nmo_plus_eq_rki_rk.test,
     declare_nmo_plus_rcki_k.test, declare_nmo_slash_eq_rki_rk.test,
     declare_nmo_slash_rcki_k.test, declare_nmo_star_eq_rki_rk.test,
     declare_nmo_star_rck_k.test, declare_nmo_star_rcki_k.test,
     declare_nmo_tilde_rck_k.test, declare_ntf.test, declare_o2=_exclam_b.test,
     declare_o_amper2_2rck_b.test, declare_o_amper2_rck_b.test,
     declare_o_amper_2rck_k.test, declare_o_amper_eq_i_rk.test,
     declare_o_amper_eq_rki_rk.test, declare_o_amper_i_rk.test,
     declare_o_amper_pk.test, declare_o_amper_rcki_k.test,
     declare_o_arrow_i.test, declare_o_arrow_rk_pk.test,
     declare_o_arrow_star_i_rk.test, declare_o_arrow_star_rki_rk.test,
     declare_o_brackets_2i_i.test, declare_o_circ_eq_i_rk.test,
     declare_o_colon2_rk_rk.test, declare_o_comma_rki_rk.test,
     declare_o_delete_a_pv_v.test, declare_o_delete_pv_v.test,
     declare_o_dot_k.test, declare_o_dot_star_rk_rk.test,
     declare_o_eq2_i_b.test, declare_o_eq2_ki_b.test, declare_o_exclam_2i.test,
     declare_o_exclam_b.test, declare_o_exclam_eq_i_b.test,
     declare_o_exclam_eq_ki_b.test, declare_o_exclam_rck_b.test,
     declare_o_greater2_eq_i_rk.test, declare_o_greater2_i_k.test,
     declare_o_greater2_rcki_k.test, declare_o_greater_eq_rcki_b.test,
     declare_o_less2_eq_i_rk.test, declare_o_less2_i_k.test,
     declare_o_less2_rcki_k.test, declare_o_less_eq_greater_2rck_a-c++17.test,
     declare_o_less_eq_greater_2rck_a.test, declare_o_less_eq_rcki_b.test,
     declare_o_minus2_d_rk.test, declare_o_minus2_rkd_rk.test,
     declare_o_minus_i_k.test, declare_o_minus_ie_i.test,
     declare_o_new_a_z_pv.test, declare_o_new_z_pv.test,
     declare_o_oexclam_k_b.test, declare_o_parens_2i_v.test,
     declare_o_parens_3i_v.test, declare_o_parens_i_v.test,
     declare_o_parens_v.test, declare_o_percent_eq_i_rk.test,
     declare_o_percent_eq_rki_rk.test, declare_o_percent_i_k.test,
     declare_o_percent_rcki_k.test, declare_o_pipe2_2rck_b.test,
     declare_o_pipe2_rck_b.test, declare_o_pipe_eq_i_rk.test,
     declare_o_pipe_eq_rki_rk.test, declare_o_pipe_i_rk.test,
     declare_o_plus2_d_rk.test, declare_o_plus2_rkd_rk.test,
     declare_o_plus_i_k.test, declare_o_plus_ie_i.test,
     declare_o_qmark_colon_k2i_i.test, declare_o_slash_eq_i_rk.test,
     declare_o_star_eq_i_rk.test, declare_o_star_eq_rki_rk.test,
     declare_o_star_i_rk.test, declare_o_star_rck_k.test,
     declare_o_star_rcki_k.test, declare_o_star_rk.test,
     declare_o_tilde_k.test, declare_o_tilde_rck_k.test,
     declare_ovc_udc_i.test, declare_oyf.test, declare_pa3cpa5i.test,
     declare_pa3pa5i.test, declare_pa9i.test, declare_pai-01.test,
     declare_pbv_pi.test, declare_pci-ec.test, declare_pcpi.test,
     declare_pfv_pi.test, declare_pfv_ri.test, declare_pfx_i.test,
     declare_pi.test, declare_pk.test, declare_pmci.test, declare_pmf_i.test,
     declare_pmf_pc.test, declare_pmi.test, declare_pmri.test,
     declare_ppi.test, declare_pri.test, declare_pv-knr.test,
     declare_ra3i.test, declare_rci.test, declare_rcpi.test, declare_ref.test,
     declare_rf_v.test, declare_rgi.test, declare_ri.test,
     declare_ro_exclam_k_b.test, declare_rpi.test, declare_rrf_v.test,
     declare_rro_exclam_k_b.test, declare_rtf_v-c.test, declare_rtf_v.test,
     declare_rv.test, declare_sa2i.test, declare_sb.test, declare_sc-knr.test,
     declare_sc.test, declare_sc16.test, declare_sc32.test, declare_sc8.test,
     declare_sf_v.test, declare_si-knr.test, declare_si.test,
     declare_sif_v.test, declare_sl-knr.test, declare_sll.test,
     declare_smi.test, declare_so_delete_pv_v.test, declare_sv.test,
     declare_sw.test, declare_sxi.test, declare_t.test, declare_tf_i-01.test,
     declare_tf_i-02.test, declare_ti.test, declare_ti_al8.test,
     declare_tpfc_i.test, declare_trigraphs_a9i.test,
     declare_trigraphs_nfi_v-c++.test, declare_trigraphs_o_circ_eq_i_rk.test,
     declare_trigraphs_o_circ_rcki_k.test,
     declare_trigraphs_o_pipe2_2rck_b.test,
     declare_trigraphs_o_pipe_2rck_k.test,
     declare_trigraphs_o_pipe_eq_i_rk.test, declare_trigraphs_o_tilde_k.test,
     declare_type.test, declare_u.test, declare_ub.test, declare_uc.test,
     declare_uc16.test, declare_uc32.test, declare_uc8.test, declare_ud.test,
     declare_udc_a4i.test, declare_udc_i.test, declare_udc_rcc.test,
     declare_uf.test, declare_uf_v-01.test, declare_uf_v-02.test,
     declare_ui-01.test, declare_ui-02.test, declare_ui.test, declare_ull.test,
     declare_uv.test, declare_uw.test, declare_uz.test, declare_v+f_v.test,
     declare_v.test, declare_vcpi.test, declare_vdtor.test,
     declare_vf_v-c.test, declare_vf_v.test, declare_vi-knr.test,
     declare_vo_exclam_k_b.test, declare_voyf.test, declare_vpi.test,
     declare_vri.test, declare_w-c89.test, declare_w.test, declare_xf.test,
     declare_xi-c.test, declare_xi.test, declare_yf.test,
     declare_yo_exclam_k_b.test, declare_z.test, declare_zd.test,
     declare_zf.test, declare_zz.test, define_2=_i.test, define_=_i.test,
     define_=c_i.test, define_=sc_i.test, define_ai.test,
     define_c_int_least32_t.test, define_ei.test, define_gi.test,
     define_i.test, define_i_declare_i.test, define_i_explain_i.test,
     define_i_int_least32_t.test, define_k_declare_k.test,
     define_k_define_k_explain_k+k.test, define_k_explain_pmki.test,
     define_namespace_=c_i.test, define_si.test, dynamic_cast_+pc.test,
     dynamic_cast_pc-c.test, dynamic_cast_pc.test, explain_+ctor-error.test,
     explain_+dtor-error.test, explain_+dtor.test, explain_+i-c.test,
     explain_+o_delete_a_pv_v.test, explain_+o_delete_pv_v.test,
     explain_+o_eq2_rcki_b.test, explain_+o_eq_rck_rk.test,
     explain_+o_eq_rck_rk=default-01.test,
     explain_+o_eq_rck_rk=default-02.test, explain_+o_eq_rck_rk=delete-01.test,
     explain_+o_eq_rck_rk=delete-02.test,
     explain_+o_exclam_eq_rck_rk=default.test,
     explain_+o_exclam_eq_rck_rk=delete.test, explain_+o_new_a_z_pv.test,
     explain_+o_new_z_pv.test, explain_+udc_i.test, explain_+udl_c_i.test,
     explain_0f_v-01.test, explain_0f_v-02.test, explain_0f_v-c.test,
     explain_0o_amper_rk_pk.test, explain_0o_minus2_i_rk.test,
     explain_0o_minus_rk_rk.test, explain_0o_plus2_i_rk.test,
     explain_0o_plus_rk_rk.test, explain_0o_star_rk_rk.test,
     explain_2+dtor.test, explain_a.test, explain_a012i.test,
     explain_a0b10i.test, explain_a0xAi-01.test, explain_a0xai-02.test,
     explain_a3a5a7i.test, explain_a3a5i.test, explain_a3a5pfv_i.test,
     explain_a3a5pfv_pi.test, explain_a3a5pfv_ppa7a9i.test,
     explain_a3a5pfv_ppa7a9pc.test, explain_a3a5pfv_ppa7i.test,
     explain_a3a5pfv_ppa7pi.test, explain_a3a5pfv_ppi.test,
     explain_a3pfv_i.test, explain_a3ppfv_i.test, explain_a9cpi.test,
     explain_a9i.test, explain_a9pi.test, explain_a_nua_f.test,
     explain_a_nua_k-1.test, explain_a_nua_k-2.test, explain_ac9i.test,
     explain_af.test, explain_ai-01.test, explain_ai-02.test,
     explain_ai-c++11.test, explain_ai.test, explain_al0_c-c++.test,
     explain_al0_c.test, explain_al3_c.test, explain_al8_c-c++.test,
     explain_al8_c.test, explain_alpv_c.test, explain_api-01.test,
     explain_api-02.test, explain_as9i.test, explain_b-c89.test,
     explain_b.test, explain_b_ai.test, explain_bii_d.test,
     explain_bitand_i.test, explain_c-c.test, explain_c.test,
     explain_c16-c++03.test, explain_c16-c99.test, explain_c32-c++03.test,
     explain_c32-c99.test, explain_c8-c++17.test, explain_c_al3.test,
     explain_cast_=pmi.test, explain_cast_a3a5a7i.test,
     explain_cast_a3a5i.test, explain_cast_a3i.test, explain_cast_ai.test,
     explain_cast_ci.test, explain_cast_cpa3cpa5i.test,
     explain_cast_cpa3pa5i.test, explain_cast_cpa9ci.test,
     explain_cast_cpa9i.test, explain_cast_cpbv_pi.test,
     explain_cast_cpcpi.test, explain_cast_cpfv_pi.test, explain_cast_cpi.test,
     explain_cast_cppi.test, explain_cast_cvpi.test, explain_cast_ei.test,
     explain_cast_gi.test, explain_cast_ic.test, explain_cast_ll.test,
     explain_cast_lll.test, explain_cast_pa3a5i.test,
     explain_cast_pa3cpa5i.test, explain_cast_pa3pa5i.test,
     explain_cast_pa9i.test, explain_cast_pbv_pi.test, explain_cast_pci.test,
     explain_cast_pcpi.test, explain_cast_pf_i.test, explain_cast_pfpci_i.test,
     explain_cast_pfpi_i.test, explain_cast_pfv_pi.test, explain_cast_pi.test,
     explain_cast_pic.test, explain_cast_pmc=i.test, explain_cast_pmi.test,
     explain_cast_ppi.test, explain_cast_ri.test, explain_cast_rtpi.test,
     explain_cast_si.test, explain_cast_ti.test, explain_cast_ull.test,
     explain_cast_vcpi.test, explain_cast_vpi.test, explain_cdfcdi_i.test,
     explain_cdfi_i.test, explain_cdi.test, explain_cector_i.test,
     explain_cf_v-c.test, explain_cf_v.test, explain_ci-ec.test,
     explain_ci-knr.test, explain_ci.test, explain_ck.test,
     explain_co_amper_rk_pk.test, explain_co_exclam_k_b.test,
     explain_co_minus2_i_rk.test, explain_co_minus_rk_rk.test,
     explain_co_plus2_i_rk.test, explain_co_plus_rk_rk.test,
     explain_co_star_rk_rk.test, explain_co_tilde_k.test,
     explain_compl_dtor.test, explain_const_cast_+pi.test,
     explain_const_cast_pi-c.test, explain_const_cast_pi.test,
     explain_cpa3cpa5i.test, explain_cpa3pa5i.test, explain_cpa9ci.test,
     explain_cpa9i.test, explain_cpbv_pi.test, explain_cpcpi.test,
     explain_cpfv_pi.test, explain_cpi.test, explain_cpmci.test,
     explain_cpmi.test, explain_cppi.test, explain_crf_v.test, explain_cs.test,
     explain_ctor.test, explain_ctor_i.test, explain_cu.test,
     explain_cvf_v.test, explain_cvpi.test, explain_df_v.test, explain_di.test,
     explain_digraphs_a9i.test, explain_digraphs_nfi_v-c++.test,
     explain_dtor.test, explain_dui-01.test, explain_dui-02.test,
     explain_dynamic_cast_p+c+.test, explain_dynamic_cast_pc-c.test,
     explain_dynamic_cast_pc.test, explain_e-knr.test, explain_e.test,
     explain_ea2i.test, explain_ec.test, explain_ector_i.test,
     explain_eictor_i.test, explain_ek.test, explain_esf_v.test,
     explain_exctor_i.test, explain_f+_v.test, explain_f+udc_i.test,
     explain_f__pf__v.test, explain_f__pv.test, explain_f__v-c++03.test,
     explain_f__v.test, explain_f_ai.test, explain_f_cpmi.test,
     explain_f_pi.test, explain_f_pmi.test, explain_f_v__v.test,
     explain_fa_v.test, explain_fac3_v-c++.test, explain_fac_v.test,
     explain_facs3_v.test, explain_facv_v.test, explain_fas3_v-c++.test,
     explain_fas3_v.test, explain_fasc3_v.test, explain_fasv_v.test,
     explain_fav_v-c++.test, explain_fav_v.test, explain_fcce_v.test,
     explain_fcdi_i.test, explain_fctor_i.test, explain_fdi_v.test,
     explain_fe_v.test, explain_fecc_v.test, explain_fee_v.test,
     explain_fev_v.test, explain_ff_v-c.test, explain_ff_v.test,
     explain_fg_v-c89.test, explain_fg_v.test, explain_fgi_v.test,
     explain_fid_v.test, explain_fiiv_v.test, explain_fipfi_v_pfi_v.test,
     explain_fiv_v.test, explain_fixiy_v.test, explain_fn.test,
     explain_fpa5d_v.test, explain_fpc_pi.test, explain_fpci_pi.test,
     explain_fpfc_i_d.test, explain_frri_v-c++03.test, explain_frri_v.test,
     explain_fsf_v.test, explain_fsi_v.test, explain_fti_v.test,
     explain_fui_v.test, explain_fv_pa3a5i.test, explain_fv_pa3a5pi.test,
     explain_fv_pa3i.test, explain_fv_pa3pi.test, explain_fv_pi.test,
     explain_fv_v.test, explain_fve_v.test, explain_fvi_v.test,
     explain_fvv_v.test, explain_fvx_v.test, explain_fx_pi.test,
     explain_fx_v.test, explain_ga.test, explain_gf_v.test, explain_gi.test,
     explain_gif_v.test, explain_gk.test, explain_grtpi.test, explain_hb.test,
     explain_hc.test, explain_hc16.test, explain_hc32.test, explain_hc8.test,
     explain_hd.test, explain_hf.test, explain_hl.test, explain_hll.test,
     explain_hv.test, explain_hw.test, explain_i+.test, explain_i2+.test,
     explain_ic.test, explain_ictor_i.test, explain_if_v.test, explain_ig.test,
     explain_ii-c++.test, explain_ii.test, explain_is.test, explain_it.test,
     explain_k.test, explain_kc.test, explain_keywords.test, explain_ki+.test,
     explain_lb.test, explain_lc.test, explain_lc16.test, explain_lc32.test,
     explain_lc8.test, explain_ld-knr.test, explain_ld.test, explain_lf-c.test,
     explain_lf.test, explain_ll-c89.test, explain_ll-knr.test,
     explain_ll.test, explain_lll.test, explain_lv.test, explain_lw.test,
     explain_main_f2c_i.test, explain_main_f_i.test, explain_main_f_s.test,
     explain_main_f_v.test, explain_main_fi_i.test, explain_main_fiapc_hi.test,
     explain_main_fiapc_i.test, explain_main_fiapcc_i.test,
     explain_main_fic_i.test, explain_main_fipc_i.test,
     explain_main_fippc_i.test, explain_main_fippcc_i.test,
     explain_main_fippi_i.test, explain_main_fv_i.test, explain_md.test,
     explain_mf.test, explain_mi.test, explain_n.test, explain_nfi_c.test,
     explain_nfi_v-c++-error.test, explain_nfi_v-c++.test, explain_nfi_v.test,
     explain_ni.test, explain_o_amper2_2rck_b.test,
     explain_o_amper2_rck_b.test, explain_o_amper_2rck_k.test,
     explain_o_amper_eq_i_rk.test, explain_o_amper_eq_rki_rk.test,
     explain_o_amper_i_i.test, explain_o_amper_i_rk.test,
     explain_o_amper_pk.test, explain_o_amper_rcki_k.test,
     explain_o_amper_rk_pk.test, explain_o_arrow_i.test,
     explain_o_arrow_pk.test, explain_o_arrow_star_i_rk.test,
     explain_o_arrow_star_rki_rk.test, explain_o_brackets_2i_i.test,
     explain_o_brackets_i_i.test, explain_o_circ_eq_i_rk.test,
     explain_o_circ_eq_rki_rk.test, explain_o_circ_rcki_k.test,
     explain_o_comma_i_rk.test, explain_o_comma_rcki_k.test,
     explain_o_comma_rki_rk.test, explain_o_delete_a_pv_v.test,
     explain_o_delete_pv_v.test, explain_o_eq2_i_b.test,
     explain_o_eq2_ki_b.test, explain_o_exclam_2i.test,
     explain_o_exclam_b.test, explain_o_exclam_eq_i_b.test,
     explain_o_exclam_eq_ki_b.test, explain_o_exclam_rck_b.test,
     explain_o_greater2_eq_i_rk.test, explain_o_greater2_eq_rki_rk.test,
     explain_o_greater2_i_k.test, explain_o_greater2_i_rk.test,
     explain_o_greater2_rcki_k.test, explain_o_greater2_rki_rk.test,
     explain_o_greater_eq_rcki_b.test, explain_o_greater_rcki_b.test,
     explain_o_less2_eq_i_rk.test, explain_o_less2_eq_rki_rk.test,
     explain_o_less2_i_k.test, explain_o_less2_i_rk.test,
     explain_o_less2_rcki_k.test, explain_o_less2_rki_rk.test,
     explain_o_less_eq_rcki_b.test, explain_o_less_rcki_b.test,
     explain_o_minus2_d_rk.test, explain_o_minus2_rkd_rk.test,
     explain_o_minus2_rki_rk.test, explain_o_minus_2rck_k.test,
     explain_o_minus_eq_i_rk.test, explain_o_minus_eq_rki_rk.test,
     explain_o_minus_i_k.test, explain_o_minus_ie_i.test,
     explain_o_minus_rcki_k.test, explain_o_new_a_z_pv.test,
     explain_o_new_z_pv.test, explain_o_new_z_z.test,
     explain_o_oexclam_k_b.test, explain_o_parens_2i_v.test,
     explain_o_parens_3i_v.test, explain_o_parens_i_v.test,
     explain_o_parens_v.test, explain_o_percent_2rck_k.test,
     explain_o_percent_eq_i_rk.test, explain_o_percent_eq_rki_rk.test,
     explain_o_percent_i_k.test, explain_o_percent_rcki_k.test,
     explain_o_pipe2_2rck_b.test, explain_o_pipe2_rck_b.test,
     explain_o_pipe_2rck_k.test, explain_o_pipe_eq_i_rk.test,
     explain_o_pipe_eq_rki_rk.test, explain_o_pipe_i_rk.test,
     explain_o_plus2_d_rk.test, explain_o_plus2_rkd_rk.test,
     explain_o_plus2_rki_rk.test, explain_o_plus_2rck_k.test,
     explain_o_plus_eq_i_rk.test, explain_o_plus_eq_rki_rk.test,
     explain_o_plus_i_k.test, explain_o_plus_ie_i.test,
     explain_o_plus_rcki_k.test, explain_o_qmark_colon_k2i_i.test,
     explain_o_slash_2rck_k.test, explain_o_slash_eq_i_rk.test,
     explain_o_slash_eq_rki_rk.test, explain_o_slash_rcki_k.test,
     explain_o_star_2rck_k.test, explain_o_star_eq_i_rk.test,
     explain_o_star_eq_rki_rk.test, explain_o_star_i_rk.test,
     explain_o_star_rck_k.test, explain_o_star_rcki_k.test,
     explain_o_star_rk.test, explain_o_tilde_k.test,
     explain_o_tilde_rck_k.test, explain_oc_udc_i.test, explain_oi.test,
     explain_oo_amper_rk_pk.test, explain_oo_minus2_i_rk.test,
     explain_oo_minus_rk_rk.test, explain_oo_plus2_i_rk.test,
     explain_oo_plus_rk_rk.test, explain_oo_star_rk_rk.test, explain_oyf.test,
     explain_pa3a5i.test, explain_pa3cpa5i.test, explain_pa3pa5i.test,
     explain_pa9i.test, explain_pai-01.test, explain_pai-02.test,
     explain_pbv_pi.test, explain_pcpi.test, explain_pfv_pi.test,
     explain_pi.test, explain_pmf_i.test, explain_pmf_pc.test,
     explain_pmfii_pk.test, explain_pmgi.test, explain_pmi-c.test,
     explain_pmi.test, explain_pmri.test, explain_ppi.test, explain_pri.test,
     explain_prri.test, explain_pv-knr.test, explain_ra3i.test,
     explain_reinterpret_cast_pv-c.test, explain_reinterpret_cast_pv.test,
     explain_rf_v-c++03.test, explain_rf_v.test, explain_rgi.test,
     explain_ri-c.test, explain_ri.test, explain_ro_amper_rk_pk.test,
     explain_ro_exclam_k_b.test, explain_ro_minus2_i_rk.test,
     explain_ro_minus_rk_rk.test, explain_ro_plus2_i_rk.test,
     explain_ro_plus_rk_rk.test, explain_ro_star_rk_rk.test,
     explain_rrf_v-c++03.test, explain_rrf_v.test,
     explain_rro_amper_rk_pk.test, explain_rro_exclam_k_b.test,
     explain_rro_minus2_i_rk.test, explain_rro_minus_rk_rk.test,
     explain_rro_plus2_i_rk.test, explain_rro_plus_rk_rk.test,
     explain_rro_star_rk_rk.test, explain_rtf_v-error.test,
     explain_rtpi-c++-error.test, explain_rtpi.test, explain_rv.test,
     explain_sa2i.test, explain_sb.test, explain_sc-knr.test, explain_sc.test,
     explain_sc16.test, explain_sc32.test, explain_sc8.test,
     explain_scf_v.test, explain_sf_v.test, explain_si-knr.test,
     explain_si.test, explain_sl-knr.test, explain_smi.test,
     explain_so_delete_pv_v.test, explain_so_new_z_pv.test, explain_srf_v.test,
     explain_srrf_v.test, explain_static_cast_i+.test,
     explain_static_cast_i-c.test, explain_static_cast_i.test, explain_sv.test,
     explain_sw.test, explain_sxi.test, explain_tci32.test,
     explain_tf_v-c++17.test, explain_tf_v.test, explain_ti.test,
     explain_tii32.test, explain_tpfc_i.test, explain_trigraphs_a9i.test,
     explain_trigraphs_nfi_v-c++.test, explain_trigraphs_o_circ_eq_i_rk.test,
     explain_trigraphs_o_circ_rcki_k.test,
     explain_trigraphs_o_pipe2_2rck_b.test,
     explain_trigraphs_o_pipe_2rck_k.test,
     explain_trigraphs_o_pipe_eq_i_rk.test, explain_trigraphs_o_tilde_k.test,
     explain_tulz.test, explain_type_i.test, explain_ub.test, explain_uc.test,
     explain_uc16.test, explain_uc32.test, explain_uc8.test, explain_ud.test,
     explain_udc_a4i.test, explain_udc_i.test, explain_udc_rcc.test,
     explain_udl_2c_i.test, explain_udl_3c_i.test, explain_udl__i.test,
     explain_udl_c16_i.test, explain_udl_c32_i.test, explain_udl_c8_i.test,
     explain_udl_c_i-c.test, explain_udl_c_i.test, explain_udl_ld_i.test,
     explain_udl_pcc16ul_i.test, explain_udl_pcc16z_i.test,
     explain_udl_pcc32ul_i.test, explain_udl_pcc32z_i.test,
     explain_udl_pcc8ul_i.test, explain_udl_pcc8z_i.test,
     explain_udl_pcc_i.test, explain_udl_pccul_i.test, explain_udl_pccz_i.test,
     explain_udl_pccz_ul.test, explain_udl_pcwul_i.test,
     explain_udl_pcwz_i.test, explain_udl_piul_i.test, explain_udl_ul_i.test,
     explain_udl_ull_i.test, explain_udl_w_i.test, explain_uf.test,
     explain_uf_v.test, explain_ui.test, explain_ull.test,
     explain_unknown_attribute.test, explain_using_a3i.test,
     explain_using_pfi_v-c.test, explain_using_pfi_v.test, explain_uv.test,
     explain_uw.test, explain_v+f_v.test, explain_v.test,
     explain_vcompl_dtor.test, explain_vcpi.test, explain_vdtor.test,
     explain_vf_v-c.test, explain_vf_v.test, explain_vi-knr.test,
     explain_vo_amper_rk_pk.test, explain_vo_exclam_k_b.test,
     explain_vo_minus2_i_rk.test, explain_vo_minus_rk_rk.test,
     explain_vo_plus2_i_rk.test, explain_vo_plus_rk_rk.test,
     explain_vo_star_rk_rk.test, explain_voyf-c.test, explain_voyf.test,
     explain_vpi.test, explain_w-c89.test, explain_w.test, explain_xctor.test,
     explain_xf_v.test, explain_xff_v.test, explain_xi-c.test, explain_xi.test,
     explain_xtf_v.test, explain_yf.test, explain_yo_amper_rk_pk.test,
     explain_yo_exclam_k_b.test, explain_yo_minus2_i_rk.test,
     explain_yo_minus_rk_rk.test, explain_yo_plus2_i_rk.test,
     explain_yo_plus_rk_rk.test, explain_yo_star_rk_rk.test, explain_z.test,
     explain_zd.test, explain_zf.test, explain_zz.test, file-cast_i.test,
     file-cast_x.test, file-declare_i.test, file-declare_x.test,
     file-explain_i.test, file-explain_x.test, help-c++.test, help-c.test,
     help_command-c++.test, help_command-c.test, help_commands-c++.test,
     help_commands-c.test, help_english-c++.test, help_english-c.test, i.test,
     k_namespace_typedef_i.test, k_typedef_i_explain_i.test,
     namespace_+typedef_i-c++14.test, namespace_+typedef_i.test,
     namespace_c_typedef_i.test, namespace_k_typedef_i.test,
     namespace_n_typedef_i.test, namespace_namespace_typedef_i-c++14.test,
     namespace_namespace_typedef_i.test, namespace_typedef_i.test,
     namespace_using_i.test, reinterpret_cast_+pv.test,
     reinterpret_cast_pv-c.test, reinterpret_cast_pv.test, retypedef-01.test,
     set.test, set_-e-a--st-.test, set_bison-debug.test, set_c++.test,
     set_c++03.test, set_c++11.test, set_c++14.test, set_c++17.test,
     set_c++20.test, set_c++98.test, set_c.test, set_c11.test, set_c18.test,
     set_c89.test, set_c95.test, set_c99.test, set_cknr.test, set_debug.test,
     set_digraphs.test, set_ea.test, set_east-const.test, set_east.test,
     set_eastconst.test, set_explain-by-default.test, set_explain.test,
     set_knr.test, set_knrc.test, set_nobison-debug.test, set_nodebug.test,
     set_noexplain-by-default.test, set_noexplain.test, set_nographs.test,
     set_noprompt.test, set_nosemicolon.test, set_options.test,
     set_prompt.test, set_semicolon.test, set_trigraphs.test, show_all.test,
     show_all_typedef.test, show_foo.test, show_int8_t.test,
     show_int8_t_typedef.test, show_predefined.test,
     show_predefined_typedef.test, show_user.test, show_user_typedef.test,
     static_cast_+i.test, static_cast_i-c.test, static_cast_i.test,
     typedef_ai.test, typedef_c_int_least32_t.test, typedef_ei.test,
     typedef_fi_v_show_f.test, typedef_gi.test, typedef_i+.test,
     typedef_i.test, typedef_i_declare_i.test, typedef_i_explain_i.test,
     typedef_i_int_least32_t.test, typedef_si.test, typedef_ti.test,
     typedef_tki.test, using_ai.test, using_c_int_least32_t.test,
     using_ei.test, using_fi_v_show_f.test, using_gi.test, using_i-c.test,
     using_i.test, using_i_declare_i.test, using_i_explain_i.test,
     using_i_int_least32_t.test, using_si.test: Replaced /dev/null for no conf
     with the empty string.

2020-07-08  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.h: Sorted.
   * c_typedef.h: Reordered.
   * c_type.h: Sorted functions.
   * c_ast_util.h, errors.c, parser.y, types.h: Eliminated c_check.
   * parser.y: s/C_AST_CHECK()/C_AST_CHECK_DECL()/

2020-07-07  Paul J. Lucas <paul@lucasmail.org>

   * c_keyword.c: Alternative tokens are C89 and later only.
   * c_operator.c: Whitespace.
   * c_operator.c, c_operator.h, gibberish.c, gibberish.h: Moved alt_token_c()
     into c_operator.c.
   * gibberish.c: Now calling c_oper_token_c().
   * c_operator.h: The operator code is only for C++.
   * c_operator.h: Added "only".

2020-07-06  Paul J. Lucas <paul@lucasmail.org>

   * man/man1/Makefile.am: Added cdecl.ps man target.
   * cdecl.1: Fixed formatting.
   * test/Makefile.am, set_bison-debug.test, set_nobison-debug.test: Fixed
     bison-debug tests.
   * c_type.c, test/Makefile.am, explain_ci-ec.out, explain_ci-ec.test: East
     const is now ignored when explaining gibberish.
   * options.c: Added comment.

2020-07-04  Paul J. Lucas <paul@lucasmail.org>

   * errors.c: Removed unnecessary call to c_ast_untypedef().

2020-07-03  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c, gibberish.h, parser.y: Simplified internal gibberish API.
   * lexer.l: s/e_literal/literal/
   * c_keyword.h, lexer.l: /y_token/yy_token_id/

2020-07-02  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: s/typedefs.h/types.h/
   * c_ast.h, c_ast_util.c, c_kind.h, errors.c, gibberish.c:
     s/K_MASK_PARENT/K_ANY_PARENT/; s/K_MASK_FUNCTION_LIKE/K_ANY_FUNCTION_LIKE/
   * c_ast_util.c, c_ast_util.h, errors.c, gibberish.c: Renamed some functions
     with _any.
   * src/Makefile.am, c_ast.h, c_ast_util.h, c_keyword.h, c_kind.h, c_lang.h,
     c_operator.h, c_sname.h, c_type.h, c_typedef.h, cdecl.h, english.h,
     gibberish.h, parser.y, print.h: s/typedefs.h/types.h/

2020-07-01  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_type.h, errors.c, parser.y: s/T_CLASS_STRUCT_UNION/T_ANY_CLASS/
   * configure.ac: Updated version to 7.4.1; updated NEWS.
   * c_ast_util.c, c_ast_util.h, c_type.c, c_type.h, test/Makefile.am,
     explain_main_f_s.out, explain_main_f_s.test: Now accepts "signed main()"
     as valid.
   * options.c: Fixed check_mutually_exclusive() for new -B and -F options.

2020-06-30  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Updated versio and NEWS.
   * configure.ac, cdecl.1, src/Makefile.am, autocomplete.c, c_typedef.c,
     options.c, options.h, parser.y, print.c, set.c, test/Makefile.am: Added
     ability to enable Flex debugging; renamed Bison debugging.
   * set.c, test/Makefile.am, set_-e-a--st-.out, set_digraphs.out, set_ea.out,
     set_east-const.out, set_east.out, set_eastconst.out, set_nosemicolon.out,
     set_trigraphs.out, set_-e-a--st-.test, set_digraphs.test, set_ea.test,
     set_east-const.test, set_east.test, set_eastconst.test,
     set_nosemicolon.test, set_trigraphs.test: Fixed parsing of "set" options.
   * c_type.c: Added missing comment.
   * c_type.c: Don't need C_WARN_UNUSED_RESULT here.
   * c_type.c: Moved comment.
   * c_type.c: Added comment.
   * c_keyword.c: Re-recognizing "register" in C++17 and later.
   * errors.c: Removed unneeded declaration.

2020-06-29  Paul J. Lucas <paul@lucasmail.org>

   * c_type.h, errors.c: Added T_FUNC_LIKE; more documentation.
   * c_ast_util.h: Fixed @param.

2020-06-28  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c: Added comment.
   * c_ast_util.c, c_ast_util.h, errors.c, test/Makefile.am,
     explain_main_fiapc_hi.test: Reworked the c_ast_is_*() functions; fixed so
     main() can't return short int.

2020-06-27  Paul J. Lucas <paul@lucasmail.org>

   * errors.c, test/Makefile.am, explain_main_f_i.out,
     explain_main_fiapc_i.out, explain_main_fiapcc_i.out,
     explain_main_fippc_i.out, explain_main_fippcc_i.out,
     explain_main_fv_i.out, explain_main_f2c_i.test, explain_main_f_i.test,
     explain_main_f_v.test, explain_main_fi_i.test, explain_main_fiapc_i.test,
     explain_main_fiapcc_i.test, explain_main_fic_i.test,
     explain_main_fipc_i.test, explain_main_fippc_i.test,
     explain_main_fippcc_i.test, explain_main_fippi_i.test,
     explain_main_fv_i.test: Now checking main()'s signature.
   * parser.y: Added comment for Y_DELETE.
   * parser.y: Y_NEW is oper_id.
   * configure.ac: Changed version to 7.3.

2020-06-26  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, debug.c, parser.y: Added "loc" member to struct c_align.
   * parser.y: Removed unnecessary c_ast_t argument from typename_ok().
   * parser.y, cdecl--debug.out, cdecl-d.out: Now printing final AST for
     "explain" in more cases.

2020-06-25  Paul J. Lucas <paul@lucasmail.org>

   * errors.c: Added more C_WARN_UNUSED_RESULT.
   * cdecl.1, c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all.out,
     show_all_typedef.out, show_predefined.out, show_predefined_typedef.out:
     Added types atomic_flag, double_t, fenv_t, fexcept_t, float_t, jmp_buf,
     memory_order, va_list, wctrans_t, and wctype_t.
   * configure.ac, parser.y, test/Makefile.am, explain_fpa5d_v.out,
     explain_fpa5d_v.test: Fixed explaining pointer-to-array function
     arguments.
   * parser.y: Added comment.

2020-06-17  Paul J. Lucas <paul@lucasmail.org>

   * help.c, help_english-c.out: Made "length" optional in help.
   * c_typedef.c: Reformatting.
   * cdecl.1: Added "namespace" to English.
   * cdecl.1: Added mention of user-defined literal.
   * c_ast.h: Added comment.

2020-06-15  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.h: Fixed @addtogroup ast-functions-group.
   * pjl_config.h: Added defensive #error about config.h.
   * pjl_config.h: Added comment.

2020-06-14  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Renamed show type functions and struct.
   * english.c, english.h, gibberish.c, gibberish.h, parser.y: Moved c_typdef
     English- and gibberish-printing code to english.c and gibberish.c,
     respectively.
   * c_ast.h, c_kind.h, c_lang.h, c_operator.h, c_sname.h, c_type.h, slist.h,
     util.h: Put C_WARN_UNUSED_RESULT last.
   * parser.y: Put DUMP_END() in the right place for several rules.

2020-06-13  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, cdecl.1, c_operator.c, c_operator.h, c_type.h, c_typedef.c,
     errors.c, parser.y, test/Makefile.am, cdecl--debug.out, cdecl-d.out,
     declare_+o_delete_a_pv_v.out, declare_+o_delete_pv_v.out,
     declare_+o_new_a_z_pv.out, declare_+o_new_z_pv.out,
     declare_o_delete_a_pv_v.out, declare_o_delete_pv_v.out,
     declare_o_new_a_z_pv.out, declare_o_new_z_pv.out,
     declare_so_delete_pv_v.out, explain_+o_delete_a_pv_v.out,
     explain_+o_delete_pv_v.out, explain_+o_new_a_z_pv.out,
     explain_+o_new_z_pv.out, explain_o_delete_a_pv_v.out,
     explain_o_delete_pv_v.out, explain_o_new_a_z_pv.out,
     explain_o_new_z_pv.out, explain_so_delete_pv_v.out,
     explain_so_new_z_pv.out, show_all.out, show_all_typedef.out,
     show_predefined.out, show_predefined_typedef.out,
     declare_+o_delete_a_pv_v.test, declare_+o_delete_pv_v.test,
     declare_+o_new_a_z_pv.test, declare_+o_new_z_pv.test,
     declare_o_delete_a_pv_v.test, declare_o_delete_pv_v.test,
     declare_o_new_a_z_pv.test, declare_o_new_z_pv.test,
     declare_so_delete_pv_v.test, explain_+o_delete_a_pv_v.test,
     explain_+o_delete_pv_v.test, explain_+o_new_a_z_pv.test,
     explain_+o_new_z_pv.test, explain_o_delete_a_pv_v.test,
     explain_o_delete_pv_v.test, explain_o_new_a_z_pv.test,
     explain_o_new_z_pv.test, explain_o_new_z_z.test,
     explain_so_delete_pv_v.test, explain_so_new_z_pv.test: Can now
     explain/declare overloaded operator new/delete.
   * errors.c: print_error() clean-up.
   * errors.c: print_error() clean-up; now printing "class" or "structure" when
     constructor/destructor names do not match.
   * parser.y: Moved DUMP_AST( "decl_english_ast", $5.ast ) before
     C_AST_CHECK() to complete dump before check.
   * errors.c: print_hint() clean-up.
   * errors.c: Simplified c_ast_check_errors().
   * errors.c: Removed c_type_name_error() when the type can be not a simple
     type.
   * errors.c: Correctly reset arg_ast.
   * c_type.h, errors.c: Explicitly specifying "int" is now accepted, part 2.
   * errors.c: Explicitly specifying "int" is now accepted.
   * errors.c, test/Makefile.am, explain_scf_v.test: Extern or static functions
     can not be const.

2020-06-12  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: Alternative tokens now take precedence over di/trigraph
     tokens.
   * parser.y: Added missing dump of oper_decl_english_ast for overloaded
     operator declaration.
   * print.c, print.h: s/print_error()/print_error_impl()/ and added
     print_error() macro that passes file & line information for debugging.
   * parser.y: Fixed dump of name_english_ast.
   * c_ast.h, parser.y: Now support scoped English types ("declare x as Int of
     struct S").
   * c_ast.h: Fixed c_ast_sname_append_sname() declaration.

2020-06-11  Paul J. Lucas <paul@lucasmail.org>

   * util.c: Added assert().
   * parser.y: Added debug output to "show" command.

2020-06-10  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c: Added comment; s/cin/fconf/
   * c_sname.h, c_type.c, c_type.h: Fixed a latent bug with the c_type_id_t
     stored in a c_sname on 32-bit platforms.
   * c_kind.h: Added missing "const".
   * parser.y: Moved special-case namespace code for namespaces out of
     print_type_as_typedef() and into define_english.

2020-06-09  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, english.c, errors.c, gibberish.c: Made c_ast_visit() be
     C_NOWARN_UNUSED_RESULT; replaced some C_FALLTHROUGH with break.
   * c_typedef.h, parser.y: Made c_typedef_visit() be C_NOWARN_UNUSED_RESULT.

2020-06-08  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Added missing L__THREAD_LOCAL.
   * c_keyword.c: Removed L_ELLIPSIS from keywords table: it's not a keyword.

2020-06-07  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Upped version to 7.1.1.
   * parser.y: Removed special-case _Noreturn code.
   * c_keyword.c, parser.y: Added missing static_assert for C++11.
   * c_keyword.c: Undid removal of throw in C++20: it's still a keyword.
   * c_keyword.c: Made _Alignas, _Alignof, _Generic, _Noreturn, and
     _Static_assert be C only.

2020-06-06  Paul J. Lucas <paul@lucasmail.org>

   * errors.c: Using LANG_C_MIN() more.

2020-06-05  Paul J. Lucas <paul@lucasmail.org>

   * c_keyword.c, lexer.l, parser.y: s/Y_ATOMIC*/Y__ATOMIC*/

2020-06-01  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c, literals.h: Added comments.
   * autocomplete.c: Now using c_lang_lit_t rather than ac_keyword_t.
   * autocomplete.c: Moved declaration of rl_completion_func_t.

2020-05-28  Paul J. Lucas <paul@lucasmail.org>

   * set.c: Removed uncessary #includes.

2020-05-27  Paul J. Lucas <paul@lucasmail.org>

   * Doxyfile: Disabled LaTeX generation.

2020-05-26  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, cdecl.1, autocomplete.c, c_keyword.c, c_lang.c, c_lang.h,
     c_type.c, lexer.l, literals.c, literals.h, parser.y, typedefs.h,
     test/Makefile.am, declare_b-c++.out, declare_b.out, declare_ci-knr.out,
     declare_grtpi.out, declare_rtf_v.out, declare_vi-knr.out, explain_b.out,
     explain_keywords.out, show_all.out, show_all_typedef.out,
     show_predefined.out, show_predefined_typedef.out, declare_b-c++.test,
     declare_ci-knr.test, declare_vi-knr.test, explain_grtpi.test: Added more
     GNU extensions. Split bool and _Bool. "register" is now max C++14.
     "restrict" is now min C99.

2020-05-25  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.c, c_lang.h, typedefs.h: Moved struct c_lang to c_lang.c.
   * c_lang.c, c_lang.h, options.c: Made C_LANG static; added c_lang_names().

2020-05-24  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, parser.y, typedefs.h: s/c_block_t/c_apple_block_t/;
     s/block/block_ast/

2020-05-22  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, show_all.out, show_all_typedef.out, show_int8_t.out,
     show_int8_t_typedef.out, show_predefined.out, show_predefined_typedef.out:
     The types int8_t, int_fast8_t, int_least8_t, and __int8 are now typedef'd
     from signed char.

2020-05-15  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Updated version to 7.0.
   * AUTHORS: Added mention of "east const" and typename.

2020-05-12  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, c_ast.c, c_ast_util.c, debug.c, english.c, errors.c,
     gibberish.c, help.c, lexer.l, pjl_config.h: Fixed fallthrough warning.
   * parser.y, print.c, util.h: s/PRINT_ERR/PRINTF_ERR/
   * c_type.c, errors.c: Removed a few uses of FREE_STRDUP_LATER.
   * c_operator.c, c_type.h, english.c, errors.c:
     s/T_MEMBER_ONLY/T_MEMBER_FUNC_ONLY/;
     s/T_NON_MEMBER_ONLY/T_NONMEMBER_FUNC_ONLY/
   * set.c: s/*lang/*lang_id/
   * c_ast.c, c_ast.h, debug.c, cdecl--debug.out, cdecl-d.out: s/id/unique_id/
   * c_ast.c, c_ast.h, c_ast_util.c, debug.c, errors.c, gibberish.c:
     s/parent/parent_ast/
   * c_ast.c, c_ast.h, c_ast_util.c, c_ast_util.h, c_kind.c, c_kind.h,
     c_operator.c, debug.c, english.c, errors.c, gibberish.c, parser.y:
     s/kind/kind_id/
   * c_operator.c, c_operator.h: Replaced UNEXPECTED_INT_VALUE with assert();
     #include clean-up.

2020-05-11  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Removed special-case code for constructors and user-defined
     conversion operators.
   * parser.y: s/!/== NULL/

2020-05-06  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Now always free'ing sname.
   * parser.y: Added assert().

2020-05-05  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Added explicit cast.
   * cdecl.c, lexer.l, util.h: Consolidated SKIP_WS().
   * red_black.c: Added "const".
   * options.c: Added missing options for check_mutually_exclusive( "v", "..."
     );
   * gibberish.c: Simplification.
   * errors.c: Added missing "inline".

2020-05-03  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l, parser.y: Got rid of Y_HYPHEN_NAME.
   * lexer.l, literals.c, literals.h: Added L_USER_DEF.
   * c_type.c, lexer.l, literals.c, literals.h: Literal clean-up.
   * c_keyword.c: Blank line.

2020-05-02  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, c_ast_util.c, c_kind.h, errors.c, gibberish.c: Changed K_PARENT
     and K_MASK_FUNCTION_LIKE be proper bitmasks.
   * cdecl.1, autocomplete.c, c_keyword.c, c_type.c, c_type.h, errors.c,
     lexer.l, literals.c, literals.h, parser.y, test/Makefile.am,
     explain_a_nua_k-1.out, explain_a_nua_k-2.out, declare_a_nua_f.test,
     explain_a_nua_f.test, explain_a_nua_k-1.test, explain_a_nua_k-2.test:
     Added [[no_unique_address]].

2020-05-01  Paul J. Lucas <paul@lucasmail.org>

   * literals.c, literals.h: Not needed.
   * autocomplete.c: Moved alt-tokens to where it belongs.

2020-04-30  Paul J. Lucas <paul@lucasmail.org>

   * color.c: Added C_WARN_UNUSED_RESULT.
   * color.c: Reformatting.
   * cdecl.c: Added C_WARN_UNUSED_RESULT.
   * autocomplete.c: Added missing noeast-const, noexplain-by-default, and
     noexplicit-int.
   * autocomplete.c: Now using LANG_C_MIN.
   * autocomplete.c, c_keyword.c, c_lang.h, errors.c, test/Makefile.am,
     explain_tf_v-c++17.out, explain_tf_v-c++17.test, explain_tf_v.test:
     throw() deprecated/removed.

2020-04-29  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, autocomplete.c, c_type.c, gibberish.c, help.c, options.c,
     options.h, set.c, test/Makefile.am, declare_ci-ec.out, declare_ck-ec.out,
     declare_ck.out, declare_ck2-ec.out, declare_ck2.out, declare_cz-ec.out,
     declare_pci-ec.out, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c.out, help_commands-c++.out, help_commands-c.out, set.out,
     set_options.out, declare_ci-ec.test, declare_ck-ec.test, declare_ck.test,
     declare_ck2-ec.test, declare_ck2.test, declare_cz-ec.test,
     declare_pci-ec.test: Added support for east-const.
   * set.c: s/set_opt_fn_t/set_option_fn_t/
   * set.c: Improved set option matching.
   * autocomplete.c, c_ast.c, c_ast.h, c_ast_util.c, c_keyword.c, c_kind.c,
     c_kind.h, c_type.c, c_type.h, debug.c, english.c, errors.c, gibberish.c,
     lexer.l, literals.c, literals.h, parser.y, typedefs.h: Renamed all
     extension symbols to include either APPLE or GNU.

2020-04-28  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, parser.y, test/Makefile.am, typedef_tki.out,
     typedef_ti.test, typedef_tki.test: Now allowing use of "typename".

2020-04-27  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Fixed unknown type crash.
   * english.c, test/Makefile.am, k_typedef_i_explain_i.out,
     k_typedef_i_explain_i.test: Print type of scope for nested types.

2020-04-26  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, c_type.c, parser.y, test/Makefile.am, declare_ovc_udc_i.out,
     explain_oc_udc_i.out, declare_ovc_udc_i.test, explain_oc_udc_i.test: Can
     now declare const/volatile user-defined conversion operators.
   * parser.y: Change from "switch" to "if".
   * parser.y: Moved type_pop() out of explain_type_decl().
   * parser.y: Made type_pop() be C_NOWARN_UNUSED_RESULT.

2020-04-25  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: s/SLIST_TEMP_INIT_VAR/SLIST_VAR_INIT/, part 2.
   * c_typedef.c, red_black.c, red_black.h: Reverted red-black tree NOT to have
     rb_data_free_t function in rb_tree.
   * slist.h: s/SLIST_TEMP_INIT_VAR/SLIST_VAR_INIT/

2020-04-24  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, c_keyword.c, c_type.c, literals.c, literals.h: Added support for
     GNU C's __thread.
   * autocomplete.c, c_keyword.h, c_lang.h, c_operator.h, c_type.c,
     c_typedef.c, cdecl.c, help.c, lexer.l: Undid pointless *const.
   * c_type.c: Changed c_type struct to have language-specific literals.
   * cdecl.1: Fixed formatting of "options".
   * cdecl.1, autocomplete.c, c_keyword.c, c_keyword.h, c_lang.h, c_operator.h,
     c_type.c, c_type.h, cdecl.c, errors.c, help.c, lexer.l, literals.c,
     literals.h, parser.y, test/Makefile.am, cdecl--debug.out, cdecl-d.out,
     declare_ga.out, declare_grtpi.out, declare_rtf_v.out,
     explain_cast_rtpi.out, explain_ga.out, explain_gif_v.out,
     explain_grtpi.out, explain_rtpi.out, explain_udl_pccz_ul.out,
     not_in_Makefile.sh, declare_ga.test, declare_grtpi.test,
     declare_rtf_v-c.test, declare_rtf_v.test, explain_cast_rtpi.test,
     explain_ga.test, explain_gif_v.test, explain_grtpi.test,
     explain_rtpi-c++-error.test, explain_rtpi.test: Added support for GNU C's
     __inline__ and __restrict__.

2020-04-20  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all.out,
     show_all_typedef.out, show_predefined.out, show_predefined_typedef.out:
     Added GNU C types.

2020-04-19  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added caveat about __int8, etc., types.
   * c_typedef.c, show_all.out, show_all_typedef.out, show_predefined.out,
     show_predefined_typedef.out: Changed __int64 to long long.
   * c_typedef.c: Added comment about Windows __int8, etc., types.

2020-04-18  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Updated.
   * cdecl.1, c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all.out,
     show_all_typedef.out, show_predefined.out, show_predefined_typedef.out:
     Added WIN32 types.
   * cdecl.1: Turned off hyphenation and justification for predefined types.
   * cdecl.1: Reworked predefined types order.
   * parser.y: Fixed a bug where redefining one typedef'd type as another would
     crash, part 2.
   * parser.y, test/Makefile.am, retypedef-01.out, retypedef-01.test: Fixed a
     bug where redefining one typedef'd type as another would crash.

2020-04-15  Paul J. Lucas <paul@lucasmail.org>

   * options.c, options.h, set.c: Made opt_explicit_int local to options.c.
   * cdecl.1, help.c, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c.out, help_commands-c++.out, help_commands-c.out: Updaded
     help and man page to reflect reality that the "show" command can take no
     argument.

2020-04-14  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c, test/Makefile.am, declare_+o_eq_rck_rk=default-c++03.test,
     declare_+o_eq_rck_rk=delete-c++03.test: "default" and "delete" are now
     allowed only in C++11 or later.
   * c_type.c, errors.c: Simplified "register" handling.
   * c_type.c: s/LANG_MIN(CPP_11)/LANG_MIN(CPP_11)/ for T_REFERENCE.
   * c_kind.h: Added K_USER_DEF_CONVERSION to comment.
   * c_ast.c, c_ast.h, c_ast_util.c, c_ast_util.h, c_typedef.c, c_typedef.h,
     typedefs.h: Renamed some types.

2020-04-13  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c: Added C_WARN_UNUSED_RESULT.
   * c_ast.c: Being explicit about pointer-to-function call.
   * c_typedef.c: Being explicit about pointer-to-function call.
   * cdecl.1, c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all.out,
     show_all_typedef.out, show_predefined.out, show_predefined_typedef.out:
     Added std::thread and std::jthread to predefined types.

2020-04-12  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, c_keyword.c, c_type.c, c_type.h, lexer.l, literals.c, literals.h,
     parser.y, cdecl--debug.out, cdecl-d.out: Added GNU C's __auto_type
     extension.
   * configure.ac, c_type.c: Fixed "long long" type: no longer allowed in C89.
   * c_lang.h, errors.c, parser.y: Added c_lang_is_c() and C_LANG_IS_C().

2020-04-11  Paul J. Lucas <paul@lucasmail.org>

   * literals.c: Removed blank lines.

2020-04-05  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: More asserts.
   * parser.y: Added (int).
   * parser.y: s/bison/Bison/
   * lexer.l: s/flex/Flex/

2020-04-02  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, red_black.c, red_black.h: Changed red-black tree to include
     data_free_fn.

2020-04-01  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added types from pthread.h and threads.h (C11).
   * c_typedef.c: Whitespace change.
   * c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all.out,
     show_all_typedef.out, show_predefined.out, show_predefined_typedef.out:
     Added types from pthread.h and threads.h (C11).
   * autocomplete.c:
     s/HAVE_DECL_RL_COMPLETION_FUNC_T/HAVE_RL_COMPLETION_FUNC_T/
   * configure.ac: Whitespace change.
   * configure.ac, pjl_compile.m4, pjl_config.h: Now using PJL_COMPILE macro.
   * configure.ac, c_ast_util.c, c_sname.h, cdecl.c, english.c, errors.c,
     options.c, parser.y, pjl_config.h: Added C_IGNORE_RV.

2020-03-25  Paul J. Lucas <paul@lucasmail.org>

   * Doxyfile, configure.ac, ax_c___attribute__.m4, autocomplete.c, c_ast.c,
     c_ast.h, c_ast_util.c, c_ast_util.h, c_keyword.h, c_kind.c, c_kind.h,
     c_lang.c, c_lang.h, c_operator.c, c_operator.h, c_sname.c, c_sname.h,
     c_type.c, c_type.h, c_typedef.c, c_typedef.h, cdecl.c, color.c, color.h,
     english.c, errors.c, gibberish.c, gibberish.h, help.c, lexer.h, lexer.l,
     options.c, options.h, parser.y, pjl_config.h, print.c, print.h, prompt.c,
     red_black.c, red_black.h, slist.c, slist.h, util.c, util.h: Now using some
     gcc attributes.
   * Doxyfile: Changed STRIP_CODE_COMMENTS to NO.
   * autocomplete.c: Removed [no]create from autocompletion -- not sure why it
     was ever added.

2020-02-19  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c: Slightly more efficient check.
   * autocomplete.c: Added missing explain-by-default.

2020-02-18  Paul J. Lucas <paul@lucasmail.org>

   * red_black.c: Explicit about calling pointer-to-function.
   * slist.c: Fixed slist_cmp().

2020-01-31  Paul J. Lucas <paul@lucasmail.org>

   * c_operator.h: s/Minumum/Minimum/

2020-01-24  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, cdecl.1, help.c, parser.y, help-c++.out, help-c.out,
     help_command-c++.out, help_command-c.out, help_commands-c++.out,
     help_commands-c.out: Cast now accepts "as" and "to" in addition to "into".

2020-01-23  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, cdecl.c, test/Makefile.am, cdecl-e-const_cast_pi.out,
     ci.out, cdecl-e-const_cast_pi.test, ci.test: Made special-case for const
     and static for explain-by-default.

2020-01-22  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Supressed more warnings for flex-generatwd code.
   * errors.c: "register" is now reserved in C++17 or later.
   * configure.ac, lexer.l, options.c, parser.y, set.c: Added more warnings.

2020-01-21  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c: Removed unnecessary call to c_ast_equiv() because of_ast is
     checked below.
   * configure.ac: Updated version.
   * 00gnulib.m4, gnulib-common.m4, gnulib-comp.m4, zzgnulib.m4: Updated
     GNUlib.

2020-01-17  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Added BEGIN( INITIAL ) to lexer_reset().

2020-01-13  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, cdecl.1, src/Makefile.am, help.c, lexer.l, parser.y, set.c,
     help-c++.out, help-c.out, help_command-c++.out, help_command-c.out,
     help_commands-c++.out, help_commands-c.out: Now allowing set lang=<lang>.

2020-01-09  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added @param for elaborate_error().

2020-01-07  Paul J. Lucas <paul@lucasmail.org>

   * help.c: Added explicit-int to set options in help.

2020-01-06  Paul J. Lucas <paul@lucasmail.org>

   * Doxyfile, Makefile.am, man/Makefile.am, man/man1/Makefile.am,
     src/Makefile.am, autocomplete.c, c_ast.c, c_ast.h, c_ast_util.c,
     c_ast_util.h, c_keyword.c, c_keyword.h, c_kind.c, c_kind.h, c_lang.c,
     c_lang.h, c_operator.c, c_operator.h, c_sname.c, c_sname.h, c_type.h,
     c_typedef.c, c_typedef.h, cdecl.c, cdecl.h, color.c, color.h, debug.c,
     debug.h, english.c, english.h, errors.c, gibberish.c, gibberish.h, help.c,
     lexer.h, lexer.l, literals.c, literals.h, pjl_config.h, prompt.c,
     prompt.h, red_black.c, red_black.h, slist.c, slist.h, typedefs.h, util.c,
     util.h, run_test.sh: Updated copyright year to 2020.
   * configure.ac, cdecl.1, c_type.c, options.c, options.h, parser.y, print.c,
     print.h, set.c, test/Makefile.am, cdecl-Ii.out, cdecl-Iis.out,
     cdecl-Iiu.out, cdecl-Il.out, cdecl-Ill.out, cdecl-Ilull.out, cdecl-Is.out,
     cdecl-Iu.out, cdecl-Iui.out, cdecl-Iul,ll.out, cdecl-Iul.out,
     cdecl-Iull.out, cdecl-Iulll.out, cdecl-Iulull.out, cdecl-Ius.out, set.out,
     set_options.out, cdecl-Ii.test, cdecl-Iis.test, cdecl-Iiu.test,
     cdecl-Il.test, cdecl-Ill.test, cdecl-Ilull.test, cdecl-Is.test,
     cdecl-Iu.test, cdecl-Iui.test, cdecl-Iul,ll.test, cdecl-Iul.test,
     cdecl-Iull.test, cdecl-Iulll.test, cdecl-Iulull.test, cdecl-Ius.test,
     cdecl-Ix.test: Added --explicit-int/-I and explicit-int set option.
   * lexer.l: Added casts to eliminate warnings with some versions of flex.

2020-01-02  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c, c_type.h, explain_cast_ll.out, explain_cast_ull.out,
     explain_cu.out, explain_ll.out, explain_tulz.out,
     explain_udl_pcc16ul_i.out, explain_udl_pcc32ul_i.out,
     explain_udl_pcc8ul_i.out, explain_udl_pccul_i.out,
     explain_udl_pcwul_i.out, explain_udl_ull_i.out, explain_ull.out: Now
     explicit about "int" in English.

2019-12-26  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, set.c: Now ignoring hyphens for set options.

2019-12-20  Paul J. Lucas <paul@lucasmail.org>

   * red_black.c: Made rb_nil static.

2019-12-17  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.h, c_kind.h, c_type.h, color.c, prompt.c, red_black.c,
     red_black.h, slist.h, util.h: Consistent @sa spacing.
   * c_ast.c, c_ast.h, c_ast_util.c, c_ast_util.h, c_operator.c, c_operator.h,
     c_type.c, cdecl.c, debug.c, english.c, errors.c, gibberish.c, lexer.l,
     options.c, parser.y, set.c, typedefs.h: More consistent C_ prefix.
   * slist.c: Somewhat clearer.

2019-12-16  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.h, cdecl.h, debug.c, debug.h, parser.y: s/print_kv/kv_debug/
   * c_sname.h: More docs.
   * c_operator.h: More operator docs.
   * util.h: Fixed dox.
   * c_ast.h, errors.c: s/c_ast_found/c_ast_find/
   * c_ast_util.c, c_ast_util.h: Made some AST util functions static.
   * c_ast.h: More @sa in docs.
   * util.c: s/dup/s_dup/ to fix shadow warning.

2019-12-12  Paul J. Lucas <paul@lucasmail.org>

   * set.c, set.out, set_options.out: Sorted printing of "set" options.
   * c_ast_util.c: Reworked loop in c_ast_untypedef().
   * autocomplete.c: s/begin/begun/
   * english.c: Added c_ast_english_func_args().
   * english.c: Moved "comma" declaration close to point of first use.
   * english.c: Removed comment that no longer makes any sense.
   * english.c, gibberish.c: Added assert()s.

2019-12-11  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Updated to 6.6.2.
   * configure.ac: Moved check for libcurses before libreadline since some
     implementations of the latter depend on the former (e.g., on Solaris 11).

2019-12-06  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, c_type.c, lexer.l, literals.c, literals.h, explain_oi.out: Added
     missing "thread-local".
   * cdecl.1: Added "Equivalent to...."

2019-12-04  Paul J. Lucas <paul@lucasmail.org>

   * util.c, util.h: Added IF_EXIT() macro.

2019-12-03  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: s/type declarations/declarations/
   * _Noreturn.h, stdint.in.h, stdio.in.h, stdlib.in.h, string.in.h,
     unistd.in.h, gnulib-common.m4: Updated GNUlib.

2019-12-02  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Added -Wlogical-op.
   * configure.ac, lexer.l, options.c, parser.y, print.c, slist.c: Added
     -Wconversion warning.
   * configure.ac, cdecl.c, prompt.c: Added more gcc warnings.
   * c_kind.c, c_lang.c, c_operator.c, c_type.c, help.c, lexer.l, util.h: Added
     UNEXPECTED_INT_VALUE() and UNEXPECTED_STR_VALUE().
   * configure.ac: Added -Wimplicit-fallthrough=4.
   * lexer.l: Silence the "redundant redeclaration" warnings for yylex() and
     yywrap().

2019-11-25  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all.out,
     show_all_typedef.out, show_predefined.out, show_predefined_typedef.out:
     Added atomic_char8_t typedef for C++20.
   * Doxyfile: Changed ALPHABETICAL_INDEX = YES.

2019-11-22  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Now insists on flex/bison only when lexer.c/parser.c don't
     exist.
   * help.c: Now using special pointer values.

2019-11-20  Paul J. Lucas <paul@lucasmail.org>

   * print.c: Added #ifdef ENABLE_TERM_SIZE to silence warning when building
     with --disable-term-size.

2019-11-18  Paul J. Lucas <paul@lucasmail.org>

   * errors.c: Split out c_ast_check_func_c() and c_ast_check_func_cpp().
   * errors.c: Fixed "‘ret_ast’ may be used uninitialized in this function"
     warning.

2019-11-11  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c, c_keyword.c, c_operator.c, c_type.c, c_type.h,
     c_typedef.c, color.c, lexer.l, options.c, parser.y, red_black.h, slist.h,
     util.h: Removed @hideinitializer -- not needed.
   * parser.y: Can now explicitly give an "structure definitions are not
     supported" error.

2019-11-09  Paul J. Lucas <paul@lucasmail.org>

   * Doxyfile: Added SORT_GROUP_NAMES = YES.
   * color.h, options.h: Renamed groups.

2019-11-08  Paul J. Lucas <paul@lucasmail.org>

   * color.c, prompt.c, red_black.c, red_black.h, util.h: s/@see/@sa/ for
     consistency.

2019-10-31  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Updated to 6.6.1.
   * set.c: Whitespace fix.
   * c_ast.c: Removed odd DOXYGEN_IGNORE.

2019-10-29  Paul J. Lucas <paul@lucasmail.org>

   * pjl_config.h: s/Mac OS X/MacOS/

2019-10-25  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am: Added "rm -f" for c++decl symlink.

2019-10-23  Paul J. Lucas <paul@lucasmail.org>

   * options.c: More explicit about check.
   * cdecl.1, autocomplete.c, cdecl.c, cdecl.h, help.c, lexer.l, options.c,
     options.h, parser.y, print.c, set.c, test/Makefile.am, help-c++.out,
     help-c.out, help_command-c++.out, help_command-c.out,
     help_commands-c++.out, help_commands-c.out, i.out, set.out,
     set_explain-by-default.out, set_explain.out, set_noexplain-by-default.out,
     set_noexplain.out, set_options.out, i.test, set_explain-by-default.test,
     set_explain.test, set_noexplain-by-default.test, set_noexplain.test: Added
     --explain/-e and explain-by-default option: when enabled, any input line
     that doesn't start with a command is assumed to be "explain."

2019-10-21  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, set.c: May now use unambiguous option name abbreviations.

2019-10-18  Paul J. Lucas <paul@lucasmail.org>

   * options.c: Changed usage() to use fputs().
   * set.c: Reworked set_option() code.

2019-10-17  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l, util.h: Added is_ident().
   * parser.y: Fixed typo.

2019-10-16  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c: Added (void).
   * autocomplete.c, cdecl.c, lexer.l, literals.c, literals.h:
     s/L_SET/L_SET_COMMAND/ since L_SET is a synonym for SEEK_SET.
   * cdecl.c: Moved declaration of conf_path_buf; removed unlikely().

2019-09-23  Paul J. Lucas <paul@lucasmail.org>

   * lib/Makefile.am, stddef.in.h, stdint.in.h, stdlib.in.h, string.in.h,
     unistd.in.h, extern-inline.m4, getdelim.m4, getline.m4, getopt.m4,
     gnulib-common.m4, nocrash.m4, unistd_h.m4: Updated GNUlib.
   * configure.ac, help.c, help-c++.out, help-c.out, help_command-c++.out,
     help_command-c.out, help_commands-c++.out, help_commands-c.out: Added
     "lang" to help.

2019-08-14  Paul J. Lucas <paul@lucasmail.org>

   * errors.c: s/(T_CONST | T_VOLATILE)/T_MASK_QUALIFIER/

2019-08-13  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c: Restricting virtual constexpr to C++20.
   * parser.y: Removed useless member_func_decl_english_ast rule.

2019-08-12  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, autocomplete.c, c_ast_util.c, c_ast_util.h, c_keyword.c,
     c_type.c, c_type.h, errors.c, gibberish.c, lexer.l, literals.c,
     literals.h, parser.y, test/Makefile.am, cdecl--debug.out, cdecl-d.out,
     declare_+o_eq_rck_rk=default-01.out, declare_+o_eq_rck_rk=delete-01.out,
     explain_+o_eq_rck_rk=default-01.out, explain_+o_eq_rck_rk=delete-01.out,
     declare_+o_eq_rck_rk=default-01.test, declare_+o_eq_rck_rk=delete-01.test,
     explain_+o_eq_rck_rk=default-01.test,
     explain_+o_eq_rck_rk=default-02.test, explain_+o_eq_rck_rk=delete-01.test,
     explain_+o_eq_rck_rk=delete-02.test,
     explain_+o_exclam_eq_rck_rk=default.test,
     explain_+o_exclam_eq_rck_rk=delete.test: Defaulted and deleted special
     member functions are now supported.
   * lexer.h, parser.y: Moved yylex() declaration.
   * cdecl.1: Move comment to left.

2019-08-06  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.h: Better @return for c_ast_unreference().
   * c_ast_util.h: s/confustion/confusion/
   * c_ast_util.c, c_ast_util.h: Reworked c_ast_is_ecsu(),
     c_ast_is_ptr_to_type(), c_ast_unpointer(), c_ast_unreference(),
     c_ast_untypedef().
   * c_ast_util.c: Simplified c_ast_is_ptr_to_type().
   * c_ast_util.c: Added ast != NULL.
   * c_ast_util.c, c_ast_util.h, errors.c:
     s/c_ast_is_ptr_to/c_ast_is_ptr_to_type/

2019-07-26  Paul J. Lucas <paul@lucasmail.org>

   * c_lang.c: Removed extraneous @hideinitializer.
   * c_lang.c: Added assert().
   * c_lang.h: Added 'u'.
   * c_lang.h: s/LANG_C_MASK/LANG_MASK_C/
   * c_ast.c, c_ast.h: Unified c_ast_visit().

2019-07-24  Paul J. Lucas <paul@lucasmail.org>

   * errors.c: s/PLURAL_S/plural_s/
   * c_type.h, gibberish.c: Variable renaming.
   * errors.c: Added T_ANY_REFERENCE.
   * configure.ac, cdecl.1, c_type.c, c_type.h, errors.c, help.c, parser.y,
     util.h, test/Makefile.am, explain_eictor_i.out, explain_exctor_i.out,
     explain_fctor_i.out, explain_ictor_i.out, explain_xctor.out, help-c++.out,
     help-c.out, help_command-c++.out, help_command-c.out,
     help_commands-c++.out, help_commands-c.out, help_english-c++.out,
     help_english-c.out, explain_cector_i.test, explain_eictor_i.test,
     explain_exctor_i.test, explain_fctor_i.test, explain_ictor_i.test,
     explain_xctor.test: Now support all storage-class-like types for
     constructors.

2019-07-23  Paul J. Lucas <paul@lucasmail.org>

   * c_type.h, errors.c: Moved T_USER_DEF_CONV.
   * c_ast_util.c, c_ast_util.h: c_ast_take_name() now uses c_ast_find_name().

2019-07-22  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c: Now taking type_ast's name if decl_ast doesn't have one.

2019-07-16  Paul J. Lucas <paul@lucasmail.org>

   * errors.c: Minor reformatting.
   * c_ast.c: Added comment.
   * cdecl.1: Added --alt-tokens/-a.

2019-07-15  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS, configure.ac, cdecl.1, autocomplete.c, c_ast_util.c, c_keyword.c,
     c_kind.h, c_operator.h, c_type.c, errors.c, gibberish.c, gibberish.h,
     help.c, lexer.l, literals.c, literals.h, options.c, options.h, parser.y,
     set.c, test/Makefile.am, declare_alttokens_o_amper2_rck_b.out,
     declare_alttokens_o_amper_eq_rki_rk.out,
     declare_alttokens_o_amper_rcki_k.out,
     declare_alttokens_o_circ_eq_i_rk.out, declare_alttokens_o_circ_rcki_k.out,
     declare_alttokens_o_exclam_eq_rcki_b.out,
     declare_alttokens_o_exclam_rck_b.out, declare_alttokens_o_pipe_2rck_k.out,
     declare_alttokens_o_pipe_eq_i_rk.out, declare_alttokens_o_pipe_i_rk.out,
     declare_alttokens_o_tilde_k.out, declare_o_exclam_rck_b.out,
     explain_bitand_i.out, explain_compl_dtor.out, explain_vcompl_dtor.out,
     help-c++.out, help-c.out, help_command-c++.out, help_command-c.out,
     help_commands-c++.out, help_commands-c.out, set.out, set_options.out,
     declare_alttokens_o_amper2_rck_b.test,
     declare_alttokens_o_amper_eq_rki_rk.test,
     declare_alttokens_o_amper_rcki_k.test,
     declare_alttokens_o_circ_eq_i_rk.test,
     declare_alttokens_o_circ_rcki_k.test,
     declare_alttokens_o_exclam_eq_rcki_b.test,
     declare_alttokens_o_exclam_rck_b.test,
     declare_alttokens_o_pipe_2rck_k.test,
     declare_alttokens_o_pipe_eq_i_rk.test, declare_alttokens_o_pipe_i_rk.test,
     declare_alttokens_o_tilde_k.test, declare_o_exclam_rck_b.test,
     explain_bitand_i.test, explain_compl_dtor.test, explain_vcompl_dtor.test:
     Now handling "alternative tokens" much better.
   * errors.c: Fixed fallthrough warning.
   * cdecl.c: Added #include <limits.h> for PATH_MAX.

2019-07-11  Paul J. Lucas <paul@lucasmail.org>

   * print.c, print.h, set.c: Now warning about trigraphs in C++17 or later.

2019-07-09  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, typedefs.h: Added c_array_size_t.

2019-07-08  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Fixed typo.

2019-07-07  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, c_lang.c, cdecl.c, help.c, options.c, options.h, set.c,
     help-c++.out, help-c.out, help_command-c++.out, help_command-c.out,
     help_commands-c++.out, help_commands-c.out, set.out, set_options.out:
     Changed -q to -p; set now only prints current options; added set help to
     help commands.

2019-07-05  Paul J. Lucas <paul@lucasmail.org>

   * english.c: Added blank line.
   * errors.c: Improved K&R C function prototypes error message.
   * cdecl.1: Only C++ has overloaded operators.

2019-07-03  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c: Removed unecessary c_ast_untypedef() from c_ast_is_ptr_to();
     added c_ast_untypedef() to c_ast_unreference().
   * c_ast.c: Replaced "default" with explicit cases.
   * c_kind.c: Removed default.
   * parser.y: Removed unnecessary assignment.
   * test/Makefile.am, declare_ntf.out, declare_ntf.test: Added non-throwing
     test.
   * parser.y, cdecl--debug.out, cdecl-d.out: Rule renaming.

2019-07-02  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am, cdecl.h, pjl_config.h: Split out pjl_config.h.
   * test/Makefile.am: Added CPPDECL.

2019-07-01  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Updated version.
   * options.c, set.c, test/Makefile.am, set.out, set_options.out: Reworked
     help and set option output.
   * util.h: Fixed comment.

2019-06-27  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Added unlikely.
   * lexer.l: Added lexer_update_loc().

2019-06-26  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Whitespace change.
   * c_ast.c, c_ast.h, c_sname.c, debug.c, english.c, errors.c, gibberish.c,
     parser.y: Now using more inline functions.
   * util.c: More assert()s.
   * c_type.c, c_typedef.c, debug.c, english.c, errors.c, gibberish.c, help.c,
     options.c, print.c: More assert()s.
   * c_keyword.c, c_sname.c: More assert()s.
   * c_ast_util.c: Added more assert()s.

2019-06-25  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, ax_compile_check_sizeof.m4, c_ast.h, c_ast_util.c,
     c_ast_util.h, c_kind.h, c_sname.h, c_type.c, c_type.h, c_typedef.c,
     parser.y, red_black.h, slist.c, slist.h, util.c: Now 32-bit safe.
   * configure.ac: Updated.
   * configure.ac: Added bug report URL.
   * options.c: Now printing version and help to stdout per GNU guidelines;
     added long options and home page to --help.

2019-06-24  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Added explicit check.

2019-06-20  Paul J. Lucas <paul@lucasmail.org>

   * prompt.c: Fixed HAVE_DECL_RL_PROMPT_START_IGNORE.
   * configure.ac, autocomplete.c: Work-around for CPPFunction deprecation
     warning.
   * configure.ac, autocomplete.c, prompt.c: Now falling back to
     completion_matches for missing rl_completion_matches; now checking for
     RL_PROMPT_START_IGNORE; fixed RL_PROMPT_END_IGNORE.
   * configure.ac: Fixed handling of readline, part 2.
   * configure.ac: Fixed handling of readline.

2019-06-19  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, ax_prog_bison.m4, ax_prog_flex.m4: Now using AX_PROG_FLEX
     and AX_PROG_BISON to get rid of a POSIX yacc warning.

2019-06-18  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, cdecl--debug.out, cdecl-d.out: The reworking of the way in
     which typedefs are parsed fixed things so that the predefined typedefs are
     no longer order-dependent.
   * cdecl.1: More info about _Alignas.
   * errors.c: Refactored error-checking code into smaller functions.
   * errors.c: Added c_ast_check_alignas().
   * errors.c: Added c_ast_check_oper_args().
   * errors.c: Added error_kind_not_cast_into().
   * cdecl.1, c_ast.h, c_keyword.c, debug.c, english.c, errors.c, gibberish.c,
     gibberish.h, help.c, lexer.l, literals.c, literals.h, parser.y,
     typedefs.h, test/Makefile.am, declare_c_al0-c++.out, declare_c_al0.out,
     declare_c_al8-c++.out, declare_c_al8.out, declare_c_alpv.out,
     explain_al0_c-c++.out, explain_al0_c.out, explain_al8_c-c++.out,
     explain_al8_c.out, explain_alpv_c.out, help-c++.out, help-c.out,
     help_command-c++.out, help_command-c.out, help_commands-c++.out,
     help_commands-c.out, declare_c_al0-c++.test, declare_c_al0.test,
     declare_c_al3.test, declare_c_al8-c++.test, declare_c_al8.test,
     declare_c_alpv.test, declare_ti_al8.test, explain_al0_c-c++.test,
     explain_al0_c.test, explain_al3_c.test, explain_al8_c-c++.test,
     explain_al8_c.test, explain_alpv_c.test: Added _Alignas and alignas
     support.

2019-06-14  Paul J. Lucas <paul@lucasmail.org>

   * errors.c: Fixed allowing user-defined conversion operators to be const.

2019-06-13  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all.out,
     show_all_typedef.out, show_predefined.out, show_predefined_typedef.out:
     Added predefined typedefs fd_set, nfds_t, and sigset_t.
   * AUTHORS, configure.ac, cdecl.1, autocomplete.c, c_ast.c, c_ast.h,
     c_kind.c, c_kind.h, debug.c, english.c, errors.c, gibberish.c, help.c,
     lexer.l, literals.c, literals.h, parser.y, typedefs.h, test/Makefile.am,
     declare_+udc_i.out, declare_udc_i.out, declare_udc_rcc.out,
     explain_+udc_i.out, explain_f+udc_i.out, explain_udc_i.out,
     explain_udc_rcc.out, help_english-c++.out, declare_+udc_i.test,
     declare_udc_a4i.test, declare_udc_i.test, declare_udc_rcc.test,
     explain_+udc_i.test, explain_f+udc_i.test, explain_udc_a4i.test,
     explain_udc_i.test, explain_udc_rcc.test: Added support for C++
     user-defined conversion operators.

2019-06-11  Paul J. Lucas <paul@lucasmail.org>

   * lexer.h, lexer.l, parser.y, test/Makefile.am, explain_tii32.out,
     explain_tulz.out, explain_tci32.test, explain_tii32.test,
     explain_tulz.test: Reworked the say in which typedef'd names are parsed;
     also fixed a few bugs.

2019-06-10  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, c_typedef.h: s/type/t/

2019-06-07  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Simplified unmodified_type_c_ast.
   * parser.y: s/name_or_any_typedef_ast_expected/using_name_ast_expected/
   * parser.y: Added (void).

2019-06-06  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l, parser.y, test/Makefile.am, 2define_k_define_2k_show.out,
     2define_k_define_2k_show.test: Now returning distinct token for
     Y_TYPEDEF_NAME.
   * parser.y: Put name rules into their own section.
   * parser.y: Sorted %destructors.
   * parser.y: Added add_type().
   * parser.y: s/print_type_gibberish/print_type_as_typedef/
   * c_ast.c, gibberish.c, parser.y, slist.h, util.h: s/STRUCT_ZERO/MEM_ZERO/
   * parser.y: Rule reordering.
   * lexer.l: Added more to comment.

2019-06-05  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, c_sname.h, errors.c: s/c_sname_offset/c_sname_name_at/
   * c_ast.h, c_sname.c, c_sname.h, debug.c, errors.c, gibberish.c, parser.y,
     slist.c, slist.h: slist_dup() now takes the number of nodes to duplicate;
     other function renaming.
   * slist.c: Added optimization for slist_peek_at() when offset == list->len -
     1.
   * c_sname.c, c_sname.h, slist.c, slist.h: s/slist_offset/slist_peek_at/,
     etc.

2019-06-03  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Don't need to be explicit about T_STATIC.
   * errors.c: s/c_type_name/c_type_name_error/

2019-05-31  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c: Now using parent code to check ret_ast.
   * c_ast.h, parser.y: Added c_ast_sname_type_name().
   * util.h: Removed SP_BEFORE -- not used.
   * autocomplete.c: Added "constructor" and "destructor" to autocomplete.

2019-05-29  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Fixed cdecl autocomplete options.
   * c_ast.c: Now properly comparing constructor argumentes.

2019-05-24  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Rule reordering.
   * parser.y: Indentation fix.

2019-05-23  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: s/define/declare/
   * configure.ac: Updated.
   * parser.y: Removed special-case for destructor; added
     destructor_decl_english_ast rule.
   * cdecl.1, help.c, help_english-c++.out: Added missing "virtual" for
     destructor to help and man page.

2019-05-22  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, errors.c, gibberish.c, parser.y, test/Makefile.am,
     declare_+dtor.out, declare_dtor.out, declare_vdtor.out, explain_vdtor.out,
     declare_+dtor.test, declare_dtor.test, declare_v+f_v.test,
     declare_vdtor.test, explain_v+f_v.test, explain_vdtor.test: Added support
     for noexcept constructors and noexcept and virtual destructors.
   * cdecl.c: Minor reformatting.
   * cdecl.1: Added "namespace" to set of cdeclrc commands.
   * cdecl.1: Expanded "Gibberish" section to include constructor, destructor,
     etc.
   * cdecl.1: Added "hyphens in hyphenated words".
   * AUTHORS, cdecl.1, autocomplete.c, c_ast.c, c_ast.h, c_kind.c, c_kind.h,
     c_sname.c, c_sname.h, debug.c, english.c, errors.c, gibberish.c, help.c,
     lexer.l, literals.c, literals.h, parser.y, slist.c, slist.h, typedefs.h,
     test/Makefile.am, declare_ctor.out, declare_ctor_i.out,
     declare_ector_i.out, explain_+dtor.out, explain_2+dtor.out,
     explain_ctor.out, explain_ctor_i.out, explain_dtor.out,
     explain_ector_i.out, help_english-c++.out, declare_+ctor-error.test,
     declare_ctor.test, declare_ctor_i.test, declare_ector_i.test,
     declare_ef.test, explain_+ctor-error.test, explain_+dtor-error.test,
     explain_+dtor.test, explain_2+dtor.test, explain_ctor.test,
     explain_ctor_i.test, explain_dtor.test, explain_ector_i.test: Added
     support for constructors & destructors.

2019-05-21  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Reworked help command.

2019-05-20  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: s/scoped_name/sname/
   * parser.y: Fixed crash with scope types.
   * parser.y, cdecl--debug.out, cdecl-d.out: Now using c_type_debug() in
     DUMP_SNAME().
   * parser.y, cdecl--debug.out, cdecl-d.out: Added DUMP_SNAME().
   * help-c++.out, help-c.out, help_command-c++.out, help_command-c.out,
     help_commands-c++.out, help_commands-c.out: Fixed expected tests.
   * slist.c: Added (void).
   * configure.ac, cdecl.1, autocomplete.c, help.c, lexer.l, literals.c,
     literals.h, parser.y, test/Makefile.am, help-c++.out, help-c.out,
     help_command-c++.out, help_command-c.out, help_commands-c++.out,
     help_commands-c.out, help_english-c++.out, help_english-c.out,
     help_englisj-c++.out, help_englisj-c.out, help_command-c++.test,
     help_command-c.test, help_commands-c++.test, help_commands-c.test,
     help_english-c++.test, help_english-c.test: Split up help command output.

2019-05-17  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Reorder rules.
   * parser.y, test/Makefile.am, 2k_typedef_i.test: Now forbidding members with
     the same name as their enclosing class.
   * c_keyword.c, parser.y: namespace clean-up.
   * c_keyword.c: Removed duplicate L_TRY entry.
   * c_keyword.c, c_type.c, c_type.h, parser.y: Added a bit more support for
     "explicit".
   * lexer.l, parser.y, slist.h: Grammar rule clean-up.
   * parser.y: Reordered sname_c rule.

2019-05-16  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added comment.
   * lexer.l, parser.y: s/Y_TYPEDEF_TYPE/Y_TYPEDEF_NAME/
   * parser.y: DUMP_AST_LIST fix.
   * help.c: Removed '_'.
   * test/Makefile.am: Added help tests.
   * c_sname.c, c_sname.h, gibberish.c, gibberish.h: Code re-org.

2019-05-13  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: s/Sierra/Mojave/

2019-05-11  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added new typedefs to man page.
   * configure.ac: New release is 6.2.

2019-05-10  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all.out,
     show_all_typedef.out, show_predefined.out, show_predefined_typedef.out:
     Added typedef declarations for div_t, imaxdiv_t, etc.
   * c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all.out,
     show_all_typedef.out, show_predefined.out, show_predefined_typedef.out:
     Added max_align_t, std::max_align_t, std::size_t, and std::ptrdiff_t.
   * cdecl.1: Added mention of char8_t.
   * AUTHORS, autocomplete.c, c_keyword.c, c_type.c, c_type.h, errors.c,
     help.c, literals.c, literals.h, parser.y, test/Makefile.am,
     cdecl--debug.out, cdecl-d.out, explain_udl_c8_i.out,
     explain_udl_pcc8ul_i.out, explain_udl_pcc8z_i.out, help-c++.out,
     declare_c8-c++17.test, declare_hc8.test, declare_lc8.test,
     declare_sc8.test, declare_uc8.test, explain_c8-c++17.test,
     explain_hc8.test, explain_lc8.test, explain_sc8.test, explain_uc8.test,
     explain_udl_c8_i.test, explain_udl_pcc8ul_i.test,
     explain_udl_pcc8z_i.test: Added support for char8_t.
   * AUTHORS, configure.ac, cdecl.1, autocomplete.c, c_ast.c, c_ast.h,
     c_ast_util.c, c_ast_util.h, c_kind.c, c_kind.h, c_type.h, debug.c,
     english.c, errors.c, gibberish.c, help.c, lexer.l, literals.c, literals.h,
     parser.y, typedefs.h, test/Makefile.am, declare_+udl_c_i.out,
     explain_+udl_c_i.out, explain_udl_c16_i.out, explain_udl_c32_i.out,
     explain_udl_c_i.out, explain_udl_ld_i.out, explain_udl_pcc16ul_i.out,
     explain_udl_pcc16z_i.out, explain_udl_pcc32ul_i.out,
     explain_udl_pcc32z_i.out, explain_udl_pcc_i.out, explain_udl_pccul_i.out,
     explain_udl_pccz_i.out, explain_udl_pcwul_i.out, explain_udl_pcwz_i.out,
     explain_udl_ull_i.out, explain_udl_w_i.out, help-c++.out, help-c.out,
     declare_+udl_c_i.test, explain_+udl_c_i.test, explain_udl_2c_i.test,
     explain_udl_3c_i.test, explain_udl__i.test, explain_udl_c16_i.test,
     explain_udl_c32_i.test, explain_udl_c_i-c.test, explain_udl_c_i.test,
     explain_udl_ld_i.test, explain_udl_pcc16ul_i.test,
     explain_udl_pcc16z_i.test, explain_udl_pcc32ul_i.test,
     explain_udl_pcc32z_i.test, explain_udl_pcc_i.test,
     explain_udl_pccul_i.test, explain_udl_pccz_i.test,
     explain_udl_pccz_ul.test, explain_udl_pcwul_i.test,
     explain_udl_pcwz_i.test, explain_udl_piul_i.test, explain_udl_ul_i.test,
     explain_udl_ull_i.test, explain_udl_w_i.test: Added support for C++11's
     user-defined literals.

2019-05-09  Paul J. Lucas <paul@lucasmail.org>

   * help-c++.out: Fixed expected result to match help fix.
   * help.c: Added missing [.
   * parser.y: Now checking c_init >= INIT_READ_CONF in more places.
   * c_sname.h: Removed blank line.

2019-05-08  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c: Simplified a bit of c_ast_equiv().
   * c_ast.c: Added missing checks in c_ast_equiv().

2019-05-01  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am: Added update-expected maintainer rule.
   * c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all.out,
     show_all_typedef.out, show_predefined.out, show_predefined_typedef.out:
     Added typedefs for std::exception, string, wstring, u16string, u32string.
   * c_typedef.c: Now temporarily turning off Bison debug output for builtin
     type declarations.
   * c_typedef.c, cdecl--debug.out, cdecl-d.out, show_all.out,
     show_all_typedef.out, show_predefined.out, show_predefined_typedef.out:
     Added C++20 std::byte.

2019-04-26  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am: Added uninstall-hook to remove c++decl.

2019-04-24  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added: set _lang_.

2019-04-22  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, cdecl.1, cdecl.c: More commands are now recognized as such
     when they are the first argument.
   * autocomplete.c: Made check explicit.

2019-04-17  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Made check explicit.

2019-04-16  Paul J. Lucas <paul@lucasmail.org>

   * c_keyword.c, lexer.l, parser.y: s/Y_NOT_EQ/Y_EXCLAM_EQ/
   * cdecl--debug.out, cdecl-d.out, show_all.out, show_all_typedef.out,
     show_predefined.out, show_predefined_typedef.out: Added std::nullptr_t.
   * typedefs.h: Sorted typedefs.
   * c_typedef.c, show_all.out, show_all_typedef.out, show_predefined.out,
     show_predefined_typedef.out: Put partial_ordering, et al, into std
     namespace; added nullptr_t.

2019-04-15  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, c_type.c, explain_oo_amper_rk_pk.out,
     explain_oo_minus2_i_rk.out, explain_oo_minus_rk_rk.out,
     explain_oo_plus2_i_rk.out, explain_oo_plus_rk_rk.out,
     explain_oo_star_rk_rk.out, explain_oyf.out, explain_voyf.out,
     explain_yf.out, explain_yo_amper_rk_pk.out, explain_yo_minus2_i_rk.out,
     explain_yo_minus_rk_rk.out, explain_yo_plus2_i_rk.out,
     explain_yo_plus_rk_rk.out, explain_yo_star_rk_rk.out: Final or override
     now implies virtual.

2019-04-11  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c: Made test explicit.

2019-04-05  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: s/0/T_NONE/

2019-03-30  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Fixed "cast to pointer from integer of different size" warning.
   * configure.ac: Updated version.

2019-03-29  Paul J. Lucas <paul@lucasmail.org>

   * run_test.sh: Now checking if connected to a terminal for color tests.

2019-03-28  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Better English.
   * cdecl.1: Added missing ';'.
   * set.c: s/IF_OPT/IF_IS_OPT_DO/

2019-03-26  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Updated version to 6.0.1.
   * c_type.h, typedefs.h: Fixes uint64_t being undefined.

2019-03-25  Paul J. Lucas <paul@lucasmail.org>

   * print.c: Explicit "if" conditions.
   * parser.y, set.c: The "set" command now prints the ^ for an unknown option.
   * set.c: Made comparison explicit.

2019-03-24  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS, Doxyfile, Makefile.am, configure.ac, man/Makefile.am,
     man/man1/Makefile.am, cdecl.1, src/Makefile.am, autocomplete.c, c_ast.c,
     c_ast.h, c_ast_util.c, c_ast_util.h, c_keyword.c, c_keyword.h, c_kind.c,
     c_kind.h, c_lang.c, c_lang.h, c_operator.c, c_sname.c, c_sname.h,
     c_type.c, c_type.h, c_typedef.c, c_typedef.h, cdecl.c, cdecl.h, color.c,
     color.h, debug.c, debug.h, english.c, english.h, errors.c, gibberish.c,
     gibberish.h, help.c, lexer.h, lexer.l, literals.c, literals.h, options.c,
     options.h, parser.y, print.c, print.h, prompt.c, prompt.h, red_black.c,
     red_black.h, set.c, slist.c, slist.h, typedefs.h, util.c, util.h,
     test/Makefile.am, 2c_typedef_i.out, cast_+i.out, cdecl--debug.out,
     cdecl-d.out, const_cast_+pi.out, declare_+f_v.out, declare_2+f_v.out,
     declare_=+i.out, declare_=i.out, declare_f+k_v.out, declare_i=+.out,
     declare_o2=_exclam_b.out, define_2=_i.out, define_=_i.out,
     define_=c_i.out, define_k_declare_k.out,
     define_k_define_k_explain_k+k.out, define_k_explain_pmki.out,
     dynamic_cast_+pc.out, explain_+o_eq2_rcki_b.out, explain_+o_eq_rck_rk.out,
     explain_cast_=pmi.out, explain_cast_pmc=i.out, explain_const_cast_+pi.out,
     explain_dynamic_cast_p+c+.out, explain_i+.out, explain_i2+.out,
     explain_ki+.out, explain_static_cast_i+.out, help-c++.out, help-c.out,
     namespace_+typedef_i.out, namespace_c_typedef_i.out,
     namespace_k_typedef_i.out, namespace_n_typedef_i.out,
     namespace_namespace_typedef_i-c++14.out,
     namespace_namespace_typedef_i.out, namespace_typedef_i.out,
     namespace_using_i.out, reinterpret_cast_+pv.out, set_c++14.out,
     set_c++17.out, set_c++20.out, set_c18.out, set_c95.out,
     static_cast_+i.out, run_test.sh, 2c_typedef_i.test, cast_+i.test,
     const_cast_+pi.test, declare_+f_v.test, declare_2+f_v.test,
     declare_=+i.test, declare_=i-c.test, declare_=i.test, declare_f+k_v.test,
     declare_i=+.test, declare_o2=_exclam_b.test, define_2=_i.test,
     define_=_i.test, define_=c_i.test, define_=sc_i.test,
     define_k_declare_k.test, define_k_define_k_explain_k+k.test,
     define_k_explain_pmki.test, define_namespace_=c_i.test,
     dynamic_cast_+pc.test, explain_+i-c.test, explain_+o_eq2_rcki_b.test,
     explain_+o_eq_rck_rk.test, explain_cast_=pmi.test,
     explain_cast_pmc=i.test, explain_const_cast_+pi.test,
     explain_dynamic_cast_p+c+.test, explain_f+_v.test, explain_i+.test,
     explain_i2+.test, explain_ki+.test, explain_static_cast_i+.test,
     k_namespace_typedef_i.test, namespace_+typedef_i-c++14.test,
     namespace_+typedef_i.test, namespace_c_typedef_i.test,
     namespace_k_typedef_i.test, namespace_n_typedef_i.test,
     namespace_namespace_typedef_i-c++14.test,
     namespace_namespace_typedef_i.test, namespace_typedef_i.test,
     namespace_using_i.test, reinterpret_cast_+pv.test, set_c++14.test,
     set_c++17.test, set_c++20.test, set_c18.test, set_c95.test,
     static_cast_+i.test, typedef_i+.test: Added C++ scoped name support and
     partial namespace support.

2019-02-27  Paul J. Lucas <paul@lucasmail.org>

   * c_operator.c, slist.c: Removed unnecessary uses of _GL_INLINE_HEADER_END.

2019-02-22  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, slist.c, slist.h, util.c: Some slist API renaming.

2019-02-21  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, slist.c, slist.h: Made some slist functions more explicit about
     referring to the head.
   * parser.y: Fixed comment.

2019-02-20  Paul J. Lucas <paul@lucasmail.org>

   * slist.h: Put "next" first.

2019-02-13  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, util.c, util.h: Added STATIC_CAST; using CONST_CAST more.

2019-02-08  Paul J. Lucas <paul@lucasmail.org>

   * set.c, set.out, set_options.out: Removed "options" from "set" output.

2019-02-05  Paul J. Lucas <paul@lucasmail.org>

   * options.c, util.h: Now using C99 VLAs instead of FREE_STRBUF_LATER.

2019-01-31  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Reworked CONFIGURATION FILE section: added that "set" can also be
     used.

2019-01-28  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h: Removed #include <stddef.h> -- not needed.

2018-12-14  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am, c_type.c, cdecl.c, color.h, errors.c, parser.y: Renamed
     diagnostics -> print.

2018-12-13  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS, configure.ac, cdecl.1, autocomplete.c, c_type.c, gibberish.c,
     lexer.l, options.c, options.h, parser.y, set.c, typedefs.h,
     test/Makefile.am, declare_digraphs_a9i.out,
     declare_digraphs_nfi_v-c++.out, declare_trigraphs_a9i.out,
     declare_trigraphs_nfi_v-c++.out, declare_trigraphs_o_circ_eq_i_rk.out,
     declare_trigraphs_o_circ_rcki_k.out, declare_trigraphs_o_pipe2_2rck_b.out,
     declare_trigraphs_o_pipe_2rck_k.out, declare_trigraphs_o_pipe_eq_i_rk.out,
     declare_trigraphs_o_tilde_k.out, explain_digraphs_a9i.out,
     explain_digraphs_nfi_v-c++.out, explain_nfi_v-c++.out,
     explain_trigraphs_a9i.out, explain_trigraphs_nfi_v-c++.out,
     explain_trigraphs_o_circ_eq_i_rk.out, explain_trigraphs_o_circ_rcki_k.out,
     explain_trigraphs_o_pipe2_2rck_b.out, explain_trigraphs_o_pipe_2rck_k.out,
     explain_trigraphs_o_pipe_eq_i_rk.out, explain_trigraphs_o_tilde_k.out,
     set.out, set_digraphs.out, set_nographs.out, set_options.out,
     set_trigraphs.out, cdecl-23.test, declare_digraphs_a9i.test,
     declare_digraphs_nfi_v-c++.test, declare_trigraphs_a9i.test,
     declare_trigraphs_nfi_v-c++.test, declare_trigraphs_o_circ_eq_i_rk.test,
     declare_trigraphs_o_circ_rcki_k.test,
     declare_trigraphs_o_pipe2_2rck_b.test,
     declare_trigraphs_o_pipe_2rck_k.test,
     declare_trigraphs_o_pipe_eq_i_rk.test, declare_trigraphs_o_tilde_k.test,
     explain_digraphs_a9i.test, explain_digraphs_nfi_v-c++.test,
     explain_nfi_v-c++-error.test, explain_nfi_v-c++.test,
     explain_trigraphs_a9i.test, explain_trigraphs_nfi_v-c++.test,
     explain_trigraphs_o_circ_eq_i_rk.test,
     explain_trigraphs_o_circ_rcki_k.test,
     explain_trigraphs_o_pipe2_2rck_b.test,
     explain_trigraphs_o_pipe_2rck_k.test,
     explain_trigraphs_o_pipe_eq_i_rk.test, explain_trigraphs_o_tilde_k.test,
     set_digraphs.test, set_nographs.test, set_trigraphs.test: Added support
     for digraphs & trigraphs.

2018-12-12  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: s/operator/L_OPERATOR/

2018-12-07  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am: s/misc.h/cdecl.h
   * configure.ac: Upped version to 5.1.
   * autocomplete.c, c_keyword.c, c_keyword.h, c_operator.h, c_type.c,
     errors.c, parser.y: s/ok_langs/lang_ids/
   * AUTHORS, cdecl.1, autocomplete.c, c_ast.c, c_ast.h, c_ast_util.c,
     c_ast_util.h, c_keyword.c, c_kind.c, c_kind.h, c_lang.c, c_lang.h,
     c_operator.c, c_operator.h, c_type.c, c_type.h, c_typedef.c, c_typedef.h,
     cdecl.c, color.h, debug.c, debug.h, diagnostics.c, diagnostics.h,
     english.c, errors.c, gibberish.c, help.c, lexer.h, lexer.l, literals.c,
     literals.h, options.c, options.h, parser.y, prompt.c, prompt.h,
     red_black.c, red_black.h, set.c, slist.c, slist.h, util.c, util.h,
     test/Makefile.am, cdecl--debug.out, cdecl-d.out, declare_jf_i.out,
     declare_o_less_eq_greater_2rck_a.out, help-c++.out, set.out,
     set_options.out, show_all.out, show_all_typedef.out, show_predefined.out,
     show_predefined_typedef.out, declare_jf_i.test, declare_ji.test,
     declare_o_less_eq_greater_2rck_a-c++17.test,
     declare_o_less_eq_greater_2rck_a.test: Added support for C18 and C++20.

2018-12-04  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l, test/Makefile.am, cdecl--no-typedefs.out, cdecl-t.out,
     cdecl--no-typedefs.test, cdecl-t.test: Fixed crash with -t option.

2018-12-03  Paul J. Lucas <paul@lucasmail.org>

   * Doxyfile: Changed vim comment.

2018-11-30  Paul J. Lucas <paul@lucasmail.org>

   * slist.c: Added asserts.
   * c_type.c: Simplification of is_long_int().
   * lib/Makefile.am, _Noreturn.h, limits.in.h, stdlib.in.h, unistd.in.h,
     errno_h.m4, gnulib-common.m4, gnulib-comp.m4, limits-h.m4, longlong.m4,
     stdarg.m4, stddef_h.m4, stdint.m4, unistd_h.m4: Updated GNUlib.
   * AUTHORS, cdecl.1, src/Makefile.am, autocomplete.c, c_ast.c, c_ast.h,
     c_ast_util.c, c_ast_util.h, c_keyword.c, c_kind.c, c_kind.h, c_lang.c,
     c_operator.c, c_operator.h, c_type.c, c_type.h, color.c, debug.c, debug.h,
     diagnostics.c, english.c, errors.c, gibberish.c, help.c, lexer.l,
     literals.c, literals.h, options.c, parser.y, prompt.c, slist.c, slist.h,
     typedefs.h, util.h, test/Makefile.am, cdecl--debug.out, cdecl-d.out,
     declare_mo_amper2_rck_b.out, declare_mo_amper_eq_i_rk.out,
     declare_mo_amper_i_rk.out, declare_mo_amper_pk.out,
     declare_mo_arrow_pk.out, declare_mo_arrow_star_i_rk.out,
     declare_mo_brackets_i_i.out, declare_mo_circ_eq_i_rk.out,
     declare_mo_comma_i_rk.out, declare_mo_exclam_b.out,
     declare_mo_exclam_eq_i_b.out, declare_mo_greater2_eq_i_rk.out,
     declare_mo_greater2_i_k.out, declare_mo_greater_eq_rcki_b.out,
     declare_mo_less2_eq_i_rk.out, declare_mo_less2_i_k.out,
     declare_mo_less_eq_rcki_b.out, declare_mo_minus_eq_i_rk.out,
     declare_mo_minus_i_k.out, declare_mo_percent_eq_i_rk.out,
     declare_mo_percent_i_k.out, declare_mo_pipe2_rck_b.out,
     declare_mo_pipe_eq_i_rk.out, declare_mo_pipe_i_rk.out,
     declare_mo_plus_eq_i_rk.out, declare_mo_plus_i_k.out,
     declare_mo_slash_eq_i_rk.out, declare_mo_star_eq_i_rk.out,
     declare_mo_star_i_rk.out, declare_mo_star_rk.out, declare_mo_tilde_k.out,
     declare_nmo_amper2_2rck_b.out, declare_nmo_amper_eq_rki_rk.out,
     declare_nmo_amper_rcki_k.out, declare_nmo_amper_rk_pk.out,
     declare_nmo_arrow_star_rki_rk.out, declare_nmo_circ_rcki_k.out,
     declare_nmo_comma_rki_rk.out, declare_nmo_exclam_eq_ki_b.out,
     declare_nmo_exclam_rck_b.out, declare_nmo_greater2_rcki_k.out,
     declare_nmo_greater_eq_rcki_b.out, declare_nmo_greater_rcki_b.out,
     declare_nmo_less2_eq_rki_rk.out, declare_nmo_less2_rcki_k.out,
     declare_nmo_less_eq_rcki_b.out, declare_nmo_less_rcki_b.out,
     declare_nmo_minus2_rki_rk.out, declare_nmo_minus_eq_rki_rk.out,
     declare_nmo_minus_rcki_k.out, declare_nmo_percent_eq_rki_rk.out,
     declare_nmo_percent_rcki_k.out, declare_nmo_pipe2_2rck_b.out,
     declare_nmo_pipe_eq_rki_rk.out, declare_nmo_plus2_rki_rk.out,
     declare_nmo_plus_eq_rki_rk.out, declare_nmo_plus_rcki_k.out,
     declare_nmo_slash_eq_rki_rk.out, declare_nmo_slash_rcki_k.out,
     declare_nmo_star_eq_rki_rk.out, declare_nmo_star_rck_k.out,
     declare_nmo_star_rcki_k.out, declare_nmo_tilde_rck_k.out,
     declare_o_amper2_2rck_b.out, declare_o_amper2_rck_b.out,
     declare_o_amper_2rck_k.out, declare_o_amper_eq_i_rk.out,
     declare_o_amper_eq_rki_rk.out, declare_o_amper_i_rk.out,
     declare_o_amper_pk.out, declare_o_amper_rcki_k.out,
     declare_o_arrow_star_i_rk.out, declare_o_arrow_star_rki_rk.out,
     declare_o_circ_eq_i_rk.out, declare_o_comma_rki_rk.out,
     declare_o_eq_i_b.out, declare_o_eq_ki_b.out, declare_o_exclam_b.out,
     declare_o_exclam_eq_i_b.out, declare_o_exclam_eq_ki_b.out,
     declare_o_exclam_rck_b.out, declare_o_greater2_eq_i_rk.out,
     declare_o_greater2_i_k.out, declare_o_greater2_rcki_k.out,
     declare_o_greater_eq_rcki_b.out, declare_o_less2_eq_i_rk.out,
     declare_o_less2_i_k.out, declare_o_less2_rcki_k.out,
     declare_o_less_eq_rcki_b.out, declare_o_minus_i_k.out,
     declare_o_parens_2i_v.out, declare_o_parens_3i_v.out,
     declare_o_parens_i_v.out, declare_o_parens_v.out,
     declare_o_percent_eq_i_rk.out, declare_o_percent_eq_rki_rk.out,
     declare_o_percent_i_k.out, declare_o_percent_rcki_k.out,
     declare_o_pipe2_2rck_b.out, declare_o_pipe2_rck_b.out,
     declare_o_pipe_eq_i_rk.out, declare_o_pipe_eq_rki_rk.out,
     declare_o_pipe_i_rk.out, declare_o_plus_i_k.out,
     declare_o_slash_eq_i_rk.out, declare_o_star_eq_i_rk.out,
     declare_o_star_eq_rki_rk.out, declare_o_star_i_rk.out,
     declare_o_star_rck_k.out, declare_o_star_rcki_k.out,
     declare_o_star_rk.out, declare_o_tilde_k.out, declare_o_tilde_rck_k.out,
     explain_0f_v-01.out, explain_0o_amper_rk_pk.out,
     explain_0o_minus2_i_rk.out, explain_0o_minus_rk_rk.out,
     explain_0o_plus2_i_rk.out, explain_0o_plus_rk_rk.out,
     explain_0o_star_rk_rk.out, explain_cf_v.out, explain_co_amper_rk_pk.out,
     explain_co_minus2_i_rk.out, explain_co_minus_rk_rk.out,
     explain_co_plus2_i_rk.out, explain_co_plus_rk_rk.out,
     explain_co_star_rk_rk.out, explain_co_tilde_k.out, explain_crf_v.out,
     explain_cvf_v.out, explain_o_amper2_2rck_b.out,
     explain_o_amper2_rck_b.out, explain_o_amper_2rck_k.out,
     explain_o_amper_eq_i_rk.out, explain_o_amper_eq_rki_rk.out,
     explain_o_amper_i_i.out, explain_o_amper_i_rk.out, explain_o_amper_pk.out,
     explain_o_amper_rcki_k.out, explain_o_amper_rk_pk.out,
     explain_o_arrow_pk.out, explain_o_arrow_star_i_rk.out,
     explain_o_arrow_star_rki_rk.out, explain_o_brackets_i_i.out,
     explain_o_circ_eq_i_rk.out, explain_o_circ_eq_rki_rk.out,
     explain_o_circ_rcki_k.out, explain_o_comma_i_rk.out,
     explain_o_comma_rcki_k.out, explain_o_comma_rki_rk.out,
     explain_o_eq_i_b.out, explain_o_eq_ki_b.out, explain_o_exclam_b.out,
     explain_o_exclam_eq_i_b.out, explain_o_exclam_eq_ki_b.out,
     explain_o_exclam_rck_b.out, explain_o_greater2_eq_i_rk.out,
     explain_o_greater2_eq_rki_rk.out, explain_o_greater2_i_k.out,
     explain_o_greater2_i_rk.out, explain_o_greater2_rcki_k.out,
     explain_o_greater2_rki_rk.out, explain_o_greater_eq_rcki_b.out,
     explain_o_greater_rcki_b.out, explain_o_less2_eq_i_rk.out,
     explain_o_less2_eq_rki_rk.out, explain_o_less2_i_k.out,
     explain_o_less2_i_rk.out, explain_o_less2_rcki_k.out,
     explain_o_less2_rki_rk.out, explain_o_less_eq_rcki_b.out,
     explain_o_less_rcki_b.out, explain_o_minus2_rki_rk.out,
     explain_o_minus_2rck_k.out, explain_o_minus_eq_i_rk.out,
     explain_o_minus_eq_rki_rk.out, explain_o_minus_i_k.out,
     explain_o_minus_rcki_k.out, explain_o_parens_2i_v.out,
     explain_o_parens_3i_v.out, explain_o_parens_i_v.out,
     explain_o_parens_v.out, explain_o_percent_2rck_k.out,
     explain_o_percent_eq_i_rk.out, explain_o_percent_eq_rki_rk.out,
     explain_o_percent_i_k.out, explain_o_percent_rcki_k.out,
     explain_o_pipe2_2rck_b.out, explain_o_pipe2_rck_b.out,
     explain_o_pipe_2rck_k.out, explain_o_pipe_eq_i_rk.out,
     explain_o_pipe_eq_rki_rk.out, explain_o_pipe_i_rk.out,
     explain_o_plus2_rki_rk.out, explain_o_plus_2rck_k.out,
     explain_o_plus_eq_i_rk.out, explain_o_plus_eq_rki_rk.out,
     explain_o_plus_i_k.out, explain_o_plus_rcki_k.out,
     explain_o_slash_2rck_k.out, explain_o_slash_eq_i_rk.out,
     explain_o_slash_eq_rki_rk.out, explain_o_slash_rcki_k.out,
     explain_o_star_2rck_k.out, explain_o_star_eq_i_rk.out,
     explain_o_star_eq_rki_rk.out, explain_o_star_i_rk.out,
     explain_o_star_rck_k.out, explain_o_star_rcki_k.out,
     explain_o_star_rk.out, explain_o_tilde_k.out, explain_o_tilde_rck_k.out,
     explain_oo_amper_rk_pk.out, explain_oo_minus2_i_rk.out,
     explain_oo_minus_rk_rk.out, explain_oo_plus2_i_rk.out,
     explain_oo_plus_rk_rk.out, explain_oo_star_rk_rk.out, explain_oyf.out,
     explain_rf_v.out, explain_ro_amper_rk_pk.out, explain_ro_minus2_i_rk.out,
     explain_ro_minus_rk_rk.out, explain_ro_plus2_i_rk.out,
     explain_ro_plus_rk_rk.out, explain_ro_star_rk_rk.out, explain_rrf_v.out,
     explain_rro_amper_rk_pk.out, explain_rro_minus2_i_rk.out,
     explain_rro_minus_rk_rk.out, explain_rro_plus2_i_rk.out,
     explain_rro_plus_rk_rk.out, explain_rro_star_rk_rk.out, explain_vf_v.out,
     explain_vo_amper_rk_pk.out, explain_vo_minus2_i_rk.out,
     explain_vo_minus_rk_rk.out, explain_vo_plus2_i_rk.out,
     explain_vo_plus_rk_rk.out, explain_vo_star_rk_rk.out, explain_voyf.out,
     explain_yf.out, explain_yo_amper_rk_pk.out, explain_yo_minus2_i_rk.out,
     explain_yo_minus_rk_rk.out, explain_yo_plus2_i_rk.out,
     explain_yo_plus_rk_rk.out, explain_yo_star_rk_rk.out, help-c++.out,
     help-c.out, show_user_typedef.out, run_test.sh, cast_a3i.test,
     cast_bii_d.test, cast_ci.test, cast_constant.test, cast_cpa3cpa5i.test,
     cast_cpa3pa5i.test, cast_cpa9ci.test, cast_cpa9i.test, cast_cpbv_pi.test,
     cast_cpcpi.test, cast_cpfv_pi.test, cast_cpi.test, cast_cppi.test,
     cast_cvpi.test, cast_f_i.test, cast_gi.test, cast_ll.test,
     cast_pa3cpa5i.test, cast_pa3pa5i.test, cast_pa9i.test, cast_pbv_pi.test,
     cast_pci.test, cast_pcpi.test, cast_pf_i-01.test, cast_pf_i-02.test,
     cast_pfii_i.test, cast_pfv_pi.test, cast_pfx_i.test, cast_pi.test,
     cast_pmi.test, cast_ppi.test, cast_sc.test, cast_si.test, cast_sll.test,
     cast_ti.test, cast_type.test, cast_u.test, cast_uc.test, cast_ui.test,
     cast_ull.test, cast_vcpi.test, cast_vpi.test, cdecl--debug.test,
     cdecl--no-semicolon.test, cdecl-d.test, cdecl-s.test, cdecl-xx.test,
     cl-cast_i.test, cl-declare_i.test, cl-explain_i.test,
     const_cast_pi-c.test, const_cast_pi.test, declare_0f_v-c.test,
     declare_0f_v.test, declare_a.test, declare_a3a5a7i.test,
     declare_a3a5i.test, declare_a3a5pfv_i.test, declare_a3a5pfv_pi.test,
     declare_a3a5pfv_ppa7a9i.test, declare_a3a5pfv_ppa7a9pc.test,
     declare_a3a5pfv_ppa7i.test, declare_a3a5pfv_ppa7pi.test,
     declare_a3a5pfv_ppi.test, declare_a3pfv_i.test, declare_a3ppfv_i.test,
     declare_a9cpi.test, declare_a9i.test, declare_a9pi.test,
     declare_ac3i.test, declare_af-c++.test, declare_af.test,
     declare_ai-01.test, declare_ai-02.test, declare_ai-c++11.test,
     declare_ai.test, declare_api-01.test, declare_as3i.test, declare_avi.test,
     declare_b-c89.test, declare_b.test, declare_b_ai.test, declare_b_f_i.test,
     declare_bii_d.test, declare_c-c.test, declare_c.test,
     declare_c16-c++03.test, declare_c16-c99.test, declare_c32-c++03.test,
     declare_c32-c99.test, declare_cdfcdi_i.test, declare_cdfi_i.test,
     declare_cdi.test, declare_cf_v-c.test, declare_cf_v.test,
     declare_ci-knr.test, declare_ci.test, declare_cnmf_v.test,
     declare_co_exclam_k_b.test, declare_config_u.test, declare_constant.test,
     declare_cpa3cpa5i.test, declare_cpa3pa5i.test, declare_cpa9ci.test,
     declare_cpa9i.test, declare_cpbv_pi.test, declare_cpcpi.test,
     declare_cpfv_pi.test, declare_cpi.test, declare_cpmi.test,
     declare_cppi.test, declare_crf_v.test, declare_cri.test,
     declare_crrf_v.test, declare_cu.test, declare_cvpi.test, declare_cz.test,
     declare_df_v.test, declare_dui.test, declare_e-knr.test, declare_e.test,
     declare_ea2i.test, declare_ec-c.test, declare_ec.test, declare_ek.test,
     declare_esf_v.test, declare_f.test, declare_f_ai.test, declare_f_f_i.test,
     declare_f_pi.test, declare_f_pmi.test, declare_facs3_v.test,
     declare_facv_v.test, declare_fas3_v.test, declare_fasc3_v.test,
     declare_fav_v.test, declare_fcce_v-01.test, declare_fcce_v-02.test,
     declare_fcce_v-03.test, declare_fcdi_i.test, declare_fcf.test,
     declare_fco_exclam_b.test, declare_fdi_v.test, declare_ff_v-c.test,
     declare_ff_v.test, declare_fg_v-c89.test, declare_fg_v.test,
     declare_fgi_v.test, declare_fid_v.test, declare_fii_v.test,
     declare_fiiv_v.test, declare_fipfi_v_pfi_v.test, declare_fiv_v.test,
     declare_fixiy_v.test, declare_fmf_v.test, declare_fmo_star_rk_rk.test,
     declare_fn.test, declare_fpc_pi.test, declare_fpci_pi.test,
     declare_fpfc_i_d.test, declare_frri_v.test, declare_fsi_v.test,
     declare_fti_v-01.test, declare_fti_v-02.test, declare_fui_v-01.test,
     declare_fui_v-02.test, declare_fv_pa3a5i.test, declare_fv_pa3a5pi.test,
     declare_fv_pa3i.test, declare_fv_pa3pi.test, declare_fv_v.test,
     declare_fvx_v.test, declare_fx_pi.test, declare_gf_v.test,
     declare_gi.test, declare_hb.test, declare_hc.test, declare_hc16.test,
     declare_hc32.test, declare_hd.test, declare_hf.test, declare_hl.test,
     declare_hll.test, declare_hv.test, declare_hw.test, declare_if_v.test,
     declare_ii-c++.test, declare_ii.test, declare_k.test, declare_lb.test,
     declare_lc.test, declare_lc16.test, declare_lc32.test,
     declare_ld-knr.test, declare_ld.test, declare_lf-c.test, declare_lf.test,
     declare_ll-c89.test, declare_ll-knr.test, declare_ll.test,
     declare_lll.test, declare_lv.test, declare_lw.test, declare_md.test,
     declare_mf.test, declare_mi.test, declare_mo_amper2_rck_b.test,
     declare_mo_amper_eq_i_rk.test, declare_mo_amper_i_rk.test,
     declare_mo_amper_pk.test, declare_mo_arrow_i.test,
     declare_mo_arrow_pk.test, declare_mo_arrow_star_i_rk.test,
     declare_mo_brackets_i_i.test, declare_mo_circ_eq_i_rk.test,
     declare_mo_comma_i_rk.test, declare_mo_exclam_b.test,
     declare_mo_exclam_eq_i_b.test, declare_mo_greater2_eq_i_rk.test,
     declare_mo_greater2_i_k.test, declare_mo_greater_eq_rcki_b.test,
     declare_mo_less2_eq_i_rk.test, declare_mo_less2_i_k.test,
     declare_mo_less_eq_rcki_b.test, declare_mo_minus_eq_i_rk.test,
     declare_mo_minus_i_k.test, declare_mo_percent_eq_i_rk.test,
     declare_mo_percent_i_k.test, declare_mo_pipe2_rck_b.test,
     declare_mo_pipe_eq_i_rk.test, declare_mo_pipe_i_rk.test,
     declare_mo_plus_eq_i_rk.test, declare_mo_plus_i_k.test,
     declare_mo_slash_eq_i_rk.test, declare_mo_star_eq_i_rk.test,
     declare_mo_star_i_rk.test, declare_mo_star_rk.test,
     declare_mo_tilde_k.test, declare_n.test, declare_nfi_v-01-c++.test,
     declare_nfi_v-01.test, declare_nfi_v-02-c++.test, declare_nfi_v-02.test,
     declare_nfi_v-03-c++.test, declare_nfi_v-03.test, declare_ni.test,
     declare_nmo_amper2_2rck_b.test, declare_nmo_amper_eq_rki_rk.test,
     declare_nmo_amper_i_i.test, declare_nmo_amper_rcki_k.test,
     declare_nmo_amper_rk_pk.test, declare_nmo_arrow_rk_pk.test,
     declare_nmo_arrow_star_rki_rk.test, declare_nmo_brackets_rcki_v.test,
     declare_nmo_circ_rcki_k.test, declare_nmo_comma_rki_rk.test,
     declare_nmo_eq_rki_rk.test, declare_nmo_exclam_eq_ki_b.test,
     declare_nmo_exclam_rck_b.test, declare_nmo_greater2_rcki_k.test,
     declare_nmo_greater_eq_rcki_b.test, declare_nmo_greater_rcki_b.test,
     declare_nmo_less2_eq_rki_rk.test, declare_nmo_less2_rcki_k.test,
     declare_nmo_less_eq_rcki_b.test, declare_nmo_less_rcki_b.test,
     declare_nmo_minus2_rki_rk.test, declare_nmo_minus_eq_rki_rk.test,
     declare_nmo_minus_rcki_k.test, declare_nmo_parens_rck_v.test,
     declare_nmo_percent_eq_rki_rk.test, declare_nmo_percent_rcki_k.test,
     declare_nmo_pipe2_2rck_b.test, declare_nmo_pipe_eq_rki_rk.test,
     declare_nmo_plus2_rki_rk.test, declare_nmo_plus_eq_rki_rk.test,
     declare_nmo_plus_rcki_k.test, declare_nmo_slash_eq_rki_rk.test,
     declare_nmo_slash_rcki_k.test, declare_nmo_star_eq_rki_rk.test,
     declare_nmo_star_rck_k.test, declare_nmo_star_rcki_k.test,
     declare_nmo_tilde_rck_k.test, declare_o_amper2_2rck_b.test,
     declare_o_amper2_rck_b.test, declare_o_amper_2rck_k.test,
     declare_o_amper_eq_i_rk.test, declare_o_amper_eq_rki_rk.test,
     declare_o_amper_i_rk.test, declare_o_amper_pk.test,
     declare_o_amper_rcki_k.test, declare_o_arrow_i.test,
     declare_o_arrow_rk_pk.test, declare_o_arrow_star_i_rk.test,
     declare_o_arrow_star_rki_rk.test, declare_o_brackets_2i_i.test,
     declare_o_circ_eq_i_rk.test, declare_o_colon2_rk_rk.test,
     declare_o_comma_rki_rk.test, declare_o_dot_k.test,
     declare_o_dot_star_rk_rk.test, declare_o_eq_i_b.test,
     declare_o_eq_ki_b.test, declare_o_exclam_2i.test, declare_o_exclam_b.test,
     declare_o_exclam_eq_i_b.test, declare_o_exclam_eq_ki_b.test,
     declare_o_exclam_rck_b.test, declare_o_greater2_eq_i_rk.test,
     declare_o_greater2_i_k.test, declare_o_greater2_rcki_k.test,
     declare_o_greater_eq_rcki_b.test, declare_o_less2_eq_i_rk.test,
     declare_o_less2_i_k.test, declare_o_less2_rcki_k.test,
     declare_o_less_eq_rcki_b.test, declare_o_minus2_d_rk.test,
     declare_o_minus2_rkd_rk.test, declare_o_minus_i_k.test,
     declare_o_minus_ie_i.test, declare_o_oexclam_k_b.test,
     declare_o_parens_2i_v.test, declare_o_parens_3i_v.test,
     declare_o_parens_i_v.test, declare_o_parens_v.test,
     declare_o_percent_eq_i_rk.test, declare_o_percent_eq_rki_rk.test,
     declare_o_percent_i_k.test, declare_o_percent_rcki_k.test,
     declare_o_pipe2_2rck_b.test, declare_o_pipe2_rck_b.test,
     declare_o_pipe_eq_i_rk.test, declare_o_pipe_eq_rki_rk.test,
     declare_o_pipe_i_rk.test, declare_o_plus2_d_rk.test,
     declare_o_plus2_rkd_rk.test, declare_o_plus_i_k.test,
     declare_o_plus_ie_i.test, declare_o_qmark_colon_k2i_i.test,
     declare_o_slash_eq_i_rk.test, declare_o_star_eq_i_rk.test,
     declare_o_star_eq_rki_rk.test, declare_o_star_i_rk.test,
     declare_o_star_rck_k.test, declare_o_star_rcki_k.test,
     declare_o_star_rk.test, declare_o_tilde_k.test,
     declare_o_tilde_rck_k.test, declare_oyf.test, declare_pa3cpa5i.test,
     declare_pa3pa5i.test, declare_pa9i.test, declare_pai-01.test,
     declare_pbv_pi.test, declare_pcpi.test, declare_pfv_pi.test,
     declare_pfv_ri.test, declare_pfx_i.test, declare_pi.test, declare_pk.test,
     declare_pmci.test, declare_pmf_i.test, declare_pmf_pc.test,
     declare_pmi.test, declare_pmri.test, declare_ppi.test, declare_pri.test,
     declare_pv-knr.test, declare_ra3i.test, declare_rci.test,
     declare_rcpi.test, declare_ref.test, declare_rf_v-01.test,
     declare_rf_v-c.test, declare_rf_v.test, declare_rgi.test, declare_ri.test,
     declare_ro_exclam_k_b.test, declare_rpi.test, declare_rrf_v.test,
     declare_rro_exclam_k_b.test, declare_rv.test, declare_sa2i.test,
     declare_sb.test, declare_sc-knr.test, declare_sc.test, declare_sc16.test,
     declare_sc32.test, declare_sf_v.test, declare_si-knr.test,
     declare_si.test, declare_sif_v.test, declare_sl-knr.test,
     declare_sll.test, declare_smi.test, declare_sv.test, declare_sw.test,
     declare_sxi.test, declare_t.test, declare_tf_i-01.test,
     declare_tf_i-02.test, declare_ti.test, declare_tpfc_i.test,
     declare_type.test, declare_u.test, declare_ub.test, declare_uc.test,
     declare_uc16.test, declare_uc32.test, declare_ud.test, declare_uf.test,
     declare_uf_v-01.test, declare_uf_v-02.test, declare_ui-01.test,
     declare_ui-02.test, declare_ui.test, declare_ull.test, declare_uv.test,
     declare_uw.test, declare_uz.test, declare_v.test, declare_vcpi.test,
     declare_vf_v-c.test, declare_vf_v.test, declare_vi-knr.test,
     declare_vo_exclam_k_b.test, declare_voyf.test, declare_vpi.test,
     declare_vri.test, declare_w-c89.test, declare_w.test, declare_xf.test,
     declare_xi-c.test, declare_xi.test, declare_yf.test,
     declare_yo_exclam_k_b.test, declare_z.test, declare_zd.test,
     declare_zf.test, declare_zz.test, define_ai.test,
     define_c_int_least32_t.test, define_ei.test, define_gi.test,
     define_i.test, define_i_declare_i.test, define_i_explain_i.test,
     define_i_int_least32_t.test, define_si.test, dynamic_cast_pc-c.test,
     dynamic_cast_pc.test, explain_0f_v-01.test, explain_0f_v-02.test,
     explain_0f_v-c.test, explain_0o_amper_rk_pk.test,
     explain_0o_minus2_i_rk.test, explain_0o_minus_rk_rk.test,
     explain_0o_plus2_i_rk.test, explain_0o_plus_rk_rk.test,
     explain_0o_star_rk_rk.test, explain_a.test, explain_a012i.test,
     explain_a0b10i.test, explain_a0xAi-01.test, explain_a0xai-02.test,
     explain_a3a5a7i.test, explain_a3a5i.test, explain_a3a5pfv_i.test,
     explain_a3a5pfv_pi.test, explain_a3a5pfv_ppa7a9i.test,
     explain_a3a5pfv_ppa7a9pc.test, explain_a3a5pfv_ppa7i.test,
     explain_a3a5pfv_ppa7pi.test, explain_a3a5pfv_ppi.test,
     explain_a3pfv_i.test, explain_a3ppfv_i.test, explain_a9cpi.test,
     explain_a9i.test, explain_a9pi.test, explain_ac9i.test, explain_af.test,
     explain_ai-01.test, explain_ai-02.test, explain_ai-c++11.test,
     explain_ai.test, explain_api-01.test, explain_api-02.test,
     explain_as9i.test, explain_b-c89.test, explain_b.test, explain_b_ai.test,
     explain_bii_d.test, explain_c-c.test, explain_c.test,
     explain_c16-c++03.test, explain_c16-c99.test, explain_c32-c++03.test,
     explain_c32-c99.test, explain_cast_a3a5a7i.test, explain_cast_a3a5i.test,
     explain_cast_a3i.test, explain_cast_ai.test, explain_cast_ci.test,
     explain_cast_cpa3cpa5i.test, explain_cast_cpa3pa5i.test,
     explain_cast_cpa9ci.test, explain_cast_cpa9i.test,
     explain_cast_cpbv_pi.test, explain_cast_cpcpi.test,
     explain_cast_cpfv_pi.test, explain_cast_cpi.test, explain_cast_cppi.test,
     explain_cast_cvpi.test, explain_cast_ei.test, explain_cast_gi.test,
     explain_cast_ic.test, explain_cast_ll.test, explain_cast_lll.test,
     explain_cast_pa3a5i.test, explain_cast_pa3cpa5i.test,
     explain_cast_pa3pa5i.test, explain_cast_pa9i.test,
     explain_cast_pbv_pi.test, explain_cast_pci.test, explain_cast_pcpi.test,
     explain_cast_pf_i.test, explain_cast_pfpci_i.test,
     explain_cast_pfpi_i.test, explain_cast_pfv_pi.test, explain_cast_pi.test,
     explain_cast_pic.test, explain_cast_pmi.test, explain_cast_ppi.test,
     explain_cast_ri.test, explain_cast_rpi.test, explain_cast_si.test,
     explain_cast_ti.test, explain_cast_ull.test, explain_cast_vcpi.test,
     explain_cast_vpi.test, explain_cdfcdi_i.test, explain_cdfi_i.test,
     explain_cdi.test, explain_cf_v-c.test, explain_cf_v.test,
     explain_ci-knr.test, explain_ci.test, explain_ck.test,
     explain_co_amper_rk_pk.test, explain_co_exclam_k_b.test,
     explain_co_minus2_i_rk.test, explain_co_minus_rk_rk.test,
     explain_co_plus2_i_rk.test, explain_co_plus_rk_rk.test,
     explain_co_star_rk_rk.test, explain_co_tilde_k.test,
     explain_config_u.test, explain_const_cast_pi-c.test,
     explain_const_cast_pi.test, explain_cpa3cpa5i.test, explain_cpa3pa5i.test,
     explain_cpa9ci.test, explain_cpa9i.test, explain_cpbv_pi.test,
     explain_cpcpi.test, explain_cpfv_pi.test, explain_cpi.test,
     explain_cpmci.test, explain_cpmi.test, explain_cppi.test,
     explain_crf_v.test, explain_cs.test, explain_cu.test, explain_cvf_v.test,
     explain_cvpi.test, explain_df_v.test, explain_di.test,
     explain_dui-01.test, explain_dui-02.test, explain_dynamic_cast_pc-c.test,
     explain_dynamic_cast_pc.test, explain_e-knr.test, explain_e.test,
     explain_ea2i.test, explain_ec.test, explain_ek.test, explain_esf_v.test,
     explain_f__pf__v.test, explain_f__pv.test, explain_f__v-c++03.test,
     explain_f__v.test, explain_f_ai.test, explain_f_cpmi.test,
     explain_f_pi.test, explain_f_pmi.test, explain_f_v__v.test,
     explain_fa_v.test, explain_fac3_v-c++.test, explain_fac_v.test,
     explain_facs3_v.test, explain_facv_v.test, explain_fas3_v-c++.test,
     explain_fas3_v.test, explain_fasc3_v.test, explain_fasv_v.test,
     explain_fav_v-c++.test, explain_fav_v.test, explain_fcce_v.test,
     explain_fcdi_i.test, explain_fdi_v.test, explain_fe_v.test,
     explain_fecc_v.test, explain_fee_v.test, explain_fev_v.test,
     explain_ff_v-c.test, explain_ff_v.test, explain_fg_v-c89.test,
     explain_fg_v.test, explain_fgi_v.test, explain_fid_v.test,
     explain_fiiv_v.test, explain_fipfi_v_pfi_v.test, explain_fiv_v.test,
     explain_fixiy_v.test, explain_fn.test, explain_fpc_pi.test,
     explain_fpci_pi.test, explain_fpfc_i_d.test, explain_frri_v-c++03.test,
     explain_frri_v.test, explain_fsf_v.test, explain_fsi_v.test,
     explain_fti_v.test, explain_fui_v.test, explain_fv_pa3a5i.test,
     explain_fv_pa3a5pi.test, explain_fv_pa3i.test, explain_fv_pa3pi.test,
     explain_fv_pi.test, explain_fv_v.test, explain_fve_v.test,
     explain_fvi_v.test, explain_fvv_v.test, explain_fvx_v.test,
     explain_fx_pi.test, explain_fx_v.test, explain_gf_v.test, explain_gi.test,
     explain_gk.test, explain_hb.test, explain_hc.test, explain_hc16.test,
     explain_hc32.test, explain_hd.test, explain_hf.test, explain_hl.test,
     explain_hll.test, explain_hv.test, explain_hw.test, explain_ic.test,
     explain_if_v.test, explain_ig.test, explain_ii-c++.test, explain_ii.test,
     explain_is.test, explain_it.test, explain_k.test, explain_kc.test,
     explain_keywords.test, explain_lb.test, explain_lc.test,
     explain_lc16.test, explain_lc32.test, explain_ld-knr.test,
     explain_ld.test, explain_lf-c.test, explain_lf.test, explain_ll-c89.test,
     explain_ll-knr.test, explain_ll.test, explain_lll.test, explain_lv.test,
     explain_lw.test, explain_md.test, explain_mf.test, explain_mi.test,
     explain_n.test, explain_nfi_c.test, explain_nfi_v-c++.test,
     explain_nfi_v.test, explain_ni.test, explain_o_amper2_2rck_b.test,
     explain_o_amper2_rck_b.test, explain_o_amper_2rck_k.test,
     explain_o_amper_eq_i_rk.test, explain_o_amper_eq_rki_rk.test,
     explain_o_amper_i_i.test, explain_o_amper_i_rk.test,
     explain_o_amper_pk.test, explain_o_amper_rcki_k.test,
     explain_o_amper_rk_pk.test, explain_o_arrow_i.test,
     explain_o_arrow_pk.test, explain_o_arrow_star_i_rk.test,
     explain_o_arrow_star_rki_rk.test, explain_o_brackets_2i_i.test,
     explain_o_brackets_i_i.test, explain_o_circ_eq_i_rk.test,
     explain_o_circ_eq_rki_rk.test, explain_o_circ_rcki_k.test,
     explain_o_comma_i_rk.test, explain_o_comma_rcki_k.test,
     explain_o_comma_rki_rk.test, explain_o_eq_i_b.test,
     explain_o_eq_ki_b.test, explain_o_exclam_2i.test, explain_o_exclam_b.test,
     explain_o_exclam_eq_i_b.test, explain_o_exclam_eq_ki_b.test,
     explain_o_exclam_rck_b.test, explain_o_greater2_eq_i_rk.test,
     explain_o_greater2_eq_rki_rk.test, explain_o_greater2_i_k.test,
     explain_o_greater2_i_rk.test, explain_o_greater2_rcki_k.test,
     explain_o_greater2_rki_rk.test, explain_o_greater_eq_rcki_b.test,
     explain_o_greater_rcki_b.test, explain_o_less2_eq_i_rk.test,
     explain_o_less2_eq_rki_rk.test, explain_o_less2_i_k.test,
     explain_o_less2_i_rk.test, explain_o_less2_rcki_k.test,
     explain_o_less2_rki_rk.test, explain_o_less_eq_rcki_b.test,
     explain_o_less_rcki_b.test, explain_o_minus2_d_rk.test,
     explain_o_minus2_rkd_rk.test, explain_o_minus2_rki_rk.test,
     explain_o_minus_2rck_k.test, explain_o_minus_eq_i_rk.test,
     explain_o_minus_eq_rki_rk.test, explain_o_minus_i_k.test,
     explain_o_minus_ie_i.test, explain_o_minus_rcki_k.test,
     explain_o_oexclam_k_b.test, explain_o_parens_2i_v.test,
     explain_o_parens_3i_v.test, explain_o_parens_i_v.test,
     explain_o_parens_v.test, explain_o_percent_2rck_k.test,
     explain_o_percent_eq_i_rk.test, explain_o_percent_eq_rki_rk.test,
     explain_o_percent_i_k.test, explain_o_percent_rcki_k.test,
     explain_o_pipe2_2rck_b.test, explain_o_pipe2_rck_b.test,
     explain_o_pipe_2rck_k.test, explain_o_pipe_eq_i_rk.test,
     explain_o_pipe_eq_rki_rk.test, explain_o_pipe_i_rk.test,
     explain_o_plus2_d_rk.test, explain_o_plus2_rkd_rk.test,
     explain_o_plus2_rki_rk.test, explain_o_plus_2rck_k.test,
     explain_o_plus_eq_i_rk.test, explain_o_plus_eq_rki_rk.test,
     explain_o_plus_i_k.test, explain_o_plus_ie_i.test,
     explain_o_plus_rcki_k.test, explain_o_qmark_colon_k2i_i.test,
     explain_o_slash_2rck_k.test, explain_o_slash_eq_i_rk.test,
     explain_o_slash_eq_rki_rk.test, explain_o_slash_rcki_k.test,
     explain_o_star_2rck_k.test, explain_o_star_eq_i_rk.test,
     explain_o_star_eq_rki_rk.test, explain_o_star_i_rk.test,
     explain_o_star_rck_k.test, explain_o_star_rcki_k.test,
     explain_o_star_rk.test, explain_o_tilde_k.test,
     explain_o_tilde_rck_k.test, explain_oi.test, explain_oo_amper_rk_pk.test,
     explain_oo_minus2_i_rk.test, explain_oo_minus_rk_rk.test,
     explain_oo_plus2_i_rk.test, explain_oo_plus_rk_rk.test,
     explain_oo_star_rk_rk.test, explain_oyf.test, explain_pa3a5i.test,
     explain_pa3cpa5i.test, explain_pa3pa5i.test, explain_pa9i.test,
     explain_pai-01.test, explain_pai-02.test, explain_pbv_pi.test,
     explain_pcpi.test, explain_pfv_pi.test, explain_pi.test,
     explain_pmf_i.test, explain_pmf_pc.test, explain_pmfii_pk.test,
     explain_pmgi.test, explain_pmi-c.test, explain_pmi.test,
     explain_pmri.test, explain_ppi.test, explain_pri.test, explain_prri.test,
     explain_pv-knr.test, explain_ra3i.test,
     explain_reinterpret_cast_pv-c.test, explain_reinterpret_cast_pv.test,
     explain_rf_v-01.test, explain_rf_v-c++03.test, explain_rf_v.test,
     explain_rgi.test, explain_ri-c.test, explain_ri.test,
     explain_ro_amper_rk_pk.test, explain_ro_exclam_k_b.test,
     explain_ro_minus2_i_rk.test, explain_ro_minus_rk_rk.test,
     explain_ro_plus2_i_rk.test, explain_ro_plus_rk_rk.test,
     explain_ro_star_rk_rk.test, explain_rpi.test, explain_rrf_v-c++03.test,
     explain_rrf_v.test, explain_rro_amper_rk_pk.test,
     explain_rro_exclam_k_b.test, explain_rro_minus2_i_rk.test,
     explain_rro_minus_rk_rk.test, explain_rro_plus2_i_rk.test,
     explain_rro_plus_rk_rk.test, explain_rro_star_rk_rk.test, explain_rv.test,
     explain_sa2i.test, explain_sb.test, explain_sc-knr.test, explain_sc.test,
     explain_sc16.test, explain_sc32.test, explain_sf_v.test,
     explain_si-knr.test, explain_si.test, explain_sl-knr.test,
     explain_smi.test, explain_srf_v.test, explain_srrf_v.test,
     explain_static_cast_i-c.test, explain_static_cast_i.test, explain_sv.test,
     explain_sw.test, explain_sxi.test, explain_tf_v.test, explain_ti.test,
     explain_tpfc_i.test, explain_type_i.test, explain_ub.test,
     explain_uc.test, explain_uc16.test, explain_uc32.test, explain_ud.test,
     explain_uf.test, explain_uf_v.test, explain_ui.test, explain_ull.test,
     explain_unknown_attribute.test, explain_using_a3i.test,
     explain_using_pfi_v-c.test, explain_using_pfi_v.test, explain_uv.test,
     explain_uw.test, explain_v.test, explain_vcpi.test, explain_vf_v-c.test,
     explain_vf_v.test, explain_vi-knr.test, explain_vo_amper_rk_pk.test,
     explain_vo_exclam_k_b.test, explain_vo_minus2_i_rk.test,
     explain_vo_minus_rk_rk.test, explain_vo_plus2_i_rk.test,
     explain_vo_plus_rk_rk.test, explain_vo_star_rk_rk.test,
     explain_voyf-c.test, explain_voyf.test, explain_vpi.test,
     explain_w-c89.test, explain_w.test, explain_xf_v.test, explain_xff_v.test,
     explain_xi-c.test, explain_xi.test, explain_xtf_v.test, explain_yf.test,
     explain_yo_amper_rk_pk.test, explain_yo_exclam_k_b.test,
     explain_yo_minus2_i_rk.test, explain_yo_minus_rk_rk.test,
     explain_yo_plus2_i_rk.test, explain_yo_plus_rk_rk.test,
     explain_yo_star_rk_rk.test, explain_z.test, explain_zd.test,
     explain_zf.test, explain_zz.test, file-cast_i.test, file-cast_x.test,
     file-declare_i.test, file-declare_x.test, file-explain_i.test,
     file-explain_x.test, help-c++.test, help-c.test,
     reinterpret_cast_pv-c.test, reinterpret_cast_pv.test, set.test,
     set_c++.test, set_c++03.test, set_c++11.test, set_c++98.test, set_c.test,
     set_c11.test, set_c89.test, set_c99.test, set_cknr.test, set_debug.test,
     set_knr.test, set_knrc.test, set_nodebug.test, set_noprompt.test,
     set_nosemicolon.test, set_noyydebug.test, set_options.test,
     set_prompt.test, set_semicolon.test, set_yydebug.test, show_all.test,
     show_all_typedef.test, show_foo.test, show_int8_t.test,
     show_int8_t_typedef.test, show_predefined.test,
     show_predefined_typedef.test, show_user.test, show_user_typedef.test,
     static_cast_i-c.test, static_cast_i.test, typedef_ai.test,
     typedef_c_int_least32_t.test, typedef_ei.test, typedef_fi_v_show_f.test,
     typedef_gi.test, typedef_i.test, typedef_i_declare_i.test,
     typedef_i_explain_i.test, typedef_i_int_least32_t.test, typedef_si.test,
     using_ai.test, using_c_int_least32_t.test, using_config_i.test,
     using_ei.test, using_fi_v_show_f.test, using_gi.test, using_i-c.test,
     using_i.test, using_i_declare_i.test, using_i_explain_i.test,
     using_i_int_least32_t.test, using_si.test: Added all C/C++ keywords. Now
     supporting C++ overloaded operators. Fixed const/volatile reference. Added
     member/non-member to functions. Fixed friend
     const/volatile/override/final/virtual/reference functions.

2018-11-21  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Combined pointer_decl_english and pointer_to_member_decl_english
     to produce better error messages.
   * configure.ac, c_keyword.c, c_keyword.h, c_lang.c, c_lang.h, cdecl.c,
     errors.c, lexer.l, literals.c, literals.h, parser.y, test/Makefile.am,
     declare_pk.test: Added all remaining C/C++ keywords.

2018-11-19  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Fixed use of lang.

2018-11-18  Paul J. Lucas <paul@lucasmail.org>

   * options.c: Now using strcpy_end() more.

2018-11-17  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, errors.c, test/Makefile.am, declare_cri.test,
     declare_vri.test: Fixed const/volatile reference.

2018-11-01  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, c_ast_util.c, c_ast_util.h, c_keyword.h, c_type.h,
     debug.c, debug.h, english.c, errors.c, gibberish.c, lexer.l, parser.y:
     s/type/type_id/
   * c_ast.h, c_ast_util.c, c_ast_util.h, c_keyword.h, c_type.c, c_type.h,
     debug.c, debug.h, english.c, errors.c, gibberish.c, parser.y: Type
     renaming.
   * c_lang.c, c_lang.h, options.c, parser.y, typedefs.h: Type renaming.
   * autocomplete.c, c_keyword.h, c_lang.c, c_lang.h, c_type.c, c_type.h,
     c_typedef.c, errors.c, options.c, options.h, set.c:
     s/c_lang_t/c_lang_id_t/

2018-10-26  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c: Now ultimately always calling parse_string() to fix assert
     failure in diagnostics.c when there's an error in a command with a ';'.

2018-10-16  Paul J. Lucas <paul@lucasmail.org>

   * README-blocks.txt: Added "(and later)".

2018-10-15  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.c, errors.c, gibberish.c: More explicit bitwise expressions.

2018-10-10  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, lexer.l: Fixed printing of ^.
   * cdecl.1: s/given/shown/

2018-10-08  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Removed L_TYPES.
   * configure.ac, cdecl.1, help.c, literals.c, literals.h, parser.y,
     test/Makefile.am, help-c++.out, help-c.out, show_all_typedef.out,
     show_int8_t_typedef.out, show_predefined_typedef.out,
     show_user_typedef.out, show_all.test, show_all_typedef.test,
     show_int8_t_typedef.test, show_predefined.test,
     show_predefined_typedef.test, show_user.test, show_user_typedef.test: Can
     now show types in gibberish.

2018-09-11  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, cdecl.1, c_typedef.c, cdecl--debug.out, cdecl-d.out,
     show_all_types.out, show_predefined_types.out: Added more predefined
     types.

2018-08-27  Paul J. Lucas <paul@lucasmail.org>

   * color.c, color.h: Made COLORS_DEFAULT a C constant.

2018-08-16  Paul J. Lucas <paul@lucasmail.org>

   * c_typedef.c: Suppressing warning when asserts not compiled in.
   * cdecl.1: s/eithter/either/

2018-07-03  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am: Added --report=all option.

2018-07-02  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Don't need DUMP_NAME() in typedef_type_ast_c.
   * cdecl.1: Added "using" to what is supported for C++11.
   * src/Makefile.am: Added rule to make parser.output.

2018-07-01  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, parser.y, test/Makefile.am, cdecl--debug.out, cdecl-d.out,
     explain_fac_v.out, explain_using_a3i.out, explain_fac_v.test,
     explain_using_a3i.test: Fixed parsing of unnamed function array arguments,
     e.g., void f(char[]).
   * parser.y: Fixed arg_list_c debug printing for arc_c.
   * parser.y: Additional use of c_ast_set_name().
   * parser.y: show NAME now includes "using" when C++11 or later.
   * parser.y: Fixed keyword order in error message when defining an existing
     type name with a different type.
   * parser.y: Made comments for parser_cleanup() and parse_cleanup() more
     explicit.

2018-06-30  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, parser.y, test/Makefile.am, explain_using_pfi_v.out,
     explain_using_pfi_v-c.test, explain_using_pfi_v.test: Added support for
     explaining C++11's using declarations.
   * explain_it.test: Fixed test.
   * errors.c, parser.y: Put keywords in quotes in error messages.
   * cdecl.1: Now using .BR more consistently.
   * errors.c, parser.y: Now using "not supported in" rather than "illegal in".
   * c_lang.h, errors.c, parser.y, set.c: Added C_LANG_NAME().
   * c_ast.c, c_ast.h, c_ast_util.c, c_typedef.c, c_typedef.h, debug.c,
     english.c, gibberish.c, parser.y: Removed c_typedef::type_name -- not
     needed.

2018-06-29  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS, configure.ac, cdecl.1, autocomplete.c, c_ast_util.c, c_keyword.c,
     cdecl.c, help.c, literals.c, literals.h, misc.h, parser.y, typedefs.h,
     test/Makefile.am, config_using_i.cdeclrc, help-c++.out, help-c.out,
     using_config_i.out, using_fi_v_show_f.out, using_i.out,
     using_i_declare_i.out, using_i_explain_i.out, using_i_int_least32_t.out,
     using_ai.test, using_c_int_least32_t.test, using_config_i.test,
     using_ei.test, using_fi_v_show_f.test, using_gi.test, using_i-c.test,
     using_i.test, using_i_declare_i.test, using_i_explain_i.test,
     using_i_int_least32_t.test, using_si.test: Added support for C++11 using
     declarations.

2018-05-19  Paul J. Lucas <paul@lucasmail.org>

   * lib/Makefile.am, arg-nonnull.h, c++defs.h, errno.in.h, getdelim.c,
     getline.c, getopt-cdefs.in.h, getopt-core.h, getopt-ext.h,
     getopt-pfx-core.h, getopt-pfx-ext.h, getopt.c, getopt.in.h, getopt1.c,
     getopt_int.h, gettext.h, limits.in.h, stdarg.in.h, stdbool.in.h,
     stddef.in.h, stdint.in.h, stdio.in.h, stdlib.in.h, string.in.h, strsep.c,
     sys_types.in.h, sysexits.in.h, unistd.in.h, warn-on-use.h, 00gnulib.m4,
     absolute-header.m4, errno_h.m4, extensions.m4, extern-inline.m4,
     getdelim.m4, getline.m4, getopt.m4, gnulib-cache.m4, gnulib-common.m4,
     gnulib-comp.m4, gnulib-tool.m4, include_next.m4, limits-h.m4, longlong.m4,
     multiarch.m4, nocrash.m4, off_t.m4, onceonly.m4, ssize_t.m4, stdarg.m4,
     stdbool.m4, stddef_h.m4, stdint.m4, stdio_h.m4, stdlib_h.m4, string_h.m4,
     strsep.m4, sys_types_h.m4, sysexits.m4, unistd_h.m4, warn-on-use.m4,
     wchar_t.m4, wint_t.m4: Updated GNUlib.

2018-04-07  Paul J. Lucas <paul@lucasmail.org>

   * run_test.sh: Made color output match standard test-driver.

2018-03-21  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Replaced non-bool use of ! with explicit checks.

2018-03-18  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Changed version to 4.4.3.

2018-03-12  Paul J. Lucas <paul@lucasmail.org>

   * red_black.c: RB_BLACK is now int 0.
   * red_black.c: Now initializing node->parent to NIL.

2018-02-13  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added explicit != NULL.

2018-01-31  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, diagnostics.c, util.c, util.h:
     s/WITH_TERM_COLUMNS/ENABLE_TERM_COLUMNS/

2018-01-25  Paul J. Lucas <paul@lucasmail.org>

   * util.c: Added explicit != NULL.

2018-01-22  Paul J. Lucas <paul@lucasmail.org>

   * c_ast_util.h: Fixed comment.

2018-01-18  Paul J. Lucas <paul@lucasmail.org>

   * slist.c: Now actually deleting nodes in slist_free().

2017-11-24  Paul J. Lucas <paul@lucasmail.org>

   * options.c: Added != NULL.
   * util.c: Removed blank line.

2017-11-22  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Made referencing commands consistently bold.

2017-11-11  Paul J. Lucas <paul@lucasmail.org>

   * ax_append_flag.m4, ax_check_compile_flag.m4: Updated ax M$ macros.

2017-11-08  Paul J. Lucas <paul@lucasmail.org>

   * Doxyfile: Made parser.[ch] order consistent with literals.[ch].

2017-11-07  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Now properly freeing qualifier_stack.
   * util.c: Now using slist for free_later().

2017-11-04  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, parser.y, test/Makefile.am, declare_fn.test,
     explain_fn.test: Fixed declare of function with an invalid argument.
   * src/Makefile.am, c_ast.c, c_ast.h, debug.c, debug.h, english.c, errors.c,
     gibberish.c, parser.y, slist.c, slist.h, typedefs.h, util.c, util.h: Now
     using separate singly-linked-list code.

2017-10-30  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, parser.y, typedefs.h: Added c_ast_depth_t.

2017-10-29  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: s/0/T_NONE/
   * parser.y: Removed redundant IF_DEBUG from DUMP_COMMA.
   * color.h: Added != NULL.
   * c_ast.c, util.h: s/PTR_TO_OFFSET/PTR_OFFSET/
   * util.h: Fixed PTR_TO_OFFSET.
   * configure.ac: Updated version to 4.4.1.
   * parser.y: Now dumping final type in define_english.
   * c_ast.c, c_ast.h, c_typedef.c, cdecl.c, parser.y, util.h,
     test/Makefile.am, typedef_fi_v_show_f.out, typedef_fi_v_show_f.test: Fixed
     typedef-pointer-to-function; reworked c_ast memory management.

2017-10-27  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added CONFIGUATION FILE section.
   * lexer.l: Removed extraneous '*'.
   * lexer.l: Added hyphenated_find().

2017-10-25  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, cdecl.c, color.c, util.c: Added more likely/unlikely.
   * debug.c, misc.h: Moved DEBUG_INDENT.
   * c_ast_util.c, c_ast_util.h, c_kind.c, c_kind.h, c_lang.h, c_type.h: Misc.
     clean-up.

2017-10-21  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h, typedefs.h: Moved c_ast_id_t.
   * c_ast.h: Fixed @param.
   * autocomplete.c: Added missing options to autocomplete.
   * autocomplete.c: Whitespace changes.
   * c_type.c: Added missing @param.
   * AUTHORS, configure.ac, cdecl.1, autocomplete.c, c_ast_util.c, c_keyword.c,
     c_keyword.h, c_type.c, c_type.h, errors.c, lexer.l, literals.c,
     literals.h, parser.y, typedefs.h, util.c, util.h, test/Makefile.am,
     declare_cdfcdi_i.out, declare_cdfi_i.out, declare_df_v.out,
     declare_dui.out, declare_fcdi_i.out, declare_fdi_v.out,
     declare_fti_v-01.out, declare_fti_v-02.out, declare_fui_v-01.out,
     declare_fui_v-02.out, declare_nfi_v-02-c++.out, declare_nfi_v-03-c++.out,
     declare_nfi_v-03.out, declare_tf_i-01.out, declare_tf_i-02.out,
     declare_uf_v-01.out, declare_uf_v-02.out, declare_ui-01.out,
     declare_ui-02.out, explain_cdfcdi_i.out, explain_cdfi_i.out,
     explain_df_v.out, explain_di.out, explain_dui-01.out, explain_dui-02.out,
     explain_fcdi_i.out, explain_fdi_v.out, explain_fti_v.out,
     explain_fui_v.out, explain_uf_v.out, explain_ui.out,
     explain_unknown_attribute.out, declare_cdfcdi_i.test, declare_cdfi_i.test,
     declare_cdi.test, declare_df_v.test, declare_dui.test,
     declare_fcdi_i.test, declare_fdi_v.test, declare_fti_v-01.test,
     declare_fti_v-02.test, declare_fui_v-01.test, declare_fui_v-02.test,
     declare_nfi_v-01-c++.test, declare_nfi_v-01.test,
     declare_nfi_v-02-c++.test, declare_nfi_v-02.test,
     declare_nfi_v-03-c++.test, declare_nfi_v-03.test, declare_tf_i-01.test,
     declare_tf_i-02.test, declare_uf_v-01.test, declare_uf_v-02.test,
     declare_ui-01.test, declare_ui-02.test, explain_cdfcdi_i.test,
     explain_cdfi_i.test, explain_cdi.test, explain_df_v.test, explain_di.test,
     explain_dui-01.test, explain_dui-02.test, explain_fcdi_i.test,
     explain_fdi_v.test, explain_fti_v.test, explain_fui_v.test,
     explain_uf_v.test, explain_ui.test, explain_unknown_attribute.test: Added
     support for C++ attributes.

2017-10-15  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added comments.
   * lexer.l, parser.y: Minor token renaming.
   * cdecl.1, c_keyword.c, c_type.c, lexer.l, literals.c, literals.h, parser.y,
     declare_nfi_v-01.out, declare_nfi_v-02.out: Switch to _Noreturn being
     primary.
   * AUTHORS: Added new features.

2017-10-14  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Updated to 4.3.
   * cdecl.1, autocomplete.c, c_keyword.c, c_type.c, c_type.h, lexer.l,
     literals.c, literals.h, parser.y, test/Makefile.am, declare_md.out,
     declare_mf.out, explain_md.out, explain_mf.out, declare_md.test,
     declare_mf.test, explain_md.test, explain_mf.test: Added C99 _Imaginary
     support.
   * cdecl.1, c_keyword.c, c_type.c, lexer.l, literals.c, literals.h, parser.y,
     declare_zd.out, declare_zf.out: Changed complex to _Complex.
   * explain_a.out, explain_a9cpi.out, explain_ai-01.out, explain_ai-02.out,
     explain_ai.out, explain_api-01.out, explain_api-02.out,
     explain_cast_ci.out, explain_cast_cpa3cpa5i.out,
     explain_cast_cpa3pa5i.out, explain_cast_cpa9ci.out,
     explain_cast_cpa9i.out, explain_cast_cpbv_pi.out, explain_cast_cpcpi.out,
     explain_cast_cpfv_pi.out, explain_cast_cpi.out, explain_cast_cppi.out,
     explain_cast_cvpi.out, explain_cast_ic.out, explain_cast_pa3cpa5i.out,
     explain_cast_pci.out, explain_cast_pcpi, explain_cast_pcpi.out,
     explain_cast_pic.out, explain_cast_rpi.out, explain_cast_vcpi.out,
     explain_cf_v.out, explain_ci.out, explain_ck.out, explain_cpa3cpa5i.out,
     explain_cpa3pa5i.out, explain_cpa9ci.out, explain_cpa9i.out,
     explain_cpbv_pi.out, explain_cpcpi.out, explain_cpfv_pi.out,
     explain_cpi.out, explain_cpmci.out, explain_cpmi.out, explain_cppi.out,
     explain_crf_v.out, explain_cu.out, explain_cvf_v.out, explain_cvpi.out,
     explain_e.out, explain_ea2i.out, explain_f_cpmi.out, explain_facs3_v.out,
     explain_facv_v.out, explain_fasc3_v.out, explain_fcce_v.out,
     explain_ic.out, explain_k.out, explain_kc.out, explain_keywords.out,
     explain_oyf.out, explain_pa3cpa5i.out, explain_pai-01.out,
     explain_pai-02.out, explain_pcpi.out, explain_pmfii_pk.out,
     explain_rpi.out, explain_vcpi.out, explain_voyf.out, explain_xf_v.out,
     explain_xtf_v.out: Updated tests for new English use.
   * c_type.c, lexer.l, literals.c, literals.h: Now using more English words in
     English.
   * cdecl.1, lexer.l, literals.c, literals.h: Added "external" as a synonym
     for "extern".
   * autocomplete.c, literals.c, literals.h: Removed vestiges of L_SIZE_T.

2017-10-13  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c, cdecl.c, prompt.c, util.c, util.h: Replaced strcpy_len() with
     strcpy_end().
   * c_type.c, c_type.h: Added L_TYPEDEF_TYPE.
   * configure.ac, cdecl.1, autocomplete.c, c_keyword.c, c_type.c, c_type.h,
     errors.c, gibberish.c, lexer.l, literals.c, literals.h, parser.y,
     test/Makefile.am, cdecl--debug.out, cdecl-d.out, declare_xf.out,
     explain_nfi_v.out, explain_tf_v.out, explain_xf_v.out, explain_xff_v.out,
     explain_xtf_v.out, declare_xf.test, explain_tf_v.test, explain_xf_v.test,
     explain_xff_v.test, explain_xtf_v.test: Added noexcept and throw()
     support.

2017-10-10  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Explicit comparison.
   * gibberish.c: More explicit comparison.
   * errors.c: Fixed whitespace.
   * lib/Makefile.am, getopt-cdefs.in.h, getopt-pfx-core.h, getopt-pfx-ext.h,
     getopt.in.h, unistd.in.h, string_h.m4, sys_types_h.m4: Updated GNUlib.
   * configure.ac: Updated version.
   * cdecl.c: Fixed handling of leading whitespace in command-line argument.
   * c_typedef.c: Minor clean-up.
   * c_type.c: Added name_cat().

2017-10-09  Paul J. Lucas <paul@lucasmail.org>

   * c_type.c: More explicit comparison in is_long_int().
   * c_ast_util.c: More explicit comparison.
   * c_ast.c: More assert()s in c_ast_equiv().
   * options.c: Split line for clarity.
   * c_type.c: Now using PRIX_C_TYPE_T for INTERNAL_ERR().
   * c_type.h, debug.c: Added PRIX_C_TYPE_T.
   * c_type.c: Removed duplicated code.
   * c_typedef.c: Added comment.
   * cdecl.1: Added caveat about predefined types' underlying types.

2017-10-08  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, test/Makefile.am, define_ai.test, define_ei.test,
     define_gi.test, define_si.test, typedef_ai.test, typedef_ei.test,
     typedef_gi.test, typedef_si.test: Fixed typedef & define with storage
     classes.
   * cdecl.c: Now resetting command-line in parse_string().
   * cdecl.c: Augmented comment.
   * c_type.h: Completed comment.

2017-10-07  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, cdecl.1, c_type.c, c_typedef.c, debug.c, debug.h, english.c,
     parser.y, cdecl--debug.out, cdecl-d.out, show_all_types.out,
     show_predefined_types.out: Added support for stdatomic types.

2017-10-06  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, c_lang.c, lexer.l, parser.y: Now allowing ck&r, k&r, and k&rc
     lang names.
   * cdecl.1: Removed size_t, ssize_t, Explicit.
   * autocomplete.c, c_ast_util.c, c_type.c, cdecl.c, errors.c, gibberish.c:
     Made type and lang comparisons more explicit.
   * c_ast_util.c, c_ast_util.h: Fixed grammar errors in comments.

2017-10-05  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, c_ast_util.c, c_ast_util.h, c_keyword.c, c_keyword.h,
     c_kind.c, c_kind.h, c_lang.c, c_lang.h, c_type.c, c_type.h, c_typedef.c,
     c_typedef.h, errors.c: Fixed filenames in comments.
   * debug.c, diagnostics.c, lexer.h, lexer.l, typedefs.h: Reverted Bison
     location to int to avoid warnings.

2017-09-30  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, gibberish.c, parser.y, util.h: s/ZERO/MEM_ZERO/

2017-09-25  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.c, c_ast.h, c_ast_util.c, c_ast_util.h: Moved visitor callbacks.

2017-09-23  Paul J. Lucas <paul@lucasmail.org>

   * c_ast.h: Added explicit != NULL.

2017-09-22  Paul J. Lucas <paul@lucasmail.org>

   * red_black.c: Minor clean-up.

2017-09-21  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am: Fixed typo.
   * lib/Makefile.am, arg-nonnull.h, c++defs.h, errno.in.h, getdelim.c,
     getline.c, getopt-cdefs.in.h, getopt-core.h, getopt-ext.h,
     getopt-pfx-core.h, getopt-pfx-ext.h, getopt.c, getopt.in.h, getopt1.c,
     getopt_int.h, gettext.h, limits.in.h, stdarg.in.h, stdbool.in.h,
     stddef.in.h, stdint.in.h, stdio.in.h, stdlib.in.h, string.in.h, strsep.c,
     sys_types.in.h, sysexits.in.h, unistd.in.h, warn-on-use.h,
     extern-inline.m4, gnulib-cache.m4, gnulib-common.m4, gnulib-comp.m4,
     onceonly.m4, stdbool.m4, sys_types_h.m4: Updated gnulib.
   * src/Makefile.am, autocomplete.c, c_typedef.h, cdecl.c, debug.c, debug.h,
     diagnostics.c, diagnostics.h, english.c, errors.c, gibberish.c, help.c,
     lexer.l, options.c, options.h, parser.y, prompt.c, set.c, typedefs.h,
     util.c, util.h: Fixed build on old gcc that doesn't allow multiple
     typedefs of the same type.
   * configure.ac: Changed version to 4.0.
   * AUTHORS, cdecl.1, errors.c, lang.c, lang.h, test/Makefile.am,
     declare_ii-c++.out, explain_ii-c++.out, declare_ii-c++.test,
     declare_ii.test, explain_ii-c++.test, explain_ii.test: Added C++17
     support: inline variables.
   * errors.c: Now warning on "register" >= C++11.
   * lexer.l: Better C++ lang name handling for "set" command.
   * ast.c, gibberish.c, parser.y, util.h: Added ZERO().
   * ast.h, ast_util.h, keywords.c, lexer.l: Moved c_ast_pair to ast_util.h.

2017-09-20  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS, configure.ac, cdecl.1, src/Makefile.am, ast.c, ast.h, ast_util.c,
     autocomplete.c, cdecl.c, common.h, debug.c, diagnostics.c, english.c,
     errors.c, gibberish.c, help.c, keywords.c, kinds.c, kinds.h, lang.c,
     lang.h, lexer.h, lexer.l, literals.c, literals.h, options.c, options.h,
     parser.y, red_black.c, red_black.h, set.c, typedefs.c, typedefs.h,
     types.c, types.h, util.c, util.h, test/Makefile.am, config_u.cdeclrc,
     cdecl--debug.out, cdecl-d.out, declare_config_u.out, declare_cz.out,
     define_i.out, define_i_declare_i.out, define_i_explain_i.out,
     define_i_int_least32_t.out, explain_config_u.out, help-c++.out,
     help-c.out, show_all_types.out, show_int8_t.out,
     show_predefined_types.out, show_user_types.out, typedef_i.out,
     typedef_i_declare_i.out, typedef_i_explain_i.out,
     typedef_i_int_least32_t.out, run_test.sh, cast_a3i.test, cast_bii_d.test,
     cast_ci.test, cast_constant.test, cast_cpa3cpa5i.test, cast_cpa3pa5i.test,
     cast_cpa9ci.test, cast_cpa9i.test, cast_cpbv_pi.test, cast_cpcpi.test,
     cast_cpfv_pi.test, cast_cpi.test, cast_cppi.test, cast_cvpi.test,
     cast_f_i.test, cast_gi.test, cast_ll.test, cast_pa3cpa5i.test,
     cast_pa3pa5i.test, cast_pa9i.test, cast_pbv_pi.test, cast_pci.test,
     cast_pcpi.test, cast_pf_i-01.test, cast_pf_i-02.test, cast_pfii_i.test,
     cast_pfv_pi.test, cast_pfx_i.test, cast_pi.test, cast_pmi.test,
     cast_ppi.test, cast_sc.test, cast_si.test, cast_sll.test, cast_ti.test,
     cast_type.test, cast_u.test, cast_uc.test, cast_ui.test, cast_ull.test,
     cast_vcpi.test, cast_vpi.test, cdecl--debug.test,
     cdecl--no-semicolon.test, cdecl-d.test, cdecl-s.test, cdecl-xx.test,
     cl-cast_i.test, cl-declare_i.test, cl-explain_i.test,
     const_cast_pi-c.test, const_cast_pi.test, declare_0f_v-c.test,
     declare_0f_v.test, declare_a.test, declare_a3a5a7i.test,
     declare_a3a5i.test, declare_a3a5pfv_i.test, declare_a3a5pfv_pi.test,
     declare_a3a5pfv_ppa7a9i.test, declare_a3a5pfv_ppa7a9pc.test,
     declare_a3a5pfv_ppa7i.test, declare_a3a5pfv_ppa7pi.test,
     declare_a3a5pfv_ppi.test, declare_a3pfv_i.test, declare_a3ppfv_i.test,
     declare_a9cpi.test, declare_a9i.test, declare_a9pi.test,
     declare_ac3i.test, declare_af-c++.test, declare_af.test,
     declare_ai-01.test, declare_ai-02.test, declare_ai-c++11.test,
     declare_ai.test, declare_api-01.test, declare_as3i.test, declare_avi.test,
     declare_b-c89.test, declare_b.test, declare_b_ai.test, declare_b_f_i.test,
     declare_bii_d.test, declare_c-c.test, declare_c.test,
     declare_c16-c++03.test, declare_c16-c99.test, declare_c32-c++03.test,
     declare_c32-c99.test, declare_cf_v-c.test, declare_cf_v.test,
     declare_ci-knr.test, declare_ci.test, declare_config_u.test,
     declare_constant.test, declare_cpa3cpa5i.test, declare_cpa3pa5i.test,
     declare_cpa9ci.test, declare_cpa9i.test, declare_cpbv_pi.test,
     declare_cpcpi.test, declare_cpfv_pi.test, declare_cpi.test,
     declare_cpmi.test, declare_cppi.test, declare_crf_v.test,
     declare_crrf_v.test, declare_cu.test, declare_cvpi.test, declare_cz.test,
     declare_e-knr.test, declare_e.test, declare_ea2i.test, declare_ec-c.test,
     declare_ec.test, declare_ek.test, declare_esf_v.test, declare_f.test,
     declare_f_ai.test, declare_f_f_i.test, declare_f_pi.test,
     declare_f_pmi.test, declare_facs3_v.test, declare_facv_v.test,
     declare_fas3_v.test, declare_fasc3_v.test, declare_fav_v.test,
     declare_fcce_v-01.test, declare_fcce_v-02.test, declare_fcce_v-03.test,
     declare_ff_v-c.test, declare_ff_v.test, declare_fg_v-c89.test,
     declare_fg_v.test, declare_fgi_v.test, declare_fid_v.test,
     declare_fii_v.test, declare_fiiv_v.test, declare_fipfi_v_pfi_v.test,
     declare_fiv_v.test, declare_fixiy_v.test, declare_fpc_pi.test,
     declare_fpci_pi.test, declare_fpfc_i_d.test, declare_frri_v.test,
     declare_fsi_v.test, declare_fv_pa3a5i.test, declare_fv_pa3a5pi.test,
     declare_fv_pa3i.test, declare_fv_pa3pi.test, declare_fv_v.test,
     declare_fvx_v.test, declare_fx_pi.test, declare_gf_v.test,
     declare_gi.test, declare_hb.test, declare_hc.test, declare_hc16.test,
     declare_hc32.test, declare_hd.test, declare_hf.test, declare_hl.test,
     declare_hll.test, declare_hv.test, declare_hw.test, declare_if_v.test,
     declare_k.test, declare_lb.test, declare_lc.test, declare_lc16.test,
     declare_lc32.test, declare_ld-knr.test, declare_ld.test,
     declare_lf-c.test, declare_lf.test, declare_ll-c89.test,
     declare_ll-knr.test, declare_ll.test, declare_lll.test, declare_lv.test,
     declare_lw.test, declare_mi.test, declare_n.test, declare_nfi_v-01.test,
     declare_nfi_v-02.test, declare_ni.test, declare_oyf.test,
     declare_pa3cpa5i.test, declare_pa3pa5i.test, declare_pa9i.test,
     declare_pai-01.test, declare_pbv_pi.test, declare_pcpi.test,
     declare_pfv_pi.test, declare_pfv_ri.test, declare_pfx_i.test,
     declare_pi.test, declare_pmci.test, declare_pmf_i.test,
     declare_pmf_pc.test, declare_pmi.test, declare_pmri.test,
     declare_ppi.test, declare_pri.test, declare_pv-knr.test,
     declare_ra3i.test, declare_rci.test, declare_rcpi.test, declare_ref.test,
     declare_rf_v-01.test, declare_rf_v-c.test, declare_rf_v.test,
     declare_rgi.test, declare_ri.test, declare_rpi.test, declare_rrf_v.test,
     declare_rv.test, declare_sa2i.test, declare_sb.test, declare_sc-knr.test,
     declare_sc.test, declare_sc16.test, declare_sc32.test, declare_sf_v.test,
     declare_si-knr.test, declare_si.test, declare_sif_v.test,
     declare_sl-knr.test, declare_sll.test, declare_smi.test, declare_sv.test,
     declare_sw.test, declare_sxi.test, declare_t.test, declare_ti.test,
     declare_tpfc_i.test, declare_type.test, declare_u.test, declare_ub.test,
     declare_uc.test, declare_uc16.test, declare_uc32.test, declare_ud.test,
     declare_uf.test, declare_ui.test, declare_ull.test, declare_uv.test,
     declare_uw.test, declare_uz.test, declare_v.test, declare_vcpi.test,
     declare_vf_v-c.test, declare_vf_v.test, declare_vi-knr.test,
     declare_voyf.test, declare_vpi.test, declare_w-c89.test, declare_w.test,
     declare_xi-c.test, declare_xi.test, declare_yf.test, declare_z.test,
     declare_zd.test, declare_zf.test, declare_zz.test,
     define_c_int_least32_t.test, define_i.test, define_i_declare_i.test,
     define_i_explain_i.test, define_i_int_least32_t.test,
     dynamic_cast_pc-c.test, dynamic_cast_pc.test, explain_0f_v-01.test,
     explain_0f_v-02.test, explain_0f_v-c.test, explain_a.test,
     explain_a012i.test, explain_a0b10i.test, explain_a0xAi-01.test,
     explain_a0xai-02.test, explain_a3a5a7i.test, explain_a3a5i.test,
     explain_a3a5pfv_i.test, explain_a3a5pfv_pi.test,
     explain_a3a5pfv_ppa7a9i.test, explain_a3a5pfv_ppa7a9pc.test,
     explain_a3a5pfv_ppa7i.test, explain_a3a5pfv_ppa7pi.test,
     explain_a3a5pfv_ppi.test, explain_a3pfv_i.test, explain_a3ppfv_i.test,
     explain_a9cpi.test, explain_a9i.test, explain_a9pi.test,
     explain_ac9i.test, explain_af.test, explain_ai-01.test,
     explain_ai-02.test, explain_ai-c++11.test, explain_ai.test,
     explain_api-01.test, explain_api-02.test, explain_as9i.test,
     explain_b-c89.test, explain_b.test, explain_b_ai.test, explain_bii_d.test,
     explain_c-c.test, explain_c.test, explain_c16-c++03.test,
     explain_c16-c99.test, explain_c32-c++03.test, explain_c32-c99.test,
     explain_cast_a3a5a7i.test, explain_cast_a3a5i.test, explain_cast_a3i.test,
     explain_cast_ai.test, explain_cast_ci.test, explain_cast_cpa3cpa5i.test,
     explain_cast_cpa3pa5i.test, explain_cast_cpa9ci.test,
     explain_cast_cpa9i.test, explain_cast_cpbv_pi.test,
     explain_cast_cpcpi.test, explain_cast_cpfv_pi.test, explain_cast_cpi.test,
     explain_cast_cppi.test, explain_cast_cvpi.test, explain_cast_ei.test,
     explain_cast_gi.test, explain_cast_ic.test, explain_cast_ll.test,
     explain_cast_lll.test, explain_cast_pa3a5i.test,
     explain_cast_pa3cpa5i.test, explain_cast_pa3pa5i.test,
     explain_cast_pa9i.test, explain_cast_pbv_pi.test, explain_cast_pci.test,
     explain_cast_pcpi.test, explain_cast_pf_i.test, explain_cast_pfpci_i.test,
     explain_cast_pfpi_i.test, explain_cast_pfv_pi.test, explain_cast_pi.test,
     explain_cast_pic.test, explain_cast_pmi.test, explain_cast_ppi.test,
     explain_cast_ri.test, explain_cast_rpi.test, explain_cast_si.test,
     explain_cast_ti.test, explain_cast_ull.test, explain_cast_vcpi.test,
     explain_cast_vpi.test, explain_cf_v-c.test, explain_cf_v.test,
     explain_ci-knr.test, explain_ci.test, explain_ck.test,
     explain_config_u.test, explain_const_cast_pi-c.test,
     explain_const_cast_pi.test, explain_cpa3cpa5i.test, explain_cpa3pa5i.test,
     explain_cpa9ci.test, explain_cpa9i.test, explain_cpbv_pi.test,
     explain_cpcpi.test, explain_cpfv_pi.test, explain_cpi.test,
     explain_cpmci.test, explain_cpmi.test, explain_cppi.test,
     explain_crf_v.test, explain_cs.test, explain_cu.test, explain_cvf_v.test,
     explain_cvpi.test, explain_dynamic_cast_pc-c.test,
     explain_dynamic_cast_pc.test, explain_e-knr.test, explain_e.test,
     explain_ea2i.test, explain_ec.test, explain_ek.test, explain_esf_v.test,
     explain_f__pf__v.test, explain_f__pv.test, explain_f__v-c++03.test,
     explain_f__v.test, explain_f_ai.test, explain_f_cpmi.test,
     explain_f_pi.test, explain_f_pmi.test, explain_f_v__v.test,
     explain_fa_v.test, explain_fac3_v-c++.test, explain_facs3_v.test,
     explain_facv_v.test, explain_fas3_v-c++.test, explain_fas3_v.test,
     explain_fasc3_v.test, explain_fasv_v.test, explain_fav_v-c++.test,
     explain_fav_v.test, explain_fcce_v.test, explain_fe_v.test,
     explain_fecc_v.test, explain_fee_v.test, explain_fev_v.test,
     explain_ff_v-c.test, explain_ff_v.test, explain_fg_v-c89.test,
     explain_fg_v.test, explain_fgi_v.test, explain_fid_v.test,
     explain_fiiv_v.test, explain_fipfi_v_pfi_v.test, explain_fiv_v.test,
     explain_fixiy_v.test, explain_fpc_pi.test, explain_fpci_pi.test,
     explain_fpfc_i_d.test, explain_frri_v-c++03.test, explain_frri_v.test,
     explain_fsf_v.test, explain_fsi_v.test, explain_fv_pa3a5i.test,
     explain_fv_pa3a5pi.test, explain_fv_pa3i.test, explain_fv_pa3pi.test,
     explain_fv_pi.test, explain_fv_v.test, explain_fve_v.test,
     explain_fvi_v.test, explain_fvv_v.test, explain_fvx_v.test,
     explain_fx_pi.test, explain_fx_v.test, explain_gf_v.test, explain_gi.test,
     explain_gk.test, explain_hb.test, explain_hc.test, explain_hc16.test,
     explain_hc32.test, explain_hd.test, explain_hf.test, explain_hl.test,
     explain_hll.test, explain_hv.test, explain_hw.test, explain_ic.test,
     explain_if_v.test, explain_ig.test, explain_is.test, explain_it.test,
     explain_k.test, explain_kc.test, explain_keywords.test, explain_lb.test,
     explain_lc.test, explain_lc16.test, explain_lc32.test,
     explain_ld-knr.test, explain_ld.test, explain_lf-c.test, explain_lf.test,
     explain_ll-c89.test, explain_ll-knr.test, explain_ll.test,
     explain_lll.test, explain_lv.test, explain_lw.test, explain_mi.test,
     explain_n.test, explain_nfi_c.test, explain_nfi_v-c++.test,
     explain_nfi_v.test, explain_ni.test, explain_oi.test, explain_oyf.test,
     explain_pa3a5i.test, explain_pa3cpa5i.test, explain_pa3pa5i.test,
     explain_pa9i.test, explain_pai-01.test, explain_pai-02.test,
     explain_pbv_pi.test, explain_pcpi.test, explain_pfv_pi.test,
     explain_pi.test, explain_pmf_i.test, explain_pmf_pc.test,
     explain_pmfii_pk.test, explain_pmgi.test, explain_pmi-c.test,
     explain_pmi.test, explain_pmri.test, explain_ppi.test, explain_pri.test,
     explain_prri.test, explain_pv-knr.test, explain_ra3i.test,
     explain_reinterpret_cast_pv-c.test, explain_reinterpret_cast_pv.test,
     explain_rf_v-01.test, explain_rf_v-c++03.test, explain_rf_v.test,
     explain_rgi.test, explain_ri-c.test, explain_ri.test, explain_rpi.test,
     explain_rrf_v-c++03.test, explain_rrf_v.test, explain_rv.test,
     explain_sa2i.test, explain_sb.test, explain_sc-knr.test, explain_sc.test,
     explain_sc16.test, explain_sc32.test, explain_sf_v.test,
     explain_si-knr.test, explain_si.test, explain_sl-knr.test,
     explain_smi.test, explain_srf_v.test, explain_srrf_v.test,
     explain_static_cast_i-c.test, explain_static_cast_i.test, explain_sv.test,
     explain_sw.test, explain_sxi.test, explain_ti.test, explain_tpfc_i.test,
     explain_type_i.test, explain_ub.test, explain_uc.test, explain_uc16.test,
     explain_uc32.test, explain_ud.test, explain_uf.test, explain_ull.test,
     explain_uv.test, explain_uw.test, explain_v.test, explain_vcpi.test,
     explain_vf_v-c.test, explain_vf_v.test, explain_vi-knr.test,
     explain_voyf-c.test, explain_voyf.test, explain_vpi.test,
     explain_w-c89.test, explain_w.test, explain_xi-c.test, explain_xi.test,
     explain_yf.test, explain_z.test, explain_zd.test, explain_zf.test,
     explain_zz.test, file-cast_i.test, file-cast_x.test, file-declare_i.test,
     file-declare_x.test, file-explain_i.test, file-explain_x.test,
     help-c++.test, help-c.test, reinterpret_cast_pv-c.test,
     reinterpret_cast_pv.test, set.test, set_c++.test, set_c++03.test,
     set_c++11.test, set_c++98.test, set_c.test, set_c11.test, set_c89.test,
     set_c99.test, set_cknr.test, set_debug.test, set_knr.test, set_knrc.test,
     set_nodebug.test, set_noprompt.test, set_nosemicolon.test,
     set_noyydebug.test, set_options.test, set_prompt.test, set_semicolon.test,
     set_yydebug.test, show_all_types.test, show_foo.test, show_int8_t.test,
     show_predefined_types.test, show_user_types.test, static_cast_i-c.test,
     static_cast_i.test, typedef_c_int_least32_t.test, typedef_i.test,
     typedef_i_declare_i.test, typedef_i_explain_i.test,
     typedef_i_int_least32_t.test: Added ability to typedef types; added C99
     standard types.

2017-09-17  Paul J. Lucas <paul@lucasmail.org>

   * ast.c, ast_util.c, autocomplete.c, color.c, debug.c, diagnostics.c,
     english.c, errors.c, gibberish.c, help.c, keywords.c, lang.c, options.c,
     prompt.c, set.c, types.c, util.c: More explicit about == NULL or == 0.
   * ast.c: c_ast_list_append() clean-up.
   * cdecl.1: Added (missing) long long for C89.

2017-09-14  Paul J. Lucas <paul@lucasmail.org>

   * parser.y, test/Makefile.am, declare_t.test: Fixed "declare x as y" bug.

2017-09-13  Paul J. Lucas <paul@lucasmail.org>

   * keywords.c, keywords.h, lexer.l: s/c_keyword_find_literal/c_keyword_find/

2017-08-30  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, cdecl.1, cdecl.c: Now checking first word of first argument
     for command.

2017-08-26  Paul J. Lucas <paul@lucasmail.org>

   * lib/Makefile.am, getopt-pfx-core.h, getopt-pfx-ext.h, getopt.c, gettext.h,
     stdio.in.h, stdlib.in.h, string.in.h, sys_types.in.h, unistd.in.h,
     extensions.m4, getdelim.m4, getline.m4, include_next.m4, stdint.m4,
     stdlib_h.m4, string_h.m4, sys_types_h.m4, unistd_h.m4, wint_t.m4: Updated
     gnulib.
   * configure.ac, cdecl.1, autocomplete.c, keywords.c, literals.c, literals.h,
     parser.y, types.c, types.h, test/Makefile.am, declare_zz.out,
     explain_zz.out, declare_zz-knr.test, declare_zz.test, explain_zz-knr.test,
     explain_zz.test: Added support for ssize_t.

2017-07-19  Paul J. Lucas <paul@lucasmail.org>

   * util.c, util.h: Made perror_exit() a function.
   * lexer.l: Added identifier.

2017-07-17  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Updated version.
   * parser.y: Fixed new-style casts C++ version.
   * cdecl.1: Added mention of new-style casts; added casting name only caveat.
   * parser.y: Added "new_style_cast_c" to dump line.
   * parser.y: explain_new_style_cast_c requires NAME.
   * parser.y: Better error messages for explain_new_style_cast_c.

2017-07-16  Paul J. Lucas <paul@lucasmail.org>

   * help.c: Added FALLTHROUGH comment.
   * ast.c, util.c, util.h: Added likely() and unlikely().
   * autocomplete.c: Fixed typo in comment.

2017-07-14  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1, cdecl.c: Added "help" as a command-line argument.
   * ast_util.c: Added missing "static".

2017-07-12  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c, test/Makefile.am, declare_ra3i.out, explain_ra3i.out,
     declare_ra3i.test, explain_ra3i.test: Fixed reference to array.
   * AUTHORS, configure.ac, cdecl.1, ast.h, autocomplete.c, debug.c, english.c,
     errors.c, gibberish.c, help.c, lexer.l, literals.c, literals.h, parser.y,
     test/Makefile.am, declare_facs3_v.out, declare_facv_v.out,
     declare_fas3_v.out, declare_fasc3_v.out, declare_fav_v.out,
     explain_facs3_v.out, explain_facv_v.out, explain_fas3_v.out,
     explain_fasc3_v.out, explain_fav_v.out, help-c++.out, help-c.out,
     declare_ac3i.test, declare_as3i.test, declare_avi.test,
     declare_facs3_v.test, declare_facv_v.test, declare_fas3_v.test,
     declare_fasc3_v.test, declare_fav_v.test, explain_ac9i.test,
     explain_as9i.test, explain_fac3_v-c++.test, explain_facs3_v.test,
     explain_facv_v.test, explain_fas3_v-c++.test, explain_fas3_v.test,
     explain_fasc3_v.test, explain_fasv_v.test, explain_fav_v-c++.test,
     explain_fav_v.test: Added C99 static, type-qualified, and variable length
     array function argument support.

2017-07-11  Paul J. Lucas <paul@lucasmail.org>

   * lang.h: Moved C++ languages into upper byte.

2017-07-10  Paul J. Lucas <paul@lucasmail.org>

   * errors.c: Fixed printing of error message.

2017-06-07  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, cdecl.1, options.c: Added -h and --help.
   * parser.y, test/Makefile.am, explain_cpmci.out, explain_cpmi.out,
     explain_f_cpmi.out, explain_cpmci.test, explain_cpmi.test,
     explain_f_cpmi.test: Added support for explaining const/volatile pointers
     to member.

2017-05-29  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, common.h, diagnostics.c: Fixed error printing if source is
     command line.
   * AUTHORS, configure.ac, cdecl.1, autocomplete.c, cdecl.c, help.c,
     keywords.c, lexer.l, literals.c, literals.h, parser.y, test/Makefile.am,
     const_cast_pi.out, dynamic_cast_pc.out, explain_const_cast_pi.out,
     explain_dynamic_cast_pc.out, explain_reinterpret_cast_pv.out,
     explain_static_cast_i.out, help-c++.out, help-c.out,
     reinterpret_cast_pv.out, static_cast_i.out, const_cast_pi-c.test,
     const_cast_pi.test, dynamic_cast_pc-c.test, dynamic_cast_pc.test,
     explain_const_cast_pi-c.test, explain_const_cast_pi.test,
     explain_dynamic_cast_pc-c.test, explain_dynamic_cast_pc.test,
     explain_reinterpret_cast_pv-c.test, explain_reinterpret_cast_pv.test,
     explain_static_cast_i-c.test, explain_static_cast_i.test,
     reinterpret_cast_pv-c.test, reinterpret_cast_pv.test,
     static_cast_i-c.test, static_cast_i.test: Added support for C++ new-style
     casts.

2017-05-28  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, diagnostics.c, prompt.h: Fixed color prompt caret position.
   * cdecl.1: Fixed caveat auto example.

2017-05-27  Paul J. Lucas <paul@lucasmail.org>

   * keywords.c, keywords.h: Removed c_keyword_find_token() -- not used.
   * parser.y: Fixed typo in dump line.

2017-05-24  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, help.c, help-c++.out, help-c.out: Fixed cv-qualifier in help
     text.

2017-05-10  Paul J. Lucas <paul@lucasmail.org>

   * lexer.h, parser.y: Got rid of yylex() redundant declaration warning.
   * lexer.l: Removed redundant declaration of yylloc.
   * ast.c, ast.h, common.h, diagnostics.c, diagnostics.h, parser.y, types.c,
     types.h: Now using c_loc_t instead of YYLTYPE.
   * parser.y: Fixed comment grammar.
   * diagnostics.c: Added assert( error_column <= input_line_len ).

2017-05-09  Paul J. Lucas <paul@lucasmail.org>

   * debug.c, cdecl--debug.out, cdecl-d.out: Now printing loc in debug output.
   * diagnostics.c: Printed error columns are now 1-based.
   * ast.h, debug.c, english.c, gibberish.c, parser.y, cdecl--debug.out,
     cdecl-d.out: Folded qualifier struct member into type.
   * parser.y: Removed incorrect comment.
   * parser.y, cdecl--debug.out, cdecl-d.out: Fixed arg_list_c dump.
   * parser.y: Fixed typo in comment.
   * parser.y: s/CDEBUG/IF_DEBUG/

2017-05-08  Paul J. Lucas <paul@lucasmail.org>

   * util.h: Now using CONST_CAST in FREE().

2017-05-06  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Added "break" to cdecl_keyword_find().
   * lexer.l: Fixed typo incomment.
   * configure.ac, lexer.l, test/Makefile.am, explain_type_i.test: Fixed
     wrongly allowing keyword synonyms in explain.

2017-05-05  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, ast_util.c, gibberish.c, test/Makefile.am,
     declare_tpfc_i.out, explain_tpfc_i.out, declare_tpfc_i.test,
     explain_tpfc_i.test: Fixed declarations with storage-class.
   * util.c: Reordered open().

2017-05-03  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Now allowing l, ll, llu, u, ul, ull integer suffixes for array
     sizes.

2017-05-02  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: Added asserts; fixed comment.
   * english.c: Now using L_AS.

2017-05-01  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l, parser.y: s/Y_RVALUE_REFERENCE/Y_DOUBLE_AMPERSAND/

2017-04-30  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Updated to 3.1.1.
   * src/Makefile.am: Added BUILT_SOURCES.
   * Makefile.am: Fixed to use new README files.
   * README-blocks.txt: Split out README info; disavowed associated with
     cdecl.org.
   * cdecl.1: Added mention tht qualified C++ data members or member functions
     are not supported.
   * ast_util.c, ast_util.h, parser.y:
     s/c_ast_patch_none/c_ast_patch_placeholder/
   * debug.c: Fixed missing ',' after class_name.

2017-04-29  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Added assert().
   * configure.ac, src/Makefile.am: Added c++decl symlink on install.
   * AUTHORS, configure.ac, cdecl.1, debug.c, english.c, errors.c, gibberish.c,
     help.c, kinds.c, kinds.h, parser.y, types.c, types.h, test/Makefile.am,
     cdecl--debug.out, cdecl-d.out, declare_crf_v.out, declare_crrf_v.out,
     declare_rf_v.out, declare_rrf_v.out, explain_crf_v.out, explain_rf_v.out,
     explain_rrf_v.out, help-c++.out, help-c.out, declare_crf_v.test,
     declare_crrf_v.test, declare_rf_v-01.test, declare_rf_v.test,
     declare_rrf_v.test, explain_crf_v.test, explain_rf_v-01.test,
     explain_rf_v-c++03.test, explain_rf_v.test, explain_rrf_v-c++03.test,
     explain_rrf_v.test, explain_srf_v.test, explain_srrf_v.test: Added member
     function ref-qualifiers.

2017-04-28  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Fixed auto caveat.
   * ast_util.c, ast_util.h, debug.c, english.c, errors.c, gibberish.c,
     kinds.c, kinds.h, parser.y: Changed K_NONE to K_PLACEHOLDER.
   * parser.y: Reordered func_qualifier_list_opt_c.

2017-04-27  Paul J. Lucas <paul@lucasmail.org>

   * ast_util.c, debug.c, errors.c, gibberish.c: Changed "no break;" comment to
     "FALLTHROUGH" for gcc >= 7.

2017-04-24  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac: Upped version to 3.0.1.
   * configure.ac: Renamed --disable-debug to --disable-cdecl-debug to avoid
     clash with other --disable-debug.
   * util.c: Eliminated warning when not compiling with asserts.
   * cdecl.1: Fixed minor formatting of signal(2).

2017-04-22  Paul J. Lucas <paul@lucasmail.org>

   * Makefile.am: Added READMEs to EXTRA_DIST.
   * test/Makefile.am: Rearranged EXTRA_DIST.
   * test/Makefile.am: Added missing "data".
   * src/Makefile.am: Added headers.
   * gettext.h, getopt.m4, gnulib-comp.m4: Updated GNUlib.
   * parser.y, cdecl--debug.out, cdecl-d.out: More clean-up.

2017-04-21  Paul J. Lucas <paul@lucasmail.org>

   * ast_util.c, parser.y: More comments; clean-up.
   * AUTHORS, cdecl.1, lexer.l, parser.y, test/Makefile.am, cdecl--debug.out,
     cdecl-d.out, explain_f__pf__v.out, explain_f__pv.out, explain_f__v.out,
     explain_f__pf__v.test, explain_f__pv.test, explain_f__v-c++03.test,
     explain_f__v.test, explain_f_v__v.test: Added support for the C++11
     function trailing return type syntax.
   * cdecl.1: Removed mention of 'n' (not used); clean-up.
   * parser.y: Removed SYNTAX_ERROR -- no longer used.
   * parser.y: Simplified zero.
   * parser.y: s/parse_error/elaborate_error/

2017-04-20  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Better error message for pure without virtual.
   * errors.c: Reordering implicit in check.
   * errors.c, parser.y, test/Makefile.am, declare_fg_v-c89.test,
     declare_fg_v.test, explain_fg_v-c89.test, explain_fg_v.test: Now making
     implicit int an error in C99 and later.
   * parser.y: Added parse_init().
   * cdecl.c, lexer.h: Backed out call to yylex_destroy() -- not present on
     some flex versions.
   * parser.y: Improved error message for array_decl_english.
   * cdecl.c, lexer.h: Now calling yylex_destroy().
   * parser.y: Fixed func_cast_c dump.

2017-04-19  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Removed author contributions; the AUTHORS and NEWS files are
     enough.
   * cdecl.1: s/--lang/--language/ to match reality.
   * autocomplete.c: Added setting of rl_instream and rl_outstream.
   * autocomplete.c: Added missing "c++14".
   * configure.ac: Some readline.h on require #include <stdio.h> first.
   * types.c: Added cast to unsigned long long.
   * configure.ac, src/Makefile.am, options.c, options.h, parser.y, prompt.c,
     set.c, util.c, test/Makefile.am: Fixed-up --enable/--with in configure.
   * cdecl.1: Added "C AND C++ LANGUAGE VERSIONS" section.

2017-04-18  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS, cdecl.1, autocomplete.c, help.c, keywords.c, lexer.l, literals.c,
     literals.h, parser.y, types.c, types.h, test/Makefile.am,
     cdecl--debug.out, cdecl-d.out, declare_ai-01.out, declare_ai-02.out,
     declare_api-01.out, declare_api-02.out, declare_pai-01.out,
     explain_ai-01.out, explain_ai-02.out, explain_api-01.out,
     explain_api-02.out, explain_pai-01.out, explain_pai-02.out, help-c.out,
     declare_ai-01.test, declare_ai-02.test, declare_api-01.test,
     declare_pai-01.test, explain_ai-01.test, explain_ai-02.test,
     explain_api-01.test, explain_api-02.test, explain_pai-01.test,
     explain_pai-02.test: Added _Atomic support.
   * lexer.l: Renamed goto label.
   * lexer.l, test/Makefile.am, explain_oi.out, explain_oi.test: Fixed C token
     synonyms.
   * errors.c: Now forbidding thread_local functions.
   * types.h: Moved T_INLINE.
   * cdecl.1: Added caveat of no _Atomic.
   * errors.c: Made "arg" scoped to "for" loop.
   * AUTHORS, cdecl.1, errors.c, lang.c, lang.h, lexer.l, test/Makefile.am,
     declare_af-c++.out, declare_af-c++.test, declare_af.test, explain_af.test:
     Added C++14, auto functions.
   * parser.y: Added misssing func_qualifier_list_opt_c to func_cast_c.
   * parser.y, cdecl--debug.out, cdecl-d.out: Reworked cast_c grammar.
   * AUTHORS, cdecl.1, autocomplete.c, errors.c, keywords.c, literals.c,
     literals.h, parser.y, types.c, types.h, test/Makefile.am,
     declare_if_v.out, declare_mi.out, declare_sif_v.out, explain_if_v.out,
     explain_mi.out, declare_if_v.test, declare_mi.test, declare_sif_v.test,
     declare_smi.test, explain_if_v.test, explain_mi.test, explain_smi.test:
     Added inline and mutable support.

2017-04-17  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS, cdecl.1, cdecl.c, common.h, errors.c, gibberish.c, help.c,
     lexer.h, lexer.l, parser.y, types.c, test/Makefile.am, declare_ec.out,
     declare_ek.out, help-c++.out, declare_ec-c.test, declare_ec.test,
     declare_ek.test, explain_ec.test, explain_ek.test: Added support for C++11
     enum class.
   * common.h: Removed unnecessary #include.
   * common.h: Added comment.
   * cdecl.1: Added mention of decltype.
   * lang.h: Added LANG_C_ALL.
   * errors.c, test/Makefile.am, explain_fa_v.test: Now forbidding auto
     function arguments.
   * types.c: Rearranged arrays.
   * AUTHORS, cdecl.1, keywords.c, keywords.h, lang.h, lexer.l, literals.c,
     literals.h, parser.y, types.c, types.h, test/Makefile.am, declare_a.out,
     declare_ai.out, explain_a.out, explain_ai.out, declare_a.test,
     declare_ai-c++11.test, declare_ai.test, explain_a.test,
     explain_ai-c++11.test, explain_ai.test: Now distinguishing between C's
     auto and C++11's.

2017-04-16  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS, cdecl.1, autocomplete.c, gibberish.c, keywords.c, lexer.l,
     literals.c, literals.h, parser.y, types.c, types.h, test/Makefile.am,
     cdecl--debug.out, cdecl-d.out, declare_oyf.out, declare_voyf.out,
     declare_yf.out, explain_oyf.out, explain_voyf.out, explain_yf.out,
     declare_oyf.test, declare_voyf.test, declare_yf.test, explain_oyf.test,
     explain_voyf-c.test, explain_voyf.test, explain_yf.test: Added C++ "final"
     and "override" support.

2017-04-15  Paul J. Lucas <paul@lucasmail.org>

   * AUTHORS, cdecl.1, lexer.l, test/Makefile.am, explain_a0b10i.out,
     explain_a0b10i.test: Added C++14 binary literal support.
   * AUTHORS, cdecl.1, help.c, parser.y, test/Makefile.am, declare_f.out,
     help-c++.out, help-c.out, declare_f.test: Made "returning" optional;
     reworked help syntax.
   * AUTHORS, cdecl.1, errors.c, keywords.c, lexer.l, literals.c, literals.h,
     parser.y, types.c, types.h, test/Makefile.am, declare_nfi_v-01.out,
     declare_nfi_v-02.out, explain_nfi_v.out, declare_nfi_v-01.test,
     declare_nfi_v-02.test, declare_ni.test, explain_nfi_v-c++.test,
     explain_nfi_v.test: Added C11 noreturn support.
   * cdecl.1: Added mention of default arguments not being supported.
   * AUTHORS, cdecl.1, autocomplete.c, help.c, keywords.c, literals.c,
     literals.h, parser.y, types.c, types.h, test/Makefile.am, declare_sxi.out,
     declare_xi.out, explain_sxi.out, explain_xi.out, help-c++.out,
     declare_sxi.test, declare_xi-c.test, declare_xi.test, explain_sxi.test,
     explain_xi-c.test, explain_xi.test: Added support for constexpr.
   * parser.y: Fixed type_modifier_list_english; reduced shift/reduce conflicts
     to 1.
   * autocomplete.c: Removed ansi, preansi, c++.
   * AUTHORS, cdecl.1, errors.c, gibberish.c, help.c, parser.y,
     test/Makefile.am, cdecl--debug.out, cdecl-d.out, declare_cf_v.out,
     explain_cf_v.out, explain_cvf_v.out, help-c++.out, help-c.out,
     declare_cf_v-c.test, declare_cf_v.test, declare_rf_v-c.test,
     declare_rf_v.test, explain_cf_v-c.test, explain_cf_v.test,
     explain_cvf_v.test: Added const/volatile member functions.

2017-04-14  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Fixed parse error reporting.
   * lexer.l: s/keyword_find/cdecl_keyword_find/
   * diagnostics.h: Removed unnecessary header.
   * debug.c, debug.h: Minor clean-up.
   * types.h: Now using ull suffix to ensure 64 bits.
   * parser.y: Fixed DUMP_NUM().
   * configure.ac: Better checking for proper readline.
   * types.c, util.h, test/Makefile.am, declare_esf_v.test, explain_esf_v.test,
     explain_fsf_v.test: Now checking that at most one storage class is given.
   * AUTHORS, cdecl.1, autocomplete.c, help.c, keywords.c, literals.c,
     literals.h, parser.y, types.c, types.h, util.h, test/Makefile.am,
     declare_ff_v.out, explain_ff_v.out, help-c++.out, declare_ff_v-c.test,
     declare_ff_v.test, explain_ff_v-c.test, explain_ff_v.test: Added C++
     "friend" function support.
   * cdecl.1: Added example for first command-line argument parsing.
   * cdecl.c, util.c, util.h: Renamed readline_wrapper to read_input_line.
   * help.c, parser.y, util.c, util.h: Added PUTC_OUT and PUTS_OUT.
   * ast.h, diagnostics.h, parser.y: Added C_AST_NEW().
   * parser.y, test/Makefile.am, explain_cast_ri.out, explain_cast_ri.test:
     Added cast into reference test.
   * parser.y: Removed unnecessary code.
   * parser.y: More grammar clean-up.
   * parser.y: Grammar clean-up.
   * parser.y: s/pointer_to/pointer_to_english/
   * parser.y: Renamed "explain" to "explain_c".
   * parser.y: Added declare_name_as_english.
   * parser.y: Added name_into_english.

2017-04-13  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: More comments.
   * ast.c, ast.h: s/unsigned/c_ast_id_t/
   * ast_util.c, test/Makefile.am, cdecl--debug.out, cdecl-d.out,
     explain_nfi_c.out, explain_nfi_c.test: Fixed explain char (f)(int).
   * ast_util.c, test/Makefile.am, explain_ni.out, explain_ni.test: Fixed
     "explain int (x)".
   * ast.h: Updated comment to mention post-order traversal.
   * english.c: Now using visitor function to generate English.
   * errors.c: Fixed typos in comments.
   * configure.ac: Fixed copy/paste error.
   * configure.ac: Now requiring either bison or byacc.
   * configure.ac: Now checking for and requiring flex specifically.
   * cdecl.1: Made caveats more consise.
   * lang.c, lang.h: Swapped order of struct members.
   * cdecl.1: Removed extraneous ';'.
   * cdecl.1: Minor additions.

2017-04-12  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added caveat about fully qualified C++ member functions.
   * cdecl.1: Added COLUMNS.
   * diagnostics.h: More comments.
   * diagnostics.c, diagnostics.h, parser.y: yyerror() now uses the same error
     location printing code.
   * diagnostics.h: Added to print_hint() docs.
   * configure.ac: Normalized feature configuration.
   * diagnostics.c: Added needed #ifdef WITH_TERM_COLUMNS.
   * configure.ac: Removed " to disable".
   * parser.y: Fixed duplicate printing of token in error message.
   * diagnostics.c, util.h: Fixed non-interactive error message printing.
   * cdecl.1, color.c, color.h, diagnostics.c: Partial support for "locus"
     color.
   * color.h: Removed "note".
   * set.out, set_options.out: Fixed "set" expected results.
   * set.c: Removed HAVE_READLINE.
   * configure.ac, lib/Makefile.am, string.in.h, strsep.c, gnulib-cache.m4,
     gnulib-comp.m4, string_h.m4, strsep.m4: Added strsep().
   * lexer.l, prompt.c, util.h: Some Solaris fixes.
   * cdecl.1: Added mention that template declarations are not supported.
   * cdecl.1, autocomplete.c, help.c, keywords.c, literals.c, literals.h,
     parser.y, types.c, types.h, test/Makefile.am, declare_z.out,
     explain_z.out, help-c++.out, help-c.out, declare_z-knr.test,
     declare_z.test, explain_z-knr.test, explain_z.test: Added support for
     size_t.
   * configure.ac, diagnostics.c, util.c, util.h: Now horizontally "scrolling"
     long input lines.
   * declare_fipfi_v_pfi_v.test: Removed space.

2017-04-10  Paul J. Lucas <paul@lucasmail.org>

   * errors.c: Removed redundant checks.
   * parser.y: Fixed error message after "returning".
   * configure.ac: Added int type checks.
   * lexer.l: Went back to using getline().

2017-04-09  Paul J. Lucas <paul@lucasmail.org>

   * types.c, test/Makefile.am, declare_ci-knr.test, declare_pv-knr.test,
     declare_vi-knr.test, explain_ci-knr.test, explain_pv-knr.test,
     explain_vi-knr.test: Now checking current language against storage classes
     and qualifiers.
   * errors.c, keywords.c, keywords.h, lang.h, types.c, types.h: Flipped
     type-check table to contain valid languages; removed keyword language
     column -- not used.
   * parser.y: Added SYNTAX_ERROR().
   * ast.c, ast.h, ast_util.c, ast_util.h, autocomplete.c, cdecl.c, color.c,
     color.h, common.h, debug.c, debug.h, diagnostics.c, english.c, errors.c,
     gibberish.c, help.c, keywords.c, keywords.h, kinds.c, kinds.h, lang.c,
     lang.h, lexer.h, lexer.l, literals.c, literals.h, options.c, options.h,
     parser.y, prompt.c, prompt.h, set.c, types.c, util.c, util.h: Added more
     @file comments.
   * color.c, color.h, options.c: Renamed parse_gcc_colors to colors_parse.
   * lexer.l, parser.y: Added missing copyright/license.
   * AUTHORS: Added Alexander Dupuy; list of languages; mention of AST.
   * cdecl.1: Added Alexander Dupuy; fixed small stuff.

2017-04-08  Paul J. Lucas <paul@lucasmail.org>

   * COPYING, Makefile.am, configure.ac, man/Makefile.am, man/man1/Makefile.am,
     man/man1/c++decl.1, cdecl.1, src/Makefile.am, ast.c, ast.h, ast_util.c,
     ast_util.h, autocomplete.c, cdecl.c, color.c, color.h, common.h, debug.c,
     debug.h, diagnostics.c, diagnostics.h, english.c, errors.c, gibberish.c,
     help.c, keywords.c, keywords.h, kinds.c, kinds.h, lang.c, lang.h, lexer.h,
     literals.c, literals.h, options.c, options.h, prompt.c, prompt.h, set.c,
     types.c, types.h, util.c, util.h, test/Makefile.am, run_test.sh: Put under
     GPLv3.
   * diagnostics.c, errors.c: Added warnign for function arguments.
   * ast.h, ast_util.h, errors.c, parser.y: Reworked error checking.
   * test/Makefile.am, cdecl--no-semicolon.out, cdecl-s.out,
     cdecl--no-semicolon.test, cdecl-s.test: More command-line tests.
   * test/Makefile.am, cdecl--debug.out, cdecl-d.out, cdecl--debug.test,
     cdecl-d.test, cdecl-xx.test: Added -d tests.
   * gibberish.c, test/Makefile.am, declare_f_pmi.out, explain_f_pmi.out,
     declare_f_pmi.test, explain_f_pmi.test: Fixed function returning pointer
     to member.
   * parser.y: Removed wrong check_strdup() and memory leak.

2017-04-07  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Fixed spacing on DUMP_AST_LIST().
   * cdecl.1: More caveats.
   * errors.c, parser.y: Moved "missing function prototype" warning.
   * test/Makefile.am, declare_b.out, declare_w.out, explain_b.out,
     explain_w.out, declare_b-c89.test, declare_b.test, declare_c16-c++03.test,
     declare_c16-c99.test, declare_c32-c++03.test, declare_c32-c99.test,
     declare_w-c89.test, declare_w.test, explain_b-c89.test, explain_b.test,
     explain_c16-c++03.test, explain_c16-c99.test, explain_c32-c++03.test,
     explain_c32-c99.test, explain_w-c89.test, explain_w.test: Added bool,
     char16_t, char32_t, wchar_t tests.
   * types.c: Fixed typo in comment.
   * AUTHORS, cdecl.1, autocomplete.c, errors.c, gibberish.c, lexer.l,
     literals.c, literals.h, parser.y, types.c, types.h, test/Makefile.am,
     declare_0f_v.out, explain_0f_v-01.out, declare_0f_v-c.test,
     declare_0f_v.test, explain_0f_v-01.test, explain_0f_v-02.test,
     explain_0f_v-c.test: Added pure virtual member function support.
   * cdecl.c, common.h, diagnostics.c, lexer.h, lexer.l: Now printing error
     line when not a TTY.
   * cdecl.1: Added more caveats.
   * lexer.h, lexer.l, parser.y: Renamed my_text to lexer_token.
   * diagnostics.c, parser.y, set.c: Now using PUTS_ERR.
   * diagnostics.c, parser.y, util.h: Added PUTC_ERR, PUTS_ERR.

2017-04-06  Paul J. Lucas <paul@lucasmail.org>

   * common.h, diagnostics.c, lexer.h, lexer.l, parser.y: Added lexer.h;
     overrode YY_FATAL_ERROR.
   * common.h, diagnostics.c, diagnostics.h, lexer.l, parser.y: Renamed
     error_column() to lexer_column().

2017-04-05  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Renamed loc_reset() to newline(); split ; from \n.
   * cdecl.c: No longer appending ';' at end of command-line.
   * diagnostics.c, errors.c, lang.c, lang.h, options.c, set.c: Some renamings.
   * errors.c, keywords.h, lang.c, lang.h, options.c, options.h, set.c,
     types.c, types.h: Rename lang_t to c_lang_t.
   * types.c: Flipped c_type_info field order.
   * test/Makefile.am, declare_c.out, declare_n.out, explain_c.out,
     explain_n.out, declare_c-c.test, declare_c.test, declare_n.test,
     explain_c-c.test, explain_c.test, explain_n.test: Added class and union
     tests.
   * test/Makefile.am, declare_e.out, explain_e.out, declare_e-knr.test,
     declare_e.test, explain_e-knr.test, explain_e.test: Added enum tests.
   * gibberish.c, test/Makefile.am, declare_k.out, explain_k.out,
     declare_k.test, explain_k.test: Fixed struct gibberish.
   * types.c: Fixes to types table.

2017-04-04  Paul J. Lucas <paul@lucasmail.org>

   * src/Makefile.am, ast.c, ast.h, kinds.c, kinds.h: Split out kinds.[ch].
   * cdecl.1, lang.c, lang.h, types.c: Split out C++03 for completeness.
   * parser.y: Now printing "unexpected end of command."
   * parser.y: Got rid of command_init.
   * parser.y: Folded in command_cleanup.
   * lexer.l, parser.y: I think I fixed the EOF issue.

2017-04-03  Paul J. Lucas <paul@lucasmail.org>

   * lexer.l: Renamed eof to my_eof.
   * lexer.l: Adjusted my_col_newline.
   * cdecl.1: Added mention of varargs; Gibberish section; reference
     declaration caveat.
   * parser.y, test/Makefile.am, declare_cu.out, explain_cu.out,
     declare_cu.test, explain_cu.test: Fixed "const unsigned".
   * types.c: Moved complex up so it appears first in English.
   * test/Makefile.am, declare_zd.out, declare_zf.out, explain_zd.out,
     explain_zf.out, declare_zd.test, declare_zf.test, explain_zd.test,
     explain_zf.test: Some complex tests.
   * cdecl.1, test/Makefile.am, declare_ld.out, explain_ld.out,
     declare_ld-knr.test, declare_ld.test, explain_ld-knr.test,
     explain_ld.test: Added long double tests.
   * common.h, diagnostics.c, lexer.l, parser.y: No longer relying on
     apparently broken YYTEXT_POINTER.
   * autocomplete.c, cdecl.c, util.c, util.h: Some Linux fixes.
   * options.c: Added missing #include <stdlib.h>.
   * cdecl.1: Added missing --color; more clean-up.
   * options.c: Got rid of old options.
   * types.c: Correctly put wchar_t into C95.
   * types.c, test/Makefile.am, declare_ll-c89.test, declare_ll-knr.test,
     explain_ll-c89.test, explain_ll-knr.test: Fixed C version for long long;
     more tests.
   * test/Makefile.am, declare_hd.test, declare_hf.test, declare_hl.test,
     declare_hll.test, declare_sc-knr.test, declare_si-knr.test,
     declare_sl-knr.test, declare_ud.test, declare_uf.test, explain_hd.test,
     explain_hf.test, explain_hl.test, explain_hll.test, explain_sc-knr.test,
     explain_si-knr.test, explain_sl-knr.test, explain_ud.test,
     explain_uf.test: More type tests.

2017-04-02  Paul J. Lucas <paul@lucasmail.org>

   * configure.ac, test/Makefile.am, set_noyydebug.out, set_yydebug.out,
     set_noyydebug.test, set_yydebug.test: Added set_yydebug tests.
   * test/Makefile.am, set_debug.out, set_nodebug.out, set_debug.test,
     set_nodebug.test: Added set debug tests.
   * lexer.l, parser.y, set.c, test/Makefile.am, set_c++.out, set_c++03.out,
     set_c++11.out, set_c++98.out, set_c.out, set_c11.out, set_c89.out,
     set_c99.out, set_cknr.out, set_knr.out, set_knrc.out, set_noprompt.out,
     set_nosemicolon.out, set_prompt.out, set_semicolon.out, set_c++.test,
     set_c++03.test, set_c++11.test, set_c++98.test, set_c.test, set_c11.test,
     set_c89.test, set_c99.test, set_cknr.test, set_knr.test, set_knrc.test,
     set_noprompt.test, set_nosemicolon.test, set_prompt.test,
     set_semicolon.test: Now accepting c++ names for set options; more set
     tests.
   * lang.c, lang.h, options.c: Now only one lang_map.
   * test/Makefile.am, declare_lf.out, explain_lf.out, declare_lf-c.test,
     declare_lf.test, explain_lf-c.test, explain_lf.test: long float tests.
   * test/Makefile.am, declare_hw.test, declare_lw.test, declare_sw.test,
     declare_uw.test: More declare error tests.
   * test/Makefile.am, explain_hw.test, explain_lw.test, explain_sw.test,
     explain_uw.test: More type tests.
   * errors.c, parser.y, types.c, types.h, test/Makefile.am, declare_hc.test,
     declare_hc16.test, declare_hc32.test, declare_hv.test, declare_lb.test,
     declare_lc.test, declare_lc16.test, declare_lc32.test, declare_lv.test,
     declare_sb.test, declare_sc16.test, declare_sc32.test, declare_sv.test,
     declare_ub.test, declare_uc16.test, declare_uc32.test, declare_uv.test:
     Better type-checking; more tests.
   * errors.c: Converted c_ast_check_errors() to using a visitor function.
   * types.c, test/Makefile.am, explain_uc.out, declare_hb.test,
     explain_hb.test, explain_hc.test, explain_hc16.test, explain_hc32.test,
     explain_hv.test, explain_lb.test, explain_lc.test, explain_lc16.test,
     explain_lc32.test, explain_lv.test, explain_sb.test, explain_sc16.test,
     explain_sc32.test, explain_sv.test, explain_ub.test, explain_uc.test,
     explain_uc16.test, explain_uc32.test, explain_uv.test: Added more negative
     explain tests.
   * errors.c: More error checking.
   * parser.y: Added cv_qualifier_c.
   * types.c, util.h: Moved only_one_bit_set().

2017-04-01  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: More error productions.
   * ast.h, common.h, parser.y: Moved c_ast_pair to ast.h; renamed top_ast to
     just ast.
   * parser.y: Added %expect.
   * parser.y: Now using string literals for some tokens.
   * lexer.l, parser.y: Added lexer_reset().
   * ast.c, ast_util.c, autocomplete.c, color.c, debug.c, errors.c,
     gibberish.c, lang.c, options.c, parser.y, types.c, util.c: Now more
     explicit != NULL in asserts.
   * errors.c, types.c: Added ().
   * test/Makefile.am, declare_fsi_v.test, explain_fsi_v.test: static function
     argument test.
   * test/Makefile.am, declare_vf_v-c.test, explain_vf_v-c.test: virtual C
     test.
   * test/Makefile.am: Renamed help tests.
   * cdecl.1, help.c, help_c.out, help_cxx.out: Added "virtual" to help.
   * ast_util.c, autocomplete.c, english.c, errors.c, gibberish.c, keywords.c,
     literals.c, literals.h, parser.y, types.c, types.h, test/Makefile.am,
     declare_ea2i.out, declare_sa2i.out, declare_sf_v.out, declare_vf_v.out,
     explain_ea2i.out, explain_sa2i.out, explain_sf_v.out, explain_vf_v.out,
     declare_ea2i.test, declare_sa2i.test, declare_sf_v.test,
     declare_vf_v.test, explain_ea2i.test, explain_sa2i.test,
     explain_sf_v.test, explain_vf_v.test: Added virtual functions; fixed
     several other errors.

2017-03-31  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Added missing L_RVALUE.
   * AUTHORS, cdecl.1, ast.c, ast.h, ast_util.c, debug.c, english.c, errors.c,
     gibberish.c, lexer.l, literals.c, literals.h, parser.y, test/Makefile.am,
     declare_frri_v.out, explain_frri_v.out, declare_frri_v.test,
     explain_frri_v-c++03.test, explain_frri_v.test, explain_prri.test: Added
     rvalue references.
   * errors.c, test/Makefile.am, explain_pmi-c.test, explain_ri-c.test: Now
     checking for references and pointers-to-member in C.
   * errors.c, test/Makefile.am, explain_pmfii_pk.out, explain_fx_v.test,
     explain_pmfii_pk.test: Now checking for typeless function arguments in
     C++.

2017-03-30  Paul J. Lucas <paul@lucasmail.org>

   * set.out, set_options.out: Changed expected results for noyydebug.
   * errors.c, test/Makefile.am, explain_gk.test: Now checking for register
     struct.
   * parser.y, test/Makefile.am, explain_ck.out, explain_kc.out,
     explain_ck.test, explain_kc.test: Modified grammar to allow modifiers for
     enum, class, struct, union.
   * test/Makefile.am: Changed "struct" to "k".
   * test/Makefile.am, explain_cs.test: Added missing "char signed" test.
   * errors.c: Removed CDECL_AST_UTIL_INLINE.
   * src/Makefile.am, ast_util.h, parser.y: Renamed ast_check.c to errors.c.
   * configure.ac: Added WITH_CDECL_DEBUG AM_CONDITIONAL.
   * src/Makefile.am: Put debug.c within WITH_CDECL_DEBUG.
   * options.c, options.h: Added missing #ifdefs.
   * common.h, debug.c, debug.h, parser.y: Simplified debug output.
   * ast.h, debug.c, debug.h, parser.y, util.c, util.h: Added debug.h.
   * cdecl.1: Added mention of multiline input.
   * cdecl.1: Added mention of escaped newlines; more clean-up.
   * lexer.l: Removed "English".
   * AUTHORS, lexer.l, parser.y, test/Makefile.am, explain_keywords.out,
     explain_keywords.test: Now treating cdecl keywords in declarations as
     ordinary names.
   * lexer.l: Added comment.
   * lexer.l: Now accepts escaped newlines in files.
   * cdecl.c: Variable renaming.
   * cdecl.c: Removed cdecl_init().
   * src/Makefile.am, cdecl.c, common.h, diagnostics.c, prompt.c, prompt.h,
     set.c: Moved prompt code into separate .c file.
   * util.h: Fixed typo.

2017-03-29  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c: Added comment.
   * cdecl.c, common.h, diagnostics.c, lexer.l, set.c, util.c, util.h: Now
     support escaped newlines.
   * util.h: Added REALLOC().
   * cdecl.1: Fixed Hansen's options.
   * cdecl.1: More additions.
   * gibberish.c, parser.y, test/Makefile.am, declare_pmf_pc.out,
     explain_pmf_pc.out, declare_pmf_pc.test, explain_pmf_pc.test: Fixed
     declare_pmf_pc.test.

2017-03-28  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c, test/Makefile.am, declare_pmf_i.out, explain_pmf_i.out,
     declare_pmf_i.test, explain_pmf_i.test: Fixed gibberish of a pointer to
     member of class function returning int.
   * set.out, set_options.out: Forgot to s/semicolons/semicolon/
   * cdecl.1: More updates.
   * options.c, options.h, parser.y, set.c: Now opt_semicolon (singular).
   * man/Makefile.am, man/man1/Makefile.am, src/Makefile.am, ast.c, ast.h,
     ast_check.c, ast_util.c, ast_util.h, color.c, color.h, common.h, debug.c,
     diagnostics.c, diagnostics.h, english.c, gibberish.c, keywords.c,
     keywords.h, lang.c, lang.h, literals.c, literals.h, types.c, types.h:
     Added name.
   * src/Makefile.am, ast_check.c, common.h, diagnostics.h, lang.c, parser.y,
     types.c, types.h: Split error/warning code into diagnostics.c.
   * parser.y: Minor changes.
   * parser.y, test/Makefile.am, explain_fipfi_v_pfi_v.out,
     explain_fipfi_v_pfi_v.test: Fixed signal() test.

2017-03-27  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.1: Added Leroy's contributions.
   * test/Makefile.am, declare_fipfi_v_pfi_v.out, declare_fipfi_v_pfi_v.test:
     Declare signal() test.
   * test/Makefile.am, declare_fpfc_i_d.out, explain_fpfc_i_d.out,
     declare_fpfc_i_d.test, explain_fpfc_i_d.test: More tests.
   * AUTHORS: Added mention of better errors and warnings.
   * AUTHORS: Added more detail.
   * keywords.c: Added variadic function argument support.
   * ast.c, ast.h, ast_check.c, debug.c, english.c, gibberish.c, lexer.l,
     literals.c, literals.h, parser.y, test/Makefile.am, declare_fcce_v-01.out,
     declare_fcce_v-02.out, declare_fcce_v-03.out, explain_fcce_v.out,
     declare_fcce_v-01.test, declare_fcce_v-02.test, declare_fcce_v-03.test,
     explain_fcce_v.test, explain_fe_v.test, explain_fecc_v.test,
     explain_fee_v.test, explain_fev_v.test, explain_fve_v.test,
     explain_fvv_v.test: Added variadic function argument support.
   * options.c: s/no-semicolons/no-semicolon/

2017-03-26  Paul J. Lucas <paul@lucasmail.org>

   * options.c, options.h, parser.y, set.c, cl-declare_i.out,
     declare_a3a5a7i.out, declare_a3a5i.out, declare_a3a5pfv_i.out,
     declare_a3a5pfv_pi.out, declare_a3a5pfv_ppa7a9i.out,
     declare_a3a5pfv_ppa7a9pc.out, declare_a3a5pfv_ppa7i.out,
     declare_a3a5pfv_ppa7pi.out, declare_a3a5pfv_ppi.out, declare_a3pfv_i.out,
     declare_a3ppfv_i.out, declare_a9cpi.out, declare_a9i.out,
     declare_a9pi.out, declare_bii_d.out, declare_ci.out, declare_constant.out,
     declare_cpa3cpa5i.out, declare_cpa3pa5i.out, declare_cpa9ci.out,
     declare_cpa9i.out, declare_cpbv_pi.out, declare_cpcpi.out,
     declare_cpfv_pi.out, declare_cpi.out, declare_cpmi.out, declare_cppi.out,
     declare_cvpi.out, declare_f_pi.out, declare_fg_v.out, declare_fgi_v.out,
     declare_fid_v.out, declare_fii_v.out, declare_fixiy_v.out,
     declare_fpc_pi.out, declare_fpci_pi.out, declare_fv_pa3a5i.out,
     declare_fv_pa3a5pi.out, declare_fv_pa3i.out, declare_fv_pa3pi.out,
     declare_fv_v.out, declare_fx_pi.out, declare_gi.out, declare_ll.out,
     declare_pa3cpa5i.out, declare_pa3pa5i.out, declare_pa9i.out,
     declare_pbv_pi.out, declare_pcpi.out, declare_pfv_pi.out,
     declare_pfv_ri.out, declare_pfx_i.out, declare_pi.out, declare_pmci.out,
     declare_pmi.out, declare_ppi.out, declare_rci.out, declare_rcpi.out,
     declare_ref.out, declare_ri.out, declare_rpi.out, declare_sc.out,
     declare_si.out, declare_sll.out, declare_ti.out, declare_type.out,
     declare_u.out, declare_uc.out, declare_ui.out, declare_ull.out,
     declare_vcpi.out, declare_vpi.out, file-declare_i.out, set.out,
     set_options.out: Reworked command-line options; not emitting ';' by
     default.
   * test/Makefile.am, declare_rv.test, explain_rv.test: Reference to void
     tests.
   * test/Makefile.am, declare_b_ai.test, declare_b_f_i.test,
     declare_f_f_i.test, declare_fiiv_v.test, declare_fiv_v.test,
     declare_fvx_v.test, declare_lll.test, explain_b_ai.test, explain_v.test:
     More tests.
   * ast_util.c: Removed apparently uncecessary check for K_NONE.
   * ast.h, ast_util.c, test/Makefile.am, explain_f_ai.test: Now forbidding
     array of function.

2017-03-25  Paul J. Lucas <paul@lucasmail.org>

   * parser.y: Now only incrementing ast_depth in nested declarations.
   * test/Makefile.am: Renamed test.
   * ast_check.c: Added break.
   * ast_check.c, test/Makefile.am, declare_f_rai.test: Fixed function
     return-type check.
   * src/Makefile.am, ast_check.c, ast_util.c: Split off c_ast_check().
   * AUTHORS, ast_util.c, test/Makefile.am, explain_fiiv_v.test,
     explain_fiv_v.test, explain_fvi_v.test, explain_fvx_v.test: Now checking
     function arguments.
   * ast_util.c, parser.y, test/Makefile.am, declare_pmri.test,
     declare_pri.test, declare_rgi.test, explain_pmgi.test, explain_pmri.test,
     explain_pri.test, explain_rgi.test: Moved all semantic checks to
     ast_util.c; added more tests.
   * parser.y: Rearranged productions.
   * parser.y: Replaced cast grammar with modified declaration grammar.
   * test/Makefile.am, cast_bii_d.out, cast_ci.out, cast_constant.out,
     cast_cpa3pa5i.out, cast_cpa9ci.out, cast_cpa9i.out, cast_cpbv_pi.out,
     cast_cpcpi.out, cast_cpfv_pi.out, cast_cpi.out, cast_cppi.out,
     cast_cvpi.out, cast_ll.out, cast_pa3cpa5i.out, cast_pa3pa5i.out,
     cast_pa9i.out, cast_pbv_pi.out, cast_pcpi.out, cast_pfv_pi.out,
     cast_ppi.out, cast_sc.out, cast_si.out, cast_sll.out, cast_u.out,
     cast_uc.out, cast_ui.out, cast_ull.out, cast_vcpi.out, cast_vpi.out,
     declare_pfx_i.out, cast_a3i.test, cast_bii_d.test, cast_ci.test,
     cast_constant.test, cast_cpa3pa5i.test, cast_cpa9ci.test, cast_cpa9i.test,
     cast_cpbv_pi.test, cast_cpcpi.test, cast_cpfv_pi.test, cast_cpi.test,
     cast_cppi.test, cast_cvpi.test, cast_gi.test, cast_ll.test,
     cast_pa3cpa5i.test, cast_pa3pa5i.test, cast_pa9i.test, cast_pbv_pi.test,
     cast_pcpi.test, cast_pfv_pi.test, cast_ppi.test, cast_sc.test,
     cast_si.test, cast_sll.test, cast_ti.test, cast_type.test, cast_u.test,
     cast_uc.test, cast_ui.test, cast_ull.test, cast_vcpi.test, cast_vpi.test,
     declare_pfx_i.test: Many more cast tests.
   * ast_util.c: Split out c_ast_check_cast().
   * test/Makefile.am, explain_cast_vcpi.out, explain_cast_vpi.out,
     explain_cast_vcpi.test, explain_cast_vpi.test: More explain cast tests.
   * types.h: Added T_STORAGE.
   * test/Makefile.am, explain_cast_ll.out, explain_cast_pa3a5i.out,
     explain_cast_pa3cpa5i.out, explain_cast_pa3pa5i.out,
     explain_cast_pa9i.out, explain_cast_pbv_pi.out, explain_cast_pcpi,
     explain_cast_pcpi.out, explain_cast_pfv_pi.out, explain_cast_ppi.out,
     explain_cast_rpi.out, explain_cast_ai.test, explain_cast_ei.test,
     explain_cast_ll.test, explain_cast_lll.test, explain_cast_pa3a5i.test,
     explain_cast_pa3cpa5i.test, explain_cast_pa3pa5i.test,
     explain_cast_pa9i.test, explain_cast_pbv_pi.test, explain_cast_pcpi.test,
     explain_cast_pfv_pi.test, explain_cast_ppi.test, explain_cast_rpi.test,
     explain_cast_si.test, explain_cast_ti.test, explain_lll.test: More explain
     cast tests.
   * ast.c, ast.h, ast_util.c, ast_util.h, util.h, test/Makefile.am,
     explain_cast_gi.test: Now forbidding cast to register.
   * test/Makefile.am, explain_cast_cpa3pa5i.out, explain_cast_cpa9ci.out,
     explain_cast_cpa9i.out, explain_cast_cpbv_pi.out, explain_cast_cpcpi.out,
     explain_cast_cpfv_pi.out, explain_cast_cpi.out, explain_cast_cppi.out,
     explain_cast_cvpi.out, explain_cast_cpa3pa5i.test,
     explain_cast_cpa9ci.test, explain_cast_cpa9i.test,
     explain_cast_cpbv_pi.test, explain_cast_cpcpi.test,
     explain_cast_cpfv_pi.test, explain_cast_cpi.test, explain_cast_cppi.test,
     explain_cast_cvpi.test: More explain cast tests.

2017-03-24  Paul J. Lucas <paul@lucasmail.org>

   * test/Makefile.am, explain_cast_cpa3cpa5i.out, explain_cast_cpa3cpa5i.test:
     More tests.
   * parser.y: %type reordering.
   * parser.y: Moved array_size_c.
   * parser.y: Removed not-so-good error message.
   * gibberish.c, test/Makefile.am, cast_cpa3cpa5i.out, cast_pf_i-01.out,
     cast_pf_i-02.out, cast_pfii_i.out, cast_pfx_i.out, cast_cpa3cpa5i.test:
     Removed more spaces from casts.
   * test/Makefile.am, explain_cast_ci.out, explain_cast_ic.out,
     explain_cast_ci.test, explain_cast_ic.test: More explain cast tests.
   * test/Makefile.am, declare_v.test: Added void test.
   * test/Makefile.am: Split off error tests.
   * ast_util.c, parser.y, test/Makefile.am, declare_gf_v.test: Put "register"
     back for English storage class.
   * cdecl.c: Fixed resetting of lexer state on error.
   * src/Makefile.am, keywords.c, parser.c, parser.h: Renamed lexer and parser
     files.
   * test/Makefile.am, explain_gf_v.test: Added register function test.
   * ast_util.c, cdgram.y, test/Makefile.am, cast_f_i.test,
     explain_cast_a3a5a7i.test, explain_cast_a3a5i.test: More tests; now
     prohibit cast into function.
   * ast_util.c, ast_util.h, cdgram.y, test/Makefile.am, explain_cast_a3i.test:
     Now prohibiting casting into an array.
   * ast.h: Removed blank line.
   * ast_util.c, cdgram.y, test/Makefile.am, explain_cast_a3a5a7i.out,
     explain_cast_a3a5a7i.test: Fixed cast test.

2017-03-23  Paul J. Lucas <paul@lucasmail.org>

   * ast_util.c, ast_util.h, cdgram.y: Fixed test.
   * test/Makefile.am, explain_cast_ull.out, explain_cast_ull.test: Fixed test.
   * test/Makefile.am: Reordered tests.
   * test/Makefile.am, declare_vcpi.out, declare_vpi.out, explain_vpi.out,
     declare_vcpi.test, declare_vpi.test, explain_vpi.test: More tests.
   * test/Makefile.am, explain_cs.out, explain_fv_v.out, explain_pa3cpa5i.out,
     explain_pa3pa5i.out, explain_pbv_pi.out, explain_pcpi.out,
     explain_pfv_pi.out, explain_ppi.out, explain_sc.out, explain_ull.out,
     explain_fv_v.test, explain_pa3cpa5i.test, explain_pa3pa5i.test,
     explain_pbv_pi.test, explain_pcpi.test, explain_pfv_pi.test,
     explain_ppi.test, explain_sc.test, explain_ull.test: More tests.
   * test/Makefile.am, explain_fv_pa3a5pi.out, explain_fv_pa3i.out,
     explain_fv_pa3pi.out, explain_fv_pa3a5pi.test, explain_fv_pa3i.test,
     explain_fv_pa3pi.test: More tests.
   * test/Makefile.am, declare_fpci_pi.out, declare_fpci_pi.test,
     explain_fpci_pi.test: Another test.
   * ast_util.c, test/Makefile.am, explain_fv_pa3a5i.out,
     explain_fv_pa3a5i.test: Fixed test.
   * ast.c: Added c_ast_has_cycle().
   * test/Makefile.am, declare_fid_v.out, declare_fv_pa3a5i.out,
     declare_fid_v.test, declare_fv_pa3a5i.test: More tests.
   * cdgram.y: Now calling parse_clearup() from yyerror().
   * ast_util.h: Added comment about caller being responsible for freeing name.
   * ast.c, ast.h, ast_util.c, ast_util.h, cdgram.y, english.c, gibberish.c:
     Can now pass visit direction to visitor functions.
   * ast.c, ast.h, ast_util.c: s/c_ast_visit/c_ast_visit_down/
   * ast_util.c, ast_util.h, gibberish.c, test/Makefile.am, declare_fpc_pi.out,
     declare_fpc_pi.test: Fixed gibberish spacing for nameless function
     arguments.

2017-03-22  Paul J. Lucas <paul@lucasmail.org>

   * ast.c: Added missing #define CDECL_AST_INLINE _GL_EXTERN_INLINE.
   * test/Makefile.am, declare_f_pi.out, explain_cpcpi.out, explain_cppi.out,
     explain_fixiy_v.out, declare_f_pi.test, explain_cpcpi.test,
     explain_cppi.test, explain_fixiy_v.test: More tests.
   * ast_util.c, cdgram.y, test/Makefile.am, explain_cpbv_pi.out,
     explain_cpbv_pi.test: Fixed pointer to blocks.
   * declare_cpfv_pi.out, explain_cpfv_pi.out, declare_cpfv_pi.test,
     explain_cpfv_pi.test: More tests.
   * cdgram.y: s/func/block/
   * test/Makefile.am, declare_cpi.out, explain_cpa3pa5i.out,
     explain_cpa9ci.out, explain_cpa9i.out, declare_cpi.test,
     explain_cpa3pa5i.test, explain_cpa9ci.test, explain_cpa9i.test: More
     tests.
   * test/Makefile.am, cast_pci.out, cast_pfii_i.out, cast_pi.out,
     explain_cast_pci.out, explain_cast_pfpi_i.out, explain_cast_pi.out,
     explain_cast_pic.out, cast_pci.test, cast_pf_i-02.test, cast_pfii_i.test,
     cast_pi.test, explain_cast_pci.test, explain_cast_pfpi_i.test,
     explain_cast_pi.test, explain_cast_pic.test: Test reorganization.
   * cast_pc.test, cast_pcc.test, cast_pf_i-01.test, cast_pf_i-02.test,
     cast_pfpci_i.test, cast_pfx_i.test, cast_pmi.test: Expanded abbreviations.
   * ast_util.c, ast_util.h, cdgram.y, test/Makefile.am, explain_cpa3cpa5i.out,
     explain_cpa3cpa5i.test: Now handling pointer to array of pointer to array.
   * AUTHORS, cdgram.y, test/Makefile.am, declare_fg_v.out, declare_fgi_v.out,
     declare_fg_v.test, declare_fgi_v.test: Changed "register" to be a modifier
     to handle register function arguments.
   * cdgram.y, test/Makefile.am, declare_gi.out, explain_fg_v.out,
     explain_fgi_v.out, explain_gi.out, explain_ig.out, declare_gi.test,
     explain_fg_v.test, explain_fgi_v.test, explain_gi.test, explain_ig.test:
     Added some register tests; fixed default int type.
   * ast.c: Moved function.
   * ast.c, ast.h: Removed clone functions -- not used.
   * english.c, gibberish.c: Added @file comments.
   * src/Makefile.am, ast.c, ast.h, ast_util.c, ast_util.h, cdgram.y: Moved AST
     algorithm functions to ast_util.c.

2017-03-21  Paul J. Lucas <paul@lucasmail.org>

   * ast.c, ast.h, cdgram.y: Moved c_ast_is_parent() to ast.h.
   * test/Makefile.am: More tests.
   * test/Makefile.am, explain_a3a5pfv_ppi.out, explain_a9cpi.out,
     explain_bii_d.out, explain_a3a5pfv_ppi.test, explain_a9cpi.test,
     explain_bii_d.test: More tests.
   * ast.c, ast.h, cdgram.y, test/Makefile.am, explain_a3a5pfv_ppa7pi.out,
     explain_a3a5pfv_ppa7pi.test: c_ast_patch_none() now traverses to root, if
     necessary.
   * test/Makefile.am, explain_a3a5pfv_ppa7i.out, explain_a3a5pfv_ppa7i.test:
     More tests.
   * test/Makefile.am, declare_cpri.out, declare_pfv_ri.out, explain_ri.out,
     explain_rpi.out, declare_cpri.test, declare_pfv_ri.test, explain_ri.test,
     explain_rpi.test: More reference tests.
   * test/Makefile.am: Renamed test.
   * test/Makefile.am, declare_pi.out, declare_pi.test: Renamed test.
   * ast.c: s/c_ast_head/c_ast_gc_head/
   * ast.c: Minor clean-up.
   * cdgram.y, common.h: Renamed syn_attr to c_ast_pair.
   * cdgram.y: Put assert() back; removed temp.
   * ast.c: All tests pass.

2017-03-19  Paul J. Lucas <paul@lucasmail.org>

   * cdgram.y: Got rid of using c_ast_clone().
   * ast.c: Added assert( loc ).
   * ast.c, ast.h, gibberish.c: Now only 1 copy of c_ast_vistor_kind().
   * cdgram.y, common.h: Temporary commit on syn_attr branch.
   * ast.c, ast.h, debug.c: Added AST node unique id.
   * test/Makefile.am, explain_a3a5pfv_pi.out, explain_a3a5pfv_ppa7a9i.out,
     explain_a3a5pfv_pi.test, explain_a3a5pfv_ppa7a9i.test: More tests.
   * cdgram.y: Now using literals in more places.

2017-03-17  Paul J. Lucas <paul@lucasmail.org>

   * cdlex.l, literals.c, literals.h: Added "mbr" as synonym for "member".
   * cdgram.y: Removed TYPE_PEEK() where apparently not needed.
   * ast.c: Fixed c_ast_list_clone() since c_ast_clone() no longer clones next.
   * types.h: Added comment.
   * ast.c, autocomplete.c, gibberish.c, util.h: Added C++-like CONST_CAST and
     REINTERPRET_CAST macros.

2017-03-16  Paul J. Lucas <paul@lucasmail.org>

   * cdgram.y: Now using bitwise or.
   * test/Makefile.am: Renamed tests so r no longer means "returning".
   * ast.c, ast.h, gibberish.c: Change c_kind to use individual bits.
   * cdgram.y, test/Makefile.am, explain_a3a5pfv_ri.out,
     explain_a3a5pfv_ri.test: Fixed another explain test.
   * cdgram.y: No longer using qualifier_push() for block_decl_c.
   * gibberish.c: Reference fix.
   * gibberish.c, test/Makefile.am, declare_bii_rd.out, declare_cpbv_rpi.out,
     declare_pbv_rpi.out, declare_bii_rd.test, declare_cpbv_rpi.test,
     declare_pbv_rpi.test: Blocks now work.
   * cdlex.l: Added (missing) L_BLOCK.
   * cdgram.y: Now calling yyclearin to clear lookahead after error.
   * configure.ac, cdecl.c, common.h, options.c: Now disabling color prompts on
     non-genuine GNU readline.

2017-03-15  Paul J. Lucas <paul@lucasmail.org>

   * gibberish.c: Added g_param_space().
   * ast.c, ast.h, cdgram.y, english.c, test/Makefile.am, explain_fid_rv.out,
     explain_fid_rv.test: Fixed named function arguments.
   * cdgram.y: Makde block closer to function.
   * gibberish.c: Added c_ast_has_ancestor().
   * gibberish.c: Array and function unification.
   * declare_a3a5pfv_rppa7pi.out: Correction.
   * test/Makefile.am: Added another (currently failing) test.
   * gibberish.c: Function reordering.
   * test/Makefile.am, declare_a3a5pfv_rppa7a9i.out,
     declare_a3a5pfv_rppa7i.out, declare_a3a5pfv_rppa7pi.out,
     declare_a3a5pfv_rppa7a9i.test, declare_a3a5pfv_rppa7i.test,
     declare_a3a5pfv_rppa7pi.test: More tests.
   * src/Makefile.am, ast.c, debug.c: Moved debug code to its own .c file.
   * src/Makefile.am, ast.c, english.c: Moved english code to its own .c file.
   * src/Makefile.am, ast.c, ast.h, gibberish.c, util.h: Moved gibberish code
     to its own .c file.
   * ast.c: Added root param to g_param_init().
   * ast.c, test/Makefile.am, declare_fv_rpa3a5i.out, declare_fv_rpa3a5pi.out,
     declare_fv_rpa3pi.out, declare_fv_rpa3a5i.test, declare_fv_rpa3a5pi.test,
     declare_fv_rpa3pi.test: Fixed another test.

2017-03-14  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, color.c, color.h, common.h, util.c, util.h: Prompt is in color.
   * help_c.out, help_cxx.out: Updated expected help.
   * color.c, color.h, help.c: Help is now in color.
   * ast.c: Removed erroneous "return".
   * ast.c: Added comment.
   * ast.c: Now using false_set().
   * ast.c, test/Makefile.am, declare_fv_rpa3i.out, declare_fv_rpa3i.test:
     Fixed function returning pointer to array test.
   * ast.c: Added temporarily braces.

2017-03-13  Paul J. Lucas <paul@lucasmail.org>

   * ast.c, ast.h, test/Makefile.am, declare_a3a5pfv_rppi.out,
     declare_a3a5pfv_rppi.test: Now using visitor data; fixed another test.
   * ast.c, test/Makefile.am, declare_a3a5pfv_rpi.out, declare_pfv_rpi.out,
     declare_a3a5pfv_rpi.test, declare_pfv_rpi.test: pointer to function
     returning pointer fix.
   * test/Makefile.am, declare_a3a5pfv_ri.out, declare_a3a5pfv_ri.test: Another
     test.
   * ast.c: Added c_ast_gibberish_space_name(), comments.
   * ast.c: Fixed another function test.
   * ast.c: Updated comment.
   * ast.c: Removed blank line.
   * color.h: Added more color constants.
   * test/Makefile.am, declare_cpmi.out, declare_pmci.out, declare_cpmi.test,
     declare_pmci.test: More pointer-to-member tests.
   * cdgram.y: Moved default_case.
   * cdgram.y: Added c_ast_add_func().
   * test/Makefile.am, declare_a3ppfv_ri.out, explain_a3ppfv_ri.out,
     declare_a3ppfv_ri.test, explain_a3ppfv_ri.test: More tests; one still
     fails.
   * cdgram.y, declare_a3a5pfv_rppa7a9pc.out, explain_a3a5pfv_rppa7a9pc.out,
     declare_a3a5pfv_rppa7a9pc.test, explain_a3a5pfv_rppa7a9pc.test: Fixed
     array-of-pointer-to-function test.
   * ast.c, test/Makefile.am, declare_a3pfv_ri.out, explain_a3pfv_ri.out,
     declare_a3pfv_ri.test, explain_a3pfv_ri.test: More tests; one failing.
   * test/Makefile.am, declare_a9cpi.out, declare_cpa3cpa5i.out,
     declare_cpa3pa5i.out, declare_cpa9ci.out, declare_cpa9i.out,
     declare_pa3cpa5i.out, declare_a9cpi.test, declare_cpa3cpa5i.test,
     declare_cpa3pa5i.test, declare_cpa9ci.test, declare_cpa9i.test,
     declare_pa3cpa5i.test: More tests.
   * ast.c, ast.h, cdgram.y: Fixed tests; needs clean-up.

2017-03-12  Paul J. Lucas <paul@lucasmail.org>

   * ast.c: c_ast_gibberish_impl() arg reordering.
   * ast.c, test/Makefile.am, declare_pa3pa5i.out, declare_pa3pa5i.test: Added
     (currently failing) nester pointer/array test.

2017-03-11  Paul J. Lucas <paul@lucasmail.org>

   * cdgram.y: Factored out c_ast_add_array() code.
   * cdgram.y, test/Makefile.am, explain_pa3a5i.out, explain_pa3a5i.test: Fixed
     pointer to array of array.
   * ast.c, ast.h, cdgram.y, test/Makefile.am, explain_a3a5a7i.out,
     explain_a3a5i.out, explain_a3a5a7i.test, explain_a3a5i.test: Fixed
     declaration of multiply dimensioned arrays.
   * test/Makefile.am, declare_a9i.out, declare_a9pi.out, declare_pa9i.out,
     explain_a9i.out, explain_a9pi.out, explain_pa9i.out, declare_a9i.test,
     declare_a9pi.test, declare_pa9i.test, explain_a9i.test, explain_a9pi.test,
     explain_pa9i.test: Array test renaming.
   * ast.c, test/Makefile.am, declare_a3a5a7i.out, declare_a3a5i.out,
     declare_a3a5a7i.test, declare_a3a5i.test: Fixed multidimensional array
     gibberish.
   * common.c, common.h: Fixed headers.
   * cdgram.y, cdlex.l, common.c, common.h, test/Makefile.am, cast_x.cdecl,
     declare_x.cdecl, explain_x.cdecl, file-cast_x.test, file-declare_x.test,
     file-explain_x.test: Added file tests.
   * test/Makefile.am, cast_i.cdecl, declare_i.cdecl, explain_i.cdecl,
     file-cast_i.out, file-declare_i.out, file-explain_i.out, file-cast_i.test,
     file-declare_i.test, file-explain_i.test: Added file tests.
   * cdgram.y: Added yyerror() comment.
   * cdgram.y: Now printing yacc error in color.
   * cdgram.y: Now printing literal \n instead of newline.

2017-03-10  Paul J. Lucas <paul@lucasmail.org>

   * cdgram.y: Shorted in/out notation.
   * ast.c: Added comment.
   * cdgram.y: Macro renaming.
   * src/Makefile.am, cdgram.y, cdlex.l: yylval is not a pointer again.
   * src/Makefile.am, ast.c, ast.h, cdgram.y, cdlex.l, common.c, common.h,
     types.c, types.h: Now using Bison token location.

2017-03-09  Paul J. Lucas <paul@lucasmail.org>

   * lang.h: Added 'u'.
   * cdgram.y: Now clearing the qualifier stack and zeroing out in_attr.
   * test/Makefile.am, declare_ti-01.out, declare_ti-02.out,
     declare_ti-01.test, declare_ti-02.test: declare typedef tests.
   * test/Makefile.am, declare_ai-10.out, declare_fii_rv.out,
     declare_fixiy_rv.out, declare_fv_rv.out, declare_ai-10.test,
     declare_fii_rv.test, declare_fixiy_rv.test, declare_fv_rv.test: More
     tests.
   * cdgram.y, cdlex.l: Now printing column in error message; added
     parse_cleanup().
   * ast.c: Fixed printing of array names.
   * cdlex.l: s/n/caret_col/

2017-03-08  Paul J. Lucas <paul@lucasmail.org>

   * cdgram.y, types.c, test/Makefile.am, declare_ll.out, declare_sc.out,
     declare_si.out, declare_sll.out, declare_u.out, declare_uc.out,
     declare_ui.out, declare_ull.out, declare_ll.test, declare_sc.test,
     declare_si.test, declare_sll.test, declare_u.test, declare_uc.test,
     declare_ui.test, declare_ull.test: Fixed unsiged; more tests.
   * types.c: Now using true_or_set().
   * ast.c, test/Makefile.am, declare_cpcpi.out, declare_cvpi.out,
     declare_pcpi.out, declare_rci.out, declare_rcpi.out, declare_rpi.out,
     declare_cpcpi.test, declare_cvpi.test, declare_pcpi.test,
     declare_rci.test, declare_rcpi.test, declare_rpi.test: Fixed reference to
     pointer gibberish; more tests.
   * ast.c, ast.h, cdgram.y, util.c, util.h, test/Makefile.am,
     declare_cppi.out, declare_cppi.test: Fixed handling of const pointers.
   * cdgram.y: Removed name & storage inherited attributes.

2017-03-07  Paul J. Lucas <paul@lucasmail.org>

   * cdgram.y: Added more DUMPing.
   * ast.c, util.h, test/Makefile.am, declare_ppi.out, declare_ppi.test: Fixed:
     int * *x
   * ast.c: Fixed indent.
   * test/Makefile.am, declare_ci-01.out, declare_ci-02.out, explain_cpi.out,
     explain_cvpi.out, explain_pi.out, explain_vcpi.out, declare_ci-01.test,
     declare_ci-02.test, explain_cpi.test, explain_cvpi.test, explain_pi.test,
     explain_vcpi.test: More tests.
   * test/Makefile.am, declare_ri-01.out, declare_ri-02.out,
     declare_ri-01.test, declare_ri-02.test: Renamed some tests; additional
     reference test.
   * ast.c: More comments.
   * ast.c, test/Makefile.am, declare_pai-10.out, declare_pai-10.test: New
     declare array test and fix.
   * ast.c, test/Makefile.am, declare_api-10.out, explain_pai-10.out,
     declare_api-10.test, explain_pai-10.test: New declare array test and fix.
   * cdgram.y: Removed array size checks.
   * test/Makefile.am, explain_api-10.out, explain_api-10.test: Array of
     pointer test.
   * test/Makefile.am: Test renaming.

2017-03-06  Paul J. Lucas <paul@lucasmail.org>

   * ast.c, cdgram.y, color.h, keywords.h, lang.h, literals.h, options.h,
     types.h: Added @file comments; added C_TYPE_ADD.
   * test/Makefile.am: Test renaming.
   * test/Makefile.am, explain_cpc.out, explain_cvpc.out, explain_ppc.out,
     explain_rpc.out, explain_vcpc.out, explain_vpc.out, explain_cpc.test,
     explain_cvpc.test, explain_ppc.test, explain_rpc.test, explain_vcpc.test,
     explain_vpc.test: More tests.
   * test/Makefile.am, explain_ia-012.out, explain_ia-0xA_01.out,
     explain_ia-0xa_02.out, explain_ia-10.out, explain_ia-012.test,
     explain_ia-0xA_01.test, explain_ia-0xa_02.test, explain_ia-10.test: Some
     array tests.
   * types.c, test/Makefile.am, explain_is.out, explain_it.out, explain_ll.out,
     explain_si.out, explain_ti.out, explain_is.test, explain_it.test,
     explain_ll.test, explain_si.test, explain_ti.test: Fixed long long; more
     tests.
   * ast.c, cdgram.y: All tests pass.
   * cdgram.y, lang.c, set.c, test/Makefile.am, set.out, set_options.out,
     set.test: Fixed several tests.
   * help.c, help_c.out, help_cxx.out: Fixed help tests.
   * ast.c, ast.h, cdgram.y: DUMP_AST_LIST now dumps the whole list.
   * cdlex.l: Removed unnecessary cast; comment fixes.
   * cdgram.y, cdlex.l: Moved yywrap() to lex file.
   * cdgram.y, cdlex.l: Merged inherited attributes. Now using YYTEXT_POINTER.
   * cdgram.y: cast_list -> arg_list.
   * AUTHORS: Added mention of _Thread_local and typedef.
   * ast.c, ast.h, cdgram.y, cdlex.l, literals.c, literals.h: Better support
     for typedef.

2017-03-05  Paul J. Lucas <paul@lucasmail.org>

   * types.h: Fixed typo.
   * cast_pfpci_ri.out, cast_pfx_ri.out: Changed expected results.
   * types.c, types.h: c_type_add() now returns bool.
   * cdgram.y: Rule renaming.
   * ast.c, ast.h, cdgram.y: Split into c_ast_gibberish_cast() and
     c_ast_gibberish_declare().
   * ast.c: Refactoring.
   * ast.h: Updated comment.
   * util.h: Added @file comment.

2017-03-04  Paul J. Lucas <paul@lucasmail.org>

   * ast.c, ast.h: Added c_ast_take_storage(); fixed c_ast_json().
   * util.h: Added true_or_set().
   * types.h: Added bit masks.

2017-03-03  Paul J. Lucas <paul@lucasmail.org>

   * ast.c, ast.h, cdgram.y: Now using garbage collection for c_ast.
   * types.h: Added comment.

2017-02-28  Paul J. Lucas <paul@lucasmail.org>

   * ast.c, ast.h: Fixed printing English of function args; added
     c_ast_list_append().
   * ast.c: check_strdup() ignores null now.
   * cdgram.y: Fixed: type_c { PUSH_TYPE( $1 ); } cast_c

2017-02-27  Paul J. Lucas <paul@lucasmail.org>

   * autocomplete.c: Fixed readline #include.
   * cdgram.y: Now using ^^ -> and <-.
   * cdgram.y: Now cloning PEEK_TYPE().
   * ast.c: Better c_ast_free(); now allowing nunll for c_ast_pop().
   * cdgram.y: pointer to array of char works.
   * util.c, util.h: check_strdup() now allows null.
   * src/Makefile.am: s/readline_support/autocomplete/
   * ast.c: Got rid of c_ast_json_impl().
   * readline_support.c: Added c++98 and c++03.
   * lib/Makefile.am, errno.in.h, getdelim.c, getline.c, limits.in.h,
     stdint.in.h, stdio.in.h, errno_h.m4, getdelim.m4, getline.m4,
     gnulib-cache.m4, gnulib-comp.m4, limits-h.m4, longlong.m4, multiarch.m4,
     stdint.m4, stdio_h.m4, wint_t.m4: Added GNU getline().
   * configure.ac, lib/Makefile.am, gnulib-cache.m4, gnulib-comp.m4, cdecl.c,
     readline_support.c, set.c, util.c, util.h: Proper readline() support.
   * ast.c, cdgram.y, help.c, keywords.c, lang.c, lang.h, options.c, types.c:
     Improved LANG_ macros.
   * cdgram.y: Colon no longer in color.

2017-02-26  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c, util.c, util.h: Now only adding history for non-blank lines.
   * cdgram.y: Properly doing inherited attributes with pointers/references.
   * ast.c, ast.h: Added clone functions.
   * readline_support.c: Added rl_bind_key() -- but it still doesn't work.
   * cdgram.y: Reworked DUMP_RULE into DUMP_START.
   * cdlex.l, color.h: SGR_START/END macros now take stream parameter.

2017-02-25  Paul J. Lucas <paul@lucasmail.org>

   * util.c, util.h: Removed unused functions.
   * cdecl.c, cdlex.l: Can't trim leading whitespace: ^ needs it.
   * ast.c, common.h: Simplified print_indent().
   * cdlex.l: Now doing proper accounting for y_token_col.
   * cdgram.y: Reworked parse_erro().
   * cdecl.c: Reworked readline_wrapper().
   * util.c, util.h: Removed cat().
   * src/Makefile.am, ast.c, cdgram.y, cdlex.l, color.c, color.h, common.h,
     lang.c, options.c, set.c, types.c, util.c, util.h: Added color.
   * cdgram.y: Added some error cases.

2017-02-24  Paul J. Lucas <paul@lucasmail.org>

   * cdgram.y: Lots more DUMP code; added inherited attributes.
   * cdgram.y: Fixed DUMP_NUM.
   * cdgram.y: Fixed DUMP_NAME.
   * ast.c, cdgram.y, util.c, util.h: Improved JSON printing.
   * types.c, types.h: More comments.

2017-02-23  Paul J. Lucas <paul@lucasmail.org>

   * ast.c, ast.h, cdgram.y: Added separate node types for builtin and ecsu.
   * ast.c, ast.h: Added c_ast push/pop.

2017-02-22  Paul J. Lucas <paul@lucasmail.org>

   * types.c, types.h: Moved c_add_type() here.
   * cdgram.y: Reworking of DUMP macros.
   * cdlex.l: Minor change.

2017-02-21  Paul J. Lucas <paul@lucasmail.org>

   * ast.c, ast.h: Now exposing "indent" argument.
   * keywords.c, literals.c, literals.h, readline_support.c, types.c, types.h:
     Added typedef.
   * ast.c, ast.h: Added skeletal c_ast_gibberish().

2017-02-20  Paul J. Lucas <paul@lucasmail.org>

   * cdgram.y: Now distinguishing between "block" and "__block".
   * keywords.c, literals.c, literals.h, readline_support.c, types.c: Now
     distinguishing between "block" and "__block".
   * cdgram.y: Removed extraneous characters.
   * options.c: Setting yydebug to false.
   * options.c, options.h: Fixed yydebug.
   * types.c: Added missing T_UNION.
   * types.c: Now using STRCAT().
   * types.c: Now using strcpy_len().
   * util.c, util.h: Replaced visible() with printable_char().
   * types.c: Fixed c_type_name().
   * types.h: Fixed enum bits.
   * types.c: Fixed error messagein c_type_name().
   * ast.c: Fixed K_ENUM_CLASS_STRUCT_UNION.
   * cdgram.y: Switched to CDEBUG macro.
   * ast.c: Added assert().
   * ast.c, ast.h: Reordering; put assert() on object count back.
   * ast.c: Fixed JSON indenting.
   * ast.c: JSON fixes.
   * ast.c, ast.h: Initial JSON implementation.
   * util.h: Added FPUTC.
   * cdlex.l: Now strdup()'ing name tokens.
   * cdecl.c: Now using " in help message.
   * util.c, util.h: Added FREE().
   * keywords.c, keywords.h: Added c_keyword_find_token().
   * options.c: Reworked options.
   * cdlex.l: Fixed ? token.
   * types.c, types.h: Made c_type_check() return bool.
   * keywords.c: Moved THREAD_LOCAL to be C11 & CPP_11.
   * cdecl.c: Added call to c_ast_cleanup().

2017-02-19  Paul J. Lucas <paul@lucasmail.org>

   * lang.h: Added LANG_ALL.
   * types.c, types.h: Added enum, struct, union, class to restrictions.
   * keywords.c: L_CLASS and L_UNION now have distinct types.
   * literals.c, literals.h: thread_local is now also C++11.
   * types.h: Added T_UNION.
   * src/Makefile.am, help.c: Moved print_help() to its own file.

2017-02-18  Paul J. Lucas <paul@lucasmail.org>

   * cdecl.c: Now adding only non-whitespace lines to readline history.
   * util.c, util.h: Added trim_ws().
   * cdlex.l: Added keyword_find; copying yytext to local.
   * cdlex.l: Removed yywrap().
   * cdlex.l, keywords.c, keywords.h: s/keyword_find/c_keyword_find/
   * util.h: Added FPRINTF and FPUTS.
   * keywords.c: Fixed types.
   * cdlex.l, literals.c, literals.h: Added "restricted".

2017-02-17  Paul J. Lucas <paul@lucasmail.org>

   * util.c, util.h: Added strcpy_len().
   * src/Makefile.am, ast.c, ast.h, keywords.c, keywords.h, lang.c, lang.h,
     literals.c, literals.h, options.c, options.h, readline_support.c, types.c,
     types.h: Major refactoring.
   * configure.ac: Added --enable-yydebug.

2017-02-15  Paul J. Lucas <paul@lucasmail.org>

   * lang.c, lang.h: New files.

2017-02-14  Paul J. Lucas <paul@lucasmail.org>

   * cdgram.y: Fixed explain cast to accept (char const*).
   * AUTHORS, cdgram.y, cdlex.l, readline_support.c: Addde complex and
     restrict.

2017-02-13  Paul J. Lucas <paul@lucasmail.org>

   * cdgram.y, options.c, options.h: Added special long long handling.
   * readline_support.c: Added bool and wchar_t.
   * options.c, options.h: Now using format_opt().
   * test/Makefile.am, cast_pf_ri-01.out, cast_pf_ri-02.out, cast_pfpci_ri.out,
     cast_pfx_ri.out, cast_pmi.out, declare_pmi.out, declare_rc.out,
     explain_cast_pmi.out, explain_pmfxx_rps.out, explain_pmi.out,
     cast_pf_ri-01.test, cast_pf_ri-02.test, cast_pfpci_ri.test,
     cast_pfx_ri.test, cast_pmi.test, cdecl-ap.test, cdecl-x.test,
     declare_pmi.test, declare_rc.test, explain_cast_pmi.test,
     explain_pmfxx_rps.test, explain_pmi.test: More tests.
   * options.c: Now handling short options without long options.

2017-02-12  Paul J. Lucas <paul@lucasmail.org>

   * Makefile.am: Added "test".
   * test/Makefile.am, explain_fpci_rpi.out, explain_fpci_rpi.test: More tests.
   * test/Makefile.am, explain_ci.out, explain_ic.out, explain_ci.test,
     explain_ic.test, help_cxx.test: More tests.
   * AUTHORS, cdecl.c: Moved author info to AUTHORS file.
   * configure.ac, cdgram.y, options.c: Now using WITH_CDECL_DEBUG throughout.
   * cdecl.c, options.c: Fixed prompt.
   * test/Makefile.am, explain_cast_pf_ri.out, explain_cast_pfpc_ri.out,
     explain_cast_pfpci_ri.out, explain_cast_pf_ri.test,
     explain_cast_pfpc_ri.test, explain_cast_pfpci_ri.test: More tests.
   * configure.ac, test/Makefile.am, cast_pc.out, cast_pcc-01.out,
     cast_pcc-02.out, declare_fx_rpi.out, declare_pc.out, explain_cast_pc.out,
     explain_cast_pcc-01.out, explain_cast_pcc-02.out, explain_f_rpi.out,
     explain_fpc_rpi.out, explain_fv_rpi.out, explain_fx_rpi.out,
     explain_pc.out, help_c.out, help_cxx.out, set_options.out, run_test.sh,
     cast_pc.test, cast_pcc-01.test, cast_pcc-02.test, declare_fx_rpi.test,
     declare_pc.test, explain_cast_pc.test, explain_cast_pcc-01.test,
     explain_cast_pcc-02.test, explain_f_rpi.test, explain_fpc_rpi.test,
     explain_fv_rpi.test, explain_fx_rpi.test, explain_pc.test, help_c.test,
     help_cxx.test, set_options.test: Some tests.
   * cdlex.l: Added Apple comment.

2017-02-11  Paul J. Lucas <paul@lucasmail.org>

   * config.rpath, lib/Makefile.am, errno.in.h, getdelim.c, getline.c,
     limits.in.h, readline.c, readline.h, stdarg.in.h, stdint.in.h, stdio.in.h,
     errno_h.m4, getdelim.m4, getline.m4, gnulib-cache.m4, gnulib-comp.m4,
     lib-ld.m4, lib-link.m4, lib-prefix.m4, limits-h.m4, longlong.m4,
     multiarch.m4, readline.m4, stdarg.m4, stdint.m4, stdio_h.m4, wint_t.m4:
     Added GNUlib stdarg and readline.

2017-02-10  Paul J. Lucas <paul@lucasmail.org>

   * Makefile.am, lib/Makefile.am, getopt.c, getopt.in.h, getopt1.c,
     getopt_int.h, gettext.h, stdbool.in.h, stddef.in.h, stdlib.in.h,
     sys_types.in.h, sysexits.in.h, unistd.c, unistd.in.h, 00gnulib.m4,
     absolute-header.m4, ax_append_flag.m4, ax_cflags_gcc_option.m4,
     ax_cflags_warn_all.m4, ax_check_compile_flag.m4, extensions.m4,
     extern-inline.m4, getopt.m4, gnulib-cache.m4, gnulib-common.m4,
     gnulib-comp.m4, gnulib-tool.m4, include_next.m4, nocrash.m4, off_t.m4,
     onceonly.m4, ssize_t.m4, stdbool.m4, stddef_h.m4, stdlib_h.m4,
     sys_types_h.m4, sysexits.m4, unistd_h.m4, warn-on-use.m4, wchar_t.m4,
     man/Makefile.am, man/man1/Makefile.am, man/man1/c++decl.1,
     snippet/_Noreturn.h, snippet/arg-nonnull.h, snippet/c++defs.h,
     snippet/warn-on-use.h, src/Makefile.am, cdecl.c, cdgram.y, cdlex.l: Post
     gnulib import.

2016-11-29  ridiculousfish <corydoras@ridiculousfish.com>

   * cdecl.c: Fix some warnings about dangling elses
   * Makefile, cdecl.c, cdgram.y, test_expected_output.txt, testset: First
     attempt to support const-after-type
   * Makefile: make test to output unified diffs with context
   * Makefile, test_expected_output.txt: Make `make test` actually output the
     result of the test
   * Makefile: Don't run C++ tests by default

2016-11-28  ridiculousfish <corydoras@ridiculousfish.com>

   * README: Toot my horn in the README
   * Makefile: Compile explicitly as C89 via -std=c89
