]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
Implement --warnings/-W.
[bison.git] / ChangeLog
index 4c65b7f1ee37c70a6a2eb1424faef298419a3215..8a95c859bd27ed78a599eee64e8849c884ecb827 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,362 @@
+2006-07-09  Akim Demaille  <akim@lrde.epita.fr>
+
+       Implement --warnings/-W.
+       * src/getargs.c (report_argmatch, trace_argmatch): Remove,
+       replaced by...
+       (flags_argmatch, FLAGS_ARGMATCH): this new function and macro.
+       Adjust callers.
+       * src/getargs.h, src/getargs.c (warnings, warnings_flags)
+       (warnings_args, warnings_types): New.
+       (getargs, short_options, long_options): Accept -W/--warnings.
+       Sort the options by alphabetical order, upper case letter right
+       before its lower case.
+
+2006-07-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Change %merge result type clash warnings to errors.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00026.html>.
+       * src/reader.c (record_merge_function_type): Use complain_at.
+       * tests/glr-regression.at (Missed %merge type warnings when LHS type is
+       declared later): Update test case results.
+
+2006-07-09  Akim Demaille  <akim@lrde.epita.fr>
+
+       * src/getargs.h, src/getargs.c: Swap --report and --trace handling
+       to be in alphabetical order.
+       (trace_args): Spelling fixes.
+
+2006-07-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/yacc.c (YYID, yy_stack_print): Prefix local vars with "yy"
+       so they don't collide with user-defined macros.
+       (yy_stack_print): Don't assume that yytype_int16 promotes to int;
+       this was never guaranteed, and now that we're using gnulib stdint,
+       which defines int_fast16_t to long int, the problem is exposed.
+
+2006-07-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/c.m4 (b4_basename): Simplify a bit, since we don't
+       need the full POSIX semantics (and weren't implementing them
+       anyway).
+
+       Adjust to Autoconf 2.60 and today's gnulib.
+       * bootstrap (gnulib_modules): Add stdint.
+       Remove special case for m4/onceonly_2_57.m4, since gnulib-tool
+       no longer copies it.
+       (intl_files_to_remove): Remove m4/longlong.m4 and m4/wchar_t.m4,
+       since stdint needs the former and wcwidth (which is now required
+       by mbswidth) needs the latter.
+       Append 'datarootdir = @datarootdir@' to po/Makefile.in.in, to
+       work around a compatibility glitch between gettext 0.14.6 and
+       Autoconf 2.60.
+       * configure.ac (AC_PREREQ): Require Autoconf 2.60.
+       Do not check for uintptr_t, since new stdint module does the right
+       thing.
+       * lib/.cvsignore: Remove alloca.c, alloca.h, alloca_.h.
+       Add stdint.h, stdint_.h, wcwidth.h.
+       * m4/.cvsignore: Remove alloca.m4, onceonly.m4.
+       Add absolute-header.m4, double-slash-root.m4, longlong.m4,
+       stdint.m4, wchar_t.m4, wcwidth.m4.
+       * src/files.c: Include <dirname.h> and <stdio-safer.h> in the
+       usual order for ../lib/*.h files.
+       (file_name_split): Use last_component, not base_name, to adjust
+       to gnulib changes.
+       * src/parse-gram.h: Include <strverscmp.h> in the usual order
+       for ../lib/*.h files.
+       (YYTYPE_INT16, YYTYPE_INT8, YYTYPE_UINT16, YYTYPE_UINT8):
+       Define unconditionally, since we now assume the stdint module.
+       * src/scan-skel.l: Include <dirname.h>.
+       (BASE_QPUTS): Use last_component, not base_name.
+       * src/system.h: Include <unlocked-io.h> in the usual order
+       for ../lib/*.h files.  Include <stdint.h> unconditionally,
+       since we now use the stdint module.
+       (uintptr_t): Declare if UINTPTR_MAX is not defined, not
+       HAVE_UINTPTR_T, since we now use the stdint module.
+       (base_name): Remove decl, since files now include <dirname.h>
+       to get the decl.
+
+2006-07-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       * data/c.m4 (b4_location_initial_column, b4_location_initial_line):
+       New, default to 1.
+       * data/yacc.c, data/glr.c, data/location.cc: Use them.
+       * NEWS, doc/bison.texinfo: The initial column and line are 1 by
+       default.
+       * tests/calc.at: Adjust.
+
+2006-07-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       * data/c.m4 (b4_basename): New.
+       (b4_syncline): Also output the location of its invocation (from
+       the skeleton).
+       (b4_user_action, b4_define_user_action, b4_user_actions)
+       (b4_user_initial_action, b4_user_post_prologue, b4_user_start_header)
+       (b4_user_stype): New.
+       * data/yacc.c, data/glr.c, data/lalr1.cc, data/glr.cc: Use them.
+
+2006-07-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       In the grammar file, the first column is 1 not 0 on the first line as
+       on every other line.
+       * src/parse-gram.y (%initial-action): Initialize @$ correctly.
+       * tests/input.at (Torturing the Scanner): Update output.
+
+       * src/scan-gram.l (scanner_cursor): Declare it static.
+
+2006-07-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       In warnings, say "previous declaration" rather than "first
+       declaration".
+       * src/symtab.c (redeclaration): Do that here.
+       * src/reader.c (record_merge_function_type): In the case of a result
+       type clash, report the previous declaration rather than the very first
+       one in the grammar file.
+       * tests/glr-regression.at (Missed %merge type warnings when LHS type is
+       declared later): Add a third declaration to check this behavior.
+       * tests/input.at (Incompatible Aliases): Update output.
+
+2006-06-27  Akim Demaille  <akim@epita.fr>
+
+       * doc/Doxyfile.in: New.
+       * doc/Makefile.am: Use it.
+       * src/lalr.h, src/symtab.h: Initial doxygenation.
+
+2006-06-26  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't miss %merge result type warnings just because the LHS types are
+       declared after the %merge.  This continues the effort of the previous
+       patch.
+       * src/reader.c (get_merge_function): Don't set the merger type yet.
+       (record_merge_function_type): New function for setting the merger type
+       and checking for clashes.
+       (grammar_current_rule_merge_set): Set the location of the %merge for
+       the current rule.
+       (packgram): Invoke record_merge_function_type for each rule now that
+       all symbol type declarations have been parsed.
+       * src/reader.h (merger_list.type_declaration_location): New member
+       storing the location of the first %merge from which the type for this
+       merging function was derived.
+       * src/symlist.h (symbol_list.merger_declaration_location): New member
+       storing the location of a rule's %merge, if any.
+       * tests/glr-regression.at (Missed %merge type warnings when LHS type is
+       declared later): New test to catch the error fixed by the above patch.
+
+2006-06-26  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Get action warnings (grammar_rule_check) right even when symbol
+       declarations appear after the rules.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00108.html>
+       and
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00151.html>.
+       Don't mistake the type of $$ in a midrule to be that of its parent
+       rule's $$.
+       * src/reader.c (grammar_current_rule_end): Don't invoke
+       grammar_rule_check yet since not all symbol declarations may have been
+       parsed yet.
+       (grammar_midrule_action): Likewise.
+       Don't record whether the midrule's $$ has been used yet since actions
+       haven't been translated yet.
+       Record the midrule's parent rule and its RHS index within the parent
+       rule.
+       (grammar_current_rule_action_append): Don't translate the action yet
+       since not all symbol declarations may have been parsed yet and, thus,
+       warnings about types for $$, $n, @$, and @n can't be reported yet.
+       (packgram): Translate the action and invoke grammar_rule_check now that
+       all symbol declarations have been parsed.
+       * src/scan-code.l (handle_action_dollar): Now that this is invoked
+       after parsing the entire grammar file, the symbol list here in the case
+       of a midrule is actually the midrule's empty RHS, so reference its
+       parent rule's RHS where necessary.
+       On the other hand, now that you can already know it's a midrule, you
+       aren't forced to think $$ has the same type as its parent rule's $$.
+       (handle_action_at): In the case of a midrule, reference the parent rule
+       where necessary.
+       * src/symlist.c (symbol_list_new): Initialize new midrule-related
+       members.
+       (symbol_list_length): Now that this is invoked after all rules have
+       been parsed, a NULL symbol (rather than a NULL symbol list node)
+       terminates a rule.  symbol_list_print already does this correctly.
+       * src/symlist.h (symbol_list.midrule_parent_rule,
+       symbol_list.midrule_parent_rhs_index): New members so that midrules can
+       remember their relationships with their parents.
+       * tests/input.at (Type Clashes): Extend to catch the midrule $$ error
+       fixed by the above patch.
+       (_AT_UNUSED_VALUES_DECLARATIONS, AT_CHECK_UNUSED_VALUES): New m4 macros
+       implementing...
+       (Unused values): ... this old test case and...
+       (Unused values before symbol declarations): ... this new test case.
+       This one is the same as `Unused values' except that all symbol
+       declarations appear after the rules in order to catch the rest of the
+       errors fixed by the above patch.
+
+2006-06-26  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       More cleanup.
+       * src/reader.c (current_rule): Declare it static since it's no longer
+       used outside this file.
+       (grammar_current_rule_action_append): Remove redundant arguments from
+       translate_rule_action invocation.
+       * src/reader.h (current_rule): Remove this unused extern.
+       * src/scan-code.h (translate_rule_action): Remove redundant arguments.
+       * src/scan-code.l (translate_rule_action): Likewise.
+
+2006-06-25  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Clean up yesterday's patch.
+       * parse-gram.y (rhs): Move grammar_midrule_action invocation from here
+       to...
+       * src/reader.c (grammar_current_rule_action_append): ... here for
+       consistency with grammar_current_rule_symbol_append.
+       * tests/regression.at (Braced code in declaration in rules section):
+       Make yyerror and yylex static as usual.
+
+2006-06-24  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix bug that mistakes braced code in a declaration in the rules section
+       to be a rule action.  Mentioned at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00105.html>.
+       * src/scan-gram.l: Move midrule action detection from the start of the
+       scanning of any braced code to...
+       * src/parse-gram.y (rhs): ... the parsing of braced code as a rule
+       action.  For readability, use $2 and @2 rather than the equivalent
+       global variables.
+       * tests/regression.at (Braced code in declaration in rules section):
+       New test to catch the error fixed by the above patch.
+
+       Work on code readability some.
+       * src/scan-code.l (current_rule): Get rid of this misleading and
+       redundant declaration: it's actually extern'ed in reader.h.
+       (YY_DECL, code_lex, handle_action_dollar, handle_action_at,
+       translate_action): Add a rule argument and use it instead of the global
+       current_rule.
+       (translate_rule_action): This already receives current_rule through an
+       argument, so pass it on to translate_action instead of assigning
+       current_rule to current_rule.
+       (translate_symbol_action, translate_code): Pass rule = NULL to
+       translate_action.
+
+2006-06-23  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Rename %before-definitions to %start-header and %after-definitions to
+       %end-header.  Don't use these declarations to separate pre-prologue
+       blocks from post-prologue blocks.  Add new order-independent
+       declarations %before-header and %after-header as alternatives to the
+       traditional Yacc pre-prologue and post-prologue blocks.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00110.html>.
+       * NEWS (2.3+): Update for these changes.
+       * data/glr.c (b4_before_definitions): Update to...
+       (b4_start_header): ... this.
+       (b4_after_definitions): Update to...
+       (b4_end_header): ... this.
+       * data/glr.cc: Likewise.
+       * data/lalr1.cc: Likewise.
+       * data/yacc.c: Likewise.
+       * doc/bison.texinfo (The prologue): Update names, and replace remaining
+       prologue blocks with %*-header declarations.
+       (Calc++ Parser): Likewise.
+       (Bison Declaration Summary): Update names.
+       (Bison Symbols): Update description.
+       * src/parse-gram.y (PERCENT_AFTER_DEFINITIONS): Update to...
+       (PERCENT_END_HEADER): ... this.
+       (PERCENT_BEFORE_DEFINITIONS): Update to...
+       (PERCENT_START_HEADER): ... this.
+       (PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
+       (declaration): Update token names and m4 macro names.
+       When parsing %end-header and %start-header, invoke translate_code
+       before muscle_code_grow, and no longer set global booleans to remember
+       whether these declarations have been seen.
+       Parse new %after-header and %before-header.
+       * src/reader.c (before_definitions, after_definitions): Remove.
+       (prologue_augment): Accept a new bool argument to specify whether to
+       augment the pre-prologue or post-prologue.
+       * src/reader.h (before_definitions, after_definitions): Remove these
+       extern's.
+       (prologue_augment): Add new bool argument.
+       * src/scan-gram.l (PERCENT_AFTER_DEFINITIONS): Update to...
+       (PERCENT_END_HEADER): ... this.
+       (PERCENT_BEFORE_DEFINITIONS): Update to...
+       (PERCENT_START_HEADER): ... this.
+       (PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
+       * tests/actions.at (Printers and Destructors): Update names.
+
+2006-06-22  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Add comparison operators for C++ location classes.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00092.html>.
+       * data/c++.m4 (b4_define_location_comparison): New boolean %define
+       declaration indicating whether filename_type has an operator==.  If
+       filename_type is `std::string', it defaults to `1', `0' otherwise.
+       * data/location.cc: Iff b4_define_location_comparison is `1', add
+       operator== and operator!= for class position and for class location.
+
+       Some minor fixes.
+       * src/scan-action.l: Remove unused file.
+       * src/symtab.c (symbol_printer_set): Use printer_location not
+       destructor_location.
+       * src/symtab.h (struct symbol): Replace incorrect source comment for
+       printer members.
+       * tests/input.at (Incompatible Aliases): Update output with correct
+       printer location.
+
+2006-06-20  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't put the pre-prologue in the header file.  For the yacc.c code
+       file and the glr.c header and code files, move the pre-prologue before
+       the token definitions.  Add new %before-definitions and
+       %after-definitions to declare code that will go in both the header file
+       and code file.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2005-12/msg00000.html>,
+       <http://lists.gnu.org/archive/html/bison-patches/2006-01/msg00016.html>,
+       and
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00055.html>.
+       * NEWS (2.3+): Describe these changes.
+       * data/glr.c (b4_pre_prologue): Move from within to before...
+       (b4_shared_declarations): ... this.
+       Add new b4_before_definitions before b4_token_enums.
+       Add new b4_after_definitions at the end.
+       * data/glr.cc (b4_pre_prologue): Replace with...
+       (b4_before_definitions): ... this in the header file.
+       (b4_after_definitions): New near the end of the header file.
+       * data/lalr1.cc (b4_pre_prologue): Move from the header file to the
+       code file right before including the header file.
+       (b4_before_definitions): New in the previous position of
+       b4_pre_prologue in the header file.
+       (b4_after_definitions): New near the end of the header file.
+       * data/yacc.c: Clean up some m4 quoting especially in the header file.
+       (b4_token_enums_defines): In the code file, move to right before
+       YYSTYPE for consistency with the header file.
+       (b4_before_definitions): New right before b4_token_enums_defines in
+       both the header and code file.
+       (b4_after_definitions): New right after YYLTYPE and yylloc in both the
+       header and code file.
+       * doc/bison.texinfo (Prologue): Show use of %before-definitions instead
+       of prologues for %union dependencies.
+       (Bison Declaration Summary): In %defines description, mention the
+       effect of %before-definitions and %after-definitions on the header
+       file.
+       (Calc++ Parser): Forward declare driver in a %before-definitions rather
+       than in the pre-prologue so that make check succeeds.
+       (Bison Symbols): Add entries for %before-definitions and
+       %after-definitions.
+       * src/parse-gram.y (PERCENT_BEFORE_DEFINITIONS): New token for
+       %before-definitions.
+       (PERCENT_AFTER_DEFINITIONS): New token for %after-definitions.
+       (declaration): Parse those declarations and append to
+       b4_before_definitions and b4_after_definitions, respectively.
+       * src/reader.c (before_definitions, after_definitions): New bools to
+       track whether those declarations have been seen.
+       (prologue_augment): Add to the post-prologue if %union,
+       %before-definitions, or %after-definitions has been seen.
+       * src/reader.h (before_definitions, after_definitions): New extern's.
+       * src/scan-gram.l: Scan the new declarations.
+       * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Place the second
+       prologue block in a %before-definitions or a %after-definitions based
+       on whether the %union is declared.
+       * tests/regression.at (Early token definitions with --yacc, Early token
+       definitions without --yacc): Move tests for token definitions into the
+       post-prologue since token names are no longer defined in the
+       pre-prologue.
+
 2006-06-20  Akim Demaille  <akim@epita.fr>
 
        * src/symtab.h, src/symtab.c (symbol_from_uniqstr): New.