]> git.saurik.com Git - bison.git/commitdiff
Merge remote-tracking branch 'origin/branch-2.6' into maint
authorAkim Demaille <akim@lrde.epita.fr>
Mon, 12 Nov 2012 08:06:55 +0000 (09:06 +0100)
committerAkim Demaille <akim@lrde.epita.fr>
Mon, 12 Nov 2012 08:06:55 +0000 (09:06 +0100)
* origin/branch-2.6:
  tests: use valgrind where appropriate
  tests: don't expect $EGREP to support -w

1  2 
THANKS
tests/glr-regression.at
tests/headers.at
tests/local.at
tests/regression.at

diff --combined THANKS
index 21e7a1dd855ffc4e98cd6096629dab010d77cbe3,e815f8ed20c507d10b1a9f925261b45ed42d891e..ecdd1a8a158abb4d6851bd115e8780e5ab1c2097
--- 1/THANKS
--- 2/THANKS
+++ b/THANKS
@@@ -31,6 -31,7 +31,7 @@@ Dagobert Michelsen        dam@baltic-on
  Daniel Hagerty            hag@gnu.org
  David J. MacKenzie        djm@gnu.org
  David Kastrup             dak@gnu.org
+ Dennis Clarke             dclarke@blastwave.org
  Derek M. Jones            derek@knosof.co.uk
  Di-an Jan                 dianj@freeshell.org
  Dick Streefland           dick.streefland@altium.nl
@@@ -81,7 -82,6 +82,7 @@@ Nicolas Tisserand         nicolas.tisse
  Noah Friedman             friedman@gnu.org
  Odd Arild Olsen           oao@fibula.no
  Oleg Smolsky              oleg.smolsky@pacific-simulators.co.nz
 +Oleksii Taran             oleksii.taran@gmail.com
  Paolo Bonzini             bonzini@gnu.org
  Pascal Bart               pascal.bart@epita.fr
  Paul Eggert               eggert@cs.ucla.edu
@@@ -130,7 -130,6 +131,7 @@@ thank them!  Please, help us keeping th
  
  Local Variables:
  mode: text
 +coding: utf-8
  End:
  
  -----
diff --combined tests/glr-regression.at
index ad93d40e1b5519379b9a8ad11ebd44c0f550f650,aab0369ffaf847da0a24b706d94c7471b9949307..7df17b62597bce2c2efa974a456571ee563d0fca
@@@ -67,9 -67,13 +67,13 @@@ static YYSTYPE exprMerge (YYSTYPE x0, Y
    return 0;
  }
  
+ const char *input = NULL;
  int
- main (void)
+ main (int argc, const char* argv[])
  {
+   assert (argc == 2);
+   input = argv[1];
    return yyparse ();
  }
  
  int
  yylex (void)
  {
-   for (;;)
-     {
-       int ch;
-       assert (!feof (stdin));
-       ch = getchar ();
-       if (ch == EOF)
-       return 0;
-       else if (ch == 'B' || ch == 'P')
-       return ch;
-     }
+   return *input++;
  }
  ]])
  AT_BISON_OPTION_POPDEFS
@@@ -96,7 -91,7 +91,7 @@@ AT_BISON_CHECK([[-o glr-regr1.c glr-reg
  [glr-regr1.y: conflicts: 1 shift/reduce
  ])
  AT_COMPILE([glr-regr1])
- AT_PARSER_CHECK([[echo BPBPB | ./glr-regr1]], 0,
+ AT_PARSER_CHECK([[./glr-regr1 BPBPB]], 0,
  [[E -> 'B'
  E -> 'B'
  E -> E 'P' E
@@@ -212,16 -207,27 +207,27 @@@ AT_BISON_CHECK([[-o glr-regr2a.c glr-re
  ])
  AT_COMPILE([glr-regr2a])
  
- AT_PARSER_CHECK([[echo s VARIABLE_1 t v x q | ./glr-regr2a]], 0,
+ AT_DATA([input1.txt],
+ [[s VARIABLE_1 t v x q
+ ]])
+ AT_PARSER_CHECK([[./glr-regr2a input1.txt]], 0,
  [[Variable: 'VARIABLE_1'
- ]], [])
- AT_PARSER_CHECK([[echo s VARIABLE_1 , ANOTHER_VARIABLE_2 t e | ./glr-regr2a]],
+ ]])
+ AT_DATA([input2.txt],
+ [[s VARIABLE_1 , ANOTHER_VARIABLE_2 t e
+ ]])
+ AT_PARSER_CHECK([[./glr-regr2a input2.txt]],
  0,
  [[Varlist: 'VARIABLE_1,ANOTHER_VARIABLE_2'
  ]])
- AT_PARSER_CHECK([[echo s VARIABLE_3 t v x | ./glr-regr2a]], 0,
+ AT_DATA([input3.txt],
+ [[s VARIABLE_3 t v x
+ ]])
+ AT_PARSER_CHECK([[./glr-regr2a input3.txt]], 0,
  [[Variable: 'VARIABLE_3'
- ]], [])
+ ]])
  
  
  AT_CLEANUP
@@@ -329,10 -335,13 +335,13 @@@ AT_BISON_CHECK([[-o glr-regr3.c glr-reg
  ])
  AT_COMPILE([glr-regr3])
  
- AT_PARSER_CHECK([[echo p1 t4 o2 p1 p1 t1 o1 t2 p2 o1 t3 p2 p2 | ./glr-regr3]],
+ AT_DATA([input.txt],
+ [[p1 t4 o2 p1 p1 t1 o1 t2 p2 o1 t3 p2 p2
+ ]])
+ AT_PARSER_CHECK([[./glr-regr3 input.txt]],
  0,
  [[Result: 1c04
- ]], [])
+ ]])
  
  AT_CLEANUP
  
@@@ -1643,10 -1652,10 +1652,10 @@@ main (void
  AT_BISON_OPTION_POPDEFS
  
  AT_BISON_CHECK([[-o glr-regr18.c glr-regr18.y]], 1, [],
 -[glr-regr18.y:26.18-24: result type clash on merge function 'merge': <type2> != <type1>
 -glr-regr18.y:25.18-24: previous declaration
 -glr-regr18.y:27.13-19: result type clash on merge function 'merge': <type3> != <type2>
 -glr-regr18.y:26.18-24: previous declaration
 +[glr-regr18.y:26.18-24: error: result type clash on merge function 'merge': <type2> != <type1>
 +glr-regr18.y:25.18-24:     previous declaration
 +glr-regr18.y:27.13-19: error: result type clash on merge function 'merge': <type3> != <type2>
 +glr-regr18.y:26.18-24:     previous declaration
  ])
  
  AT_CLEANUP
diff --combined tests/headers.at
index 8a05d34d8ddfe1cb314aa430ced0d19a30093290,b53ee8a02b56149dfba941542a4ba4bfbf785c1c..dcf09a728296d307e54029c6faa28f47b62e2546
@@@ -131,7 -131,7 +131,7 @@@ AT_SETUP([Several parsers]
  # self-contained, and can be compiled by a C++ compiler.
  m4_pushdef([AT_TEST],
  [AT_BISON_OPTION_PUSHDEFS([%define api.prefix "$1_" $2])
 -AT_DATA_GRAMMAR([$1.AT_SKEL_CC_IF([yy], [y])],
 +AT_DATA_GRAMMAR([$1.y],
  [[%define api.prefix "$1_"
  $2
  %error-verbose
@@@ -161,23 -161,8 +161,8 @@@ exp
  ]AT_YYLEX_DEFINE(["$1"])[
  ]])
  
 -AT_BISON_CHECK([-d -o AT_SKEL_CC_IF([$1.cc $1.yy], [$1.c $1.y])])
 +AT_BISON_CHECK([-d -o $1.AT_SKEL_CC_IF([cc], [c]) $1.y])
  
- # Check there is no 'yy' left.
- # C++ output relies on namespaces and still uses yy a lot.
- AT_SKEL_CC_IF([],
-   [AT_CHECK([$EGREP yy $1.h], [1])])
- # Check there is not 'YY' left.
- # Ignore comments, YYPARSE_PARAM (obsolete), YYPUSH_MORE(_DEFINED)?
- # (constant definition), YY_\w+_INCLUDED (header guards).
- #
- # YYDEBUG (not renamed) can be read, but not changed.
- AT_CHECK([[sed -ne 's,/\*[^*]*\*/,,g;s,//.*,,' \
-                 -e '/YY/p' ]$1.AT_SKEL_CC_IF([hh], [h])[ |
-      $EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?|_[0-9A-Z_]+_INCLUDED)|(defined|if) YYDEBUG']],
-          [1])
  AT_LANG_COMPILE([$1.o])
  AT_CHECK([[echo "$1" >>expout]])
  
@@@ -240,6 -225,36 +225,36 @@@ AT_TEST([x7], [%define api.push-pull bo
  AT_TEST([x8], [%define api.pure %define api.push-pull both])
  #AT_TEST([x5], [%locations %language "c++" %glr-parser])
  
+ # Check there is no 'yy' left.
+ # C++ output relies on namespaces and still uses yy a lot.
+ #
+ # Check there is no 'YY' left.
+ # Ignore comments, YYPARSE_PARAM (obsolete), YYPUSH_MORE(_DEFINED)?
+ # (constant definition), YY_\w+_INCLUDED (header guards).
+ #
+ # YYDEBUG (not renamed) can be read, but not changed.
+ AT_CHECK([[$PERL -n -0777 -e '
+   s{/\*.*?\*/}{}gs;
+   s{//.*}{}g;
+   s{\b(YYPARSE_PARAM
+       |YYPUSH_MORE(_DEFINED)?
+       |YY_\w+_INCLUDED
+       |YY_NULL
+       |(defined|if)\ YYDEBUG
+       )\b}{}gx;
+   while (/^(.*YY.*)$/gm)
+   {
+     print "$ARGV: $1\n";
+   }
+   if ($ARGV =~ /\.h$/)
+   {
+     while (/^(.*yy.*)$/gm)
+     {
+       print "$ARGV: $1\n";
+     }
+   }
+ ' -- *.hh *.h]])
  # Check that the headers are self-contained, and protected against
  # multiple inclusions.  While at it, check they are sane for C++.
  for h in *.h *.hh
@@@ -257,7 -272,7 +272,7 @@@ don
  AT_SKIP_IF_CANNOT_LINK_C_AND_CXX
  
  AT_COMPILE_CXX([parser], [[x[1-8].o -DCC_IS_CXX=$CC_IS_CXX main.cc]])
- AT_CHECK([./parser], [0], [[expout]])
+ AT_PARSER_CHECK([./parser], [0], [[expout]])
  
  m4_popdef([AT_TEST])
  
diff --combined tests/local.at
index 88e797f5a272b354046a0a2da6ace722f71a1651,a5dde80a9ad75c89b6c89d91edb2c9f9bb48f38d..a33ea9b2bbc1a10c0c32c816d1b311390ed8cecf
@@@ -138,7 -138,7 +138,7 @@@ m4_pushdef([AT_LEXPARAM_IF]
  m4_pushdef([AT_LOCATION_IF],
  [m4_bmatch([$3], [%locations], [$1], [$2])])
  m4_pushdef([AT_LOCATION_TYPE_IF],
 -[m4_bmatch([$3], [%define location_type], [$1], [$2])])
 +[m4_bmatch([$3], [%define \(api\.location\.type\|location_type\)], [$1], [$2])])
  m4_pushdef([AT_PARAM_IF],
  [m4_bmatch([$3], [%parse-param], [$1], [$2])])
  # Comma-terminated list of formals parse-parameters.
@@@ -716,7 -716,7 +716,7 @@@ AT_COMPILE([c-only.o], [c-only.c]
  AT_COMPILE_CXX([cxx-only.o], [cxx-only.cc])
  AT_CHECK([$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS c-only.o cxx-only.o -o c-and-cxx ||
            exit 77], [ignore], [ignore])
- AT_CHECK([./c-and-cxx])
+ AT_PARSER_CHECK([./c-and-cxx])
  ])
  
  
diff --combined tests/regression.at
index b6bff17cb0743128f82bc74360e74f54b48baba4,03c4b80881808cac7794e8cd42201bfad5cd6b28..374bd82aa950c945309ca79b8b61066ba6f0b600
@@@ -383,58 -383,6 +383,58 @@@ AT_CLEANU
  
  
  
 +## ---------------- ##
 +## Invalid inputs.  ##
 +## ---------------- ##
 +
 +
 +AT_SETUP([Invalid inputs])
 +
 +AT_DATA([input.y],
 +[[%%
 +?
 +default: 'a' }
 +%&
 +%a-does-not-exist
 +%-
 +%{
 +]])
 +
 +AT_BISON_CHECK([input.y], [1], [],
 +[[input.y:2.1: error: invalid character: '?'
 +input.y:3.14: error: invalid character: '}'
 +input.y:4.1: error: invalid character: '%'
 +input.y:4.2: error: invalid character: '&'
 +input.y:5.1-17: error: invalid directive: '%a-does-not-exist'
 +input.y:6.1: error: invalid character: '%'
 +input.y:6.2: error: invalid character: '-'
 +input.y:7.1-8.0: error: missing '%}' at end of file
 +input.y:7.1-8.0: error: syntax error, unexpected %{...%}
 +]])
 +
 +AT_CLEANUP
 +
 +
 +AT_SETUP([Invalid inputs with {}])
 +
 +AT_DATA([input.y],
 +[[
 +%destructor
 +%initial-action
 +%lex-param
 +%parse-param
 +%printer
 +%union
 +]])
 +
 +AT_BISON_CHECK([input.y], [1], [],
 +[[input.y:3.1-15: error: syntax error, unexpected %initial-action, expecting {...}
 +]])
 +
 +AT_CLEANUP
 +
 +
 +
  ## ------------------- ##
  ## Token definitions.  ##
  ## ------------------- ##
@@@ -1645,7 -1593,7 +1645,7 @@@ main (void
  ]])
  
  AT_FULL_COMPILE([input])
- AT_CHECK([./input], 0, [[x: 1, y: 2
+ AT_PARSER_CHECK([./input], 0, [[x: 1, y: 2
  ]])
  AT_BISON_OPTION_POPDEFS