From d4e985d587a0111c8ad39cd56b815a7f63540116 Mon Sep 17 00:00:00 2001 From: Theophile Ranquet Date: Thu, 15 Nov 2012 12:02:40 +0000 Subject: [PATCH 1/3] errors: indent missing action code semicolon warning Also, remove a duplicate #define. * src/scan-code.l (SC_RULE_ACTION): Here. * tests/actions.at: Adjust. --- src/scan-code.l | 13 +++++++------ tests/actions.at | 36 ++++++++++++++++++------------------ 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/scan-code.l b/src/scan-code.l index fa593beb..560d3435 100644 --- a/src/scan-code.l +++ b/src/scan-code.l @@ -220,12 +220,16 @@ ref -?[0-9]+|{id}|"["{id}"]"|"$" /* As an undocumented Bison extension, append ';' before the last brace in braced code, so that the user code can omit trailing ';'. But do not append ';' if emulating Yacc, since Yacc does - not append one. */ + not append one. This is deprecated since release 2.4.1. */ if (outer_brace && !yacc_flag && language_prio == default_prio && skeleton_prio == default_prio && need_semicolon && ! in_cpp) { - warn_at (*loc, _("a ';' might be needed at the end of action code")); - warn_at (*loc, _("future versions of Bison will not add the ';'")); + unsigned int indent = 0; + warn_at_indent (*loc, &indent, + _("a ';' might be needed at the end of action code")); + indent += SUB_INDENT; + warn_at_indent (*loc, &indent, + _("future versions of Bison will not add the ';'")); obstack_1grow (&obstack_for_string, ';'); } @@ -489,9 +493,6 @@ show_sub_messages (const char* cp, bool explicit_bracketing, points to LHS ($$) of the current rule or midrule. */ #define LHS_REF (INT_MIN + 1) -/* Sub-messages indent. */ -#define SUB_INDENT (4) - /* Parse named or positional reference. In case of positional references, can return negative values for $-n "deep" stack accesses. */ diff --git a/tests/actions.at b/tests/actions.at index 17e6085b..5e897a2e 100644 --- a/tests/actions.at +++ b/tests/actions.at @@ -1586,41 +1586,41 @@ AT_BISON_OPTION_POPDEFS AT_BISON_CHECK([[-o input.c input.y]], [0], [], [[input.y:8.48: warning: a ';' might be needed at the end of action code -input.y:8.48: warning: future versions of Bison will not add the ';' +input.y:8.48: future versions of Bison will not add the ';' input.y:9.48: warning: a ';' might be needed at the end of action code -input.y:9.48: warning: future versions of Bison will not add the ';' +input.y:9.48: future versions of Bison will not add the ';' input.y:10.48: warning: a ';' might be needed at the end of action code -input.y:10.48: warning: future versions of Bison will not add the ';' +input.y:10.48: future versions of Bison will not add the ';' input.y:11.48: warning: a ';' might be needed at the end of action code -input.y:11.48: warning: future versions of Bison will not add the ';' +input.y:11.48: future versions of Bison will not add the ';' input.y:12.48: warning: a ';' might be needed at the end of action code -input.y:12.48: warning: future versions of Bison will not add the ';' +input.y:12.48: future versions of Bison will not add the ';' input.y:13.48: warning: a ';' might be needed at the end of action code -input.y:13.48: warning: future versions of Bison will not add the ';' +input.y:13.48: future versions of Bison will not add the ';' input.y:20.1: warning: a ';' might be needed at the end of action code -input.y:20.1: warning: future versions of Bison will not add the ';' +input.y:20.1: future versions of Bison will not add the ';' input.y:21.1: warning: a ';' might be needed at the end of action code -input.y:21.1: warning: future versions of Bison will not add the ';' +input.y:21.1: future versions of Bison will not add the ';' input.y:22.1: warning: a ';' might be needed at the end of action code -input.y:22.1: warning: future versions of Bison will not add the ';' +input.y:22.1: future versions of Bison will not add the ';' input.y:23.1: warning: a ';' might be needed at the end of action code -input.y:23.1: warning: future versions of Bison will not add the ';' +input.y:23.1: future versions of Bison will not add the ';' input.y:24.1: warning: a ';' might be needed at the end of action code -input.y:24.1: warning: future versions of Bison will not add the ';' +input.y:24.1: future versions of Bison will not add the ';' input.y:25.1: warning: a ';' might be needed at the end of action code -input.y:25.1: warning: future versions of Bison will not add the ';' +input.y:25.1: future versions of Bison will not add the ';' input.y:31.1: warning: a ';' might be needed at the end of action code -input.y:31.1: warning: future versions of Bison will not add the ';' +input.y:31.1: future versions of Bison will not add the ';' input.y:32.1: warning: a ';' might be needed at the end of action code -input.y:32.1: warning: future versions of Bison will not add the ';' +input.y:32.1: future versions of Bison will not add the ';' input.y:33.1: warning: a ';' might be needed at the end of action code -input.y:33.1: warning: future versions of Bison will not add the ';' +input.y:33.1: future versions of Bison will not add the ';' input.y:34.1: warning: a ';' might be needed at the end of action code -input.y:34.1: warning: future versions of Bison will not add the ';' +input.y:34.1: future versions of Bison will not add the ';' input.y:35.1: warning: a ';' might be needed at the end of action code -input.y:35.1: warning: future versions of Bison will not add the ';' +input.y:35.1: future versions of Bison will not add the ';' input.y:36.1: warning: a ';' might be needed at the end of action code -input.y:36.1: warning: future versions of Bison will not add the ';' +input.y:36.1: future versions of Bison will not add the ';' ]]) AT_MATCHES_CHECK([input.c], [[/\* TEST:N:2 \*/ \}$]], [[3]]) From a37131cc63607b8fa59ba58296dd0b1682ec54d5 Mon Sep 17 00:00:00 2001 From: Theophile Ranquet Date: Mon, 12 Mar 2012 10:01:09 +0100 Subject: [PATCH 2/3] getargs: fix the locations of command-line input * src/getargs.c (command_line_location): Here. * tests/input.at: Adjust. --- src/getargs.c | 2 +- tests/input.at | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/getargs.c b/src/getargs.c index 226e6de0..2b82a15d 100644 --- a/src/getargs.c +++ b/src/getargs.c @@ -556,7 +556,7 @@ command_line_location (void) { location res; /* "" is used in GCC's messages about -D. */ - boundary_set (&res.start, uniqstr_new (""), optind, -1); + boundary_set (&res.start, uniqstr_new (""), optind - 1, -1); res.end = res.start; return res; } diff --git a/tests/input.at b/tests/input.at index faa939c1..474b7dd1 100644 --- a/tests/input.at +++ b/tests/input.at @@ -1042,7 +1042,7 @@ start: ; ]]) AT_BISON_CHECK([[-Dvar=cmd-d input-dg.y]], [[1]], [], [[input-dg.y:1.9-11: error: %define variable 'var' redefined -:2: previous definition +:1: previous definition ]]) AT_DATA([[input-unused.y]], @@ -1050,8 +1050,8 @@ AT_DATA([[input-unused.y]], start: ; ]]) AT_BISON_CHECK([[-Dunused-d -Funused-f input-unused.y]], [[1]], [], -[[:2: error: %define variable 'unused-d' is not used -:3: error: %define variable 'unused-f' is not used +[[:1: error: %define variable 'unused-d' is not used +:2: error: %define variable 'unused-f' is not used ]]) AT_CLEANUP @@ -1357,11 +1357,11 @@ start: ; # parse.lac.* options are useless if LAC isn't actually activated. AT_BISON_CHECK([[-Dparse.lac.es-capacity-initial=1 input.y]], [[1]], [], -[[:2: error: %define variable 'parse.lac.es-capacity-initial' is not used +[[:1: error: %define variable 'parse.lac.es-capacity-initial' is not used ]]) AT_BISON_CHECK([[-Dparse.lac.memory-trace=full input.y]], [[1]], [], -[[:2: error: %define variable 'parse.lac.memory-trace' is not used +[[:1: error: %define variable 'parse.lac.memory-trace' is not used ]]) AT_CLEANUP @@ -1420,8 +1420,8 @@ AT_BISON_CHECK([[$2 input.y]], [[1]], [[]], ]) AT_TEST([%define api.prefix foo %name-prefix "bar"], [], [input.y:1.9-18]) -AT_TEST([], [-Dapi.prefix=foo -p bar], [:2]) -AT_TEST([%name-prefix "bar"], [-Dapi.prefix=foo], [:2]) +AT_TEST([], [-Dapi.prefix=foo -p bar], [:1]) +AT_TEST([%name-prefix "bar"], [-Dapi.prefix=foo], [:1]) AT_TEST([%define api.prefix foo], [-p bar], [input.y:1.9-18]) m4_popdef([AT_TEST]) From effd30c08d3f9d936a67c6b7a9a4253915711c74 Mon Sep 17 00:00:00 2001 From: Theophile Ranquet Date: Fri, 30 Nov 2012 15:27:54 +0100 Subject: [PATCH 3/3] getargs: don't label --language/-l as experimental * NEWS: Announce it. * doc/bison.texi, src/getargs.c (usage): Here. --- NEWS | 5 +++++ doc/bison.texi | 5 ----- src/getargs.c | 1 - 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index 2cd57c28..93a1ef54 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,11 @@ GNU Bison NEWS * Noteworthy changes in release ?.? (????-??-??) [?] +** %language is no longer an experimental feature. + + The introduction of this feature, in 2.4, was four years ago. The --language + option and the %language directive are no longer experimental. + ** New value for %define variable: api.pure full The %define variable api.pure requests a pure (reentrant) parser. However, diff --git a/doc/bison.texi b/doc/bison.texi index fc880315..5952225c 100644 --- a/doc/bison.texi +++ b/doc/bison.texi @@ -5170,8 +5170,6 @@ Specify the programming language for the generated parser. Currently supported languages include C, C++, and Java. @var{language} is case-insensitive. -This directive is experimental and its effect may be modified in future -releases. @end deffn @deffn {Directive} %locations @@ -9289,9 +9287,6 @@ Specify the programming language for the generated parser, as if Summary}). Currently supported languages include C, C++, and Java. @var{language} is case-insensitive. -This option is experimental and its effect may be modified in future -releases. - @item --locations Pretend that @code{%locations} was specified. @xref{Decl Summary}. diff --git a/src/getargs.c b/src/getargs.c index 2b82a15d..c480649d 100644 --- a/src/getargs.c +++ b/src/getargs.c @@ -307,7 +307,6 @@ Operation modes:\n\ fputs (_("\ Parser:\n\ -L, --language=LANGUAGE specify the output programming language\n\ - (this is an experimental feature)\n\ -S, --skeleton=FILE specify the skeleton to use\n\ -t, --debug instrument the parser for debugging\n\ --locations enable location support\n\