[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
FYI: merge maint into master
From: |
Akim Demaille |
Subject: |
FYI: merge maint into master |
Date: |
Sun, 17 Jun 2018 19:16:04 +0200 |
I have pushed the following commit, which corresponds to
merging upstream/maint into upstream/master. The diff
looks a bit weird: I tried to get rid of the tons of changes
due to copyright years.
commit f462a08572ef5ff8d43513c6b866895d20cf018b (HEAD -> master)
Merge: d6445ec1 0ac08d2d
Author: Akim Demaille <address@hidden>
Date: Sun Jun 17 18:43:59 2018 +0200
Merge maint into master
* upstream/maint: (48 commits)
THANKS: update an address
tests: adjust syncline tests to GCC 7
glr: fix improperly placed synclines
bison: be git grep friendly
Replace ftp with https
maint: post-release administrivia
version 3.0.5
bison: style: indentation fixes
regen
bison: please address sanitizer
C++: style: fix indentation
NEWS: update
C++: style: prefer `unsigned` to `unsigned int`
C++: style: space before paren
C++: fix -Wdeprecated warnings
tests: fix -Wdeprecated warning
maint: update syntax-check exclusions
autoconf: update
regen
Update copyright years
…
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//mnJMUa_.prev-version
2018-06-17 19:12:29.000000000 +0200
+++ .prev-version 2018-06-17 18:43:59.000000000 +0200
@@ -1 +1 @@
-3.0.4
+3.0.5
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//zkWrTb_NEWS
2018-06-17 19:12:30.000000000 +0200
+++ NEWS 2018-06-17 18:43:59.000000000 +0200
@@ -45,6 +45,36 @@
input: '0' | exp
^^^
+* Noteworthy changes in release 3.0.5 (2018-05-27) [stable]
+
+** Bug fixes
+
+*** C++: Fix support of 'syntax_error'
+
+ One incorrect 'inline' resulted in linking errors about the constructor of
+ the syntax_error exception.
+
+*** C++: Fix warnings
+
+ GCC 7.3 (with -O1 or -O2 but not -O0 or -O3) issued null-dereference
+ warnings about yyformat being possibly null. It also warned about the
+ deprecated implicit definition of copy constructors when there's a
+ user-defined (copy) assignment operator.
+
+*** Location of errors
+
+ In C++ parsers, out-of-bounds errors can happen when a rule with an empty
+ ride-hand side raises a syntax error. The behavior of the default parser
+ (yacc.c) in such a condition was undefined.
+
+ Now all the parsers match the behavior of glr.c: @$ is used as the
+ location of the error. This handles gracefully rules with and without
+ rhs.
+
+*** Portability fixes in the test suite
+
+ On some platforms, some Java and/or C++ tests were failing.
+
* Noteworthy changes in release 3.0.4 (2015-01-23) [stable]
** Bug fixes
@@ -106,7 +136,7 @@
extracted from the documentation:
- rpcalc
- Reverse polish calculator, a simple introductory example.
+ Reverse Polish Calculator, a simple introductory example.
- mfcalc
Multi-function Calc, a calculator with memory and functions and located
error messages.
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//96j4Ka_README
2018-06-17 19:12:30.000000000 +0200
+++ README 2018-06-17 18:43:59.000000000 +0200
@@ -7,7 +7,7 @@
Bison requires GNU m4 1.4.6 or later. See:
- ftp://ftp.gnu.org/gnu/m4/m4-1.4.6.tar.gz
+ https://ftp.gnu.org/gnu/m4/m4-1.4.6.tar.gz
** Internationalization
Bison supports two catalogues: one for Bison itself (i.e., for the
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//FTgIab_README-hacking
2018-06-17 19:12:30.000000000 +0200
+++ README-hacking 2018-06-17 18:43:59.000000000 +0200
@@ -9,19 +9,19 @@
* Administrivia
** If you incorporate a change from somebody on the net:
-First, if it is a large change, you must make sure they have signed
-the appropriate paperwork. Second, be sure to add their name and
-email address to THANKS.
+First, if it is a large change, you must make sure they have signed the
+appropriate paperwork. Second, be sure to add their name and email address
+to THANKS.
** If a change fixes a test, mention the test in the commit message.
** Bug reports
-If somebody reports a new bug, mention his name in the commit message
-and in the test case you write. Put him into THANKS.
+If somebody reports a new bug, mention his name in the commit message and in
+the test case you write. Put him into THANKS.
-The correct response to most actual bugs is to write a new test case
-which demonstrates the bug. Then fix the bug, re-run the test suite,
-and check everything in.
+The correct response to most actual bugs is to write a new test case which
+demonstrates the bug. Then fix the bug, re-run the test suite, and check
+everything in.
* Hacking
@@ -30,17 +30,17 @@
Which include serious bug fixes, must be mentioned in NEWS.
** Translations
-Only user visible strings are to be translated: error messages, bits
-of the .output file etc. This excludes impossible error messages
-(comparable to assert/abort), and all the --trace output which is
-meant for the maintainers only.
+Only user visible strings are to be translated: error messages, bits of the
+.output file etc. This excludes impossible error messages (comparable to
+assert/abort), and all the --trace output which is meant for the maintainers
+only.
** Horizontal tabs
Do not add horizontal tab characters to any file in Bison's repository
except where required. For example, do not use tabs to format C code.
-However, make files, ChangeLog, and some regular expressions require
-tabs. Also, test cases might need to contain tabs to check that Bison
-properly processes tabs in its input.
+However, make files, ChangeLog, and some regular expressions require tabs.
+Also, test cases might need to contain tabs to check that Bison properly
+processes tabs in its input.
* Working from the repository
@@ -103,14 +103,16 @@
$ git submodule update --init
-Git submodule support is weak before versions 1.6 and later, upgrade Git if
-your version is older.
-
The next step is to get other files needed to build, which are
extracted from other source packages:
$ ./bootstrap
+Bootstrapping updates the submodules to the versions registered in the
+top-level directory. To change gnulib, first check out the version you want
+in `gnulib`, then commit this change in Bison's repository, and finally run
+bootstrap.
+
If it fails with missing symbols (e.g., "error: possibly undefined macro:
AC_PROG_GNU_M4"), you are likely to have forgotten the submodule
initialization part. Otherwise, there you are! Just
@@ -137,13 +139,12 @@
*** Updating Bison
If you pull a newer version of a branch, say via "git pull", you might
-import requests for updated submodules. A simple "git diff" will
-reveal if the current version of the submodule (i.e., the actual
-contents of the gnulib directory) and the current request from the
-subscriber (i.e., the reference of the version of gnulib that the
-Bison repository requests) differ. To upgrade the submodules (i.e.,
-to check out the version that is actually requested by the subscriber,
-run "git submodule update".
+import requests for updated submodules. A simple "git diff" will reveal if
+the current version of the submodule (i.e., the actual contents of the
+gnulib directory) and the current request from the subscriber (i.e., the
+reference of the version of gnulib that the Bison repository requests)
+differ. To upgrade the submodules (i.e., to check out the version that is
+actually requested by the subscriber, run "git submodule update".
$ git pull
$ git submodule update
@@ -167,8 +168,8 @@
$ git checkin ...
-For a suggestion of what gnulib commit might be stable enough for a
-formal release, see the ChangeLog in the latest gnulib snapshot at:
+For a suggestion of what gnulib commit might be stable enough for a formal
+release, see the ChangeLog in the latest gnulib snapshot at:
http://erislabs.net/ianb/projects/gnulib/
@@ -178,9 +179,9 @@
lib/m4sugar/m4sugar.m4
lib/m4sugar/foreach.m4
-These files don't change very often in Autoconf, so it should be
-relatively straight-forward to examine the differences in order to
-decide whether to update.
+These files don't change very often in Autoconf, so it should be relatively
+straight-forward to examine the differences in order to decide whether to
+update.
* Test suite
@@ -243,102 +244,99 @@
Try to run the test suite with more severe conditions before a
release:
-- Configure the package with --enable-gcc-warnings, so that one checks
- that 1. Bison compiles cleanly, 2. the parsers it produces compile
- cleanly too.
-
-- Maybe build with -DGNULIB_POSIXCHECK, which suggests gnulib modules
- that can fix portability issues. See if you really want to pay
- attention to its warnings; there's no need to obey blindly to it
+- Configure the package with --enable-gcc-warnings, so that one checks that
+ 1. Bison compiles cleanly, 2. the parsers it produces compile cleanly too.
+
+- Maybe build with -DGNULIB_POSIXCHECK, which suggests gnulib modules that
+ can fix portability issues. See if you really want to pay attention to
+ its warnings; there's no need to obey blindly to it
(<http://lists.gnu.org/archive/html/bison-patches/2012-05/msg00057.html>).
-- Check with "make syntax-check" if there are issues diagnosed by
- gnulib.
+- Check with "make syntax-check" if there are issues diagnosed by gnulib.
- run "make maintainer-check" which:
- runs "valgrind -q bison" to run Bison under Valgrind.
- runs the parsers under Valgrind.
- runs the test suite with G++ as C compiler...
-- run "make maintainer-push-check", which runs "make maintainer-check"
- while activating the push implementation and its pull interface wrappers
- in many test cases that were originally written to exercise only the
- pull implementation. This makes certain the push implementation can
- perform every task the pull implementation can.
-
-- run "make maintainer-xml-check", which runs "make maintainer-check"
- while checking Bison's XML automaton report for every working grammar
- passed to Bison in the test suite. The check just diffs the output of
- Bison's included XSLT style sheets with the output of --report=all and
- --graph.
+- run "make maintainer-push-check", which runs "make maintainer-check" while
+ activating the push implementation and its pull interface wrappers in many
+ test cases that were originally written to exercise only the pull
+ implementation. This makes certain the push implementation can perform
+ every task the pull implementation can.
+
+- run "make maintainer-xml-check", which runs "make maintainer-check" while
+ checking Bison's XML automaton report for every working grammar passed to
+ Bison in the test suite. The check just diffs the output of Bison's
+ included XSLT style sheets with the output of --report=all and --graph.
- running "make maintainer-release-check" takes care of running
maintainer-check, maintainer-push-check and maintainer-xml-check.
-- Change tests/atlocal/CFLAGS to add your preferred options. For
- instance, "-traditional" to check that the parsers are K&R. Note
- that it does not make sense for glr.c, which should be ANSI, but
- currently is actually GNU C, nor for lalr1.cc.
+- Change tests/atlocal/CFLAGS to add your preferred options. For instance,
+ "-traditional" to check that the parsers are K&R. Note that it does not
+ make sense for glr.c, which should be ANSI, but currently is actually GNU
+ C, nor for lalr1.cc.
-- Test with a very recent version of GCC for both C and C++. Testing
- with older versions that are still in use is nice too.
+- Test with a very recent version of GCC for both C and C++. Testing with
+ older versions that are still in use is nice too.
* Release Procedure
-This section needs to be updated to take into account features from
-gnulib. In particular, be sure to read README-release.
+This section needs to be updated to take into account features from gnulib.
+In particular, be sure to read README-release.
** Update the submodules. See above.
** Update maintainer tools, such as Autoconf. See above.
** Try to get the *.pot files to the Translation Project at least one
-week before a stable release, to give them time to translate them.
-Before generating the *.pot files, make sure that po/POTFILES.in and
-runtime-po/POTFILES.in list all files with translatable strings.
-This helps: grep -l '\<_(' *
+week before a stable release, to give them time to translate them. Before
+generating the *.pot files, make sure that po/POTFILES.in and
+runtime-po/POTFILES.in list all files with translatable strings. This
+helps: grep -l '\<_(' *
** Tests
See above.
** Update the foreign files
-Running "./bootstrap" in the top level should update them all for you.
-This covers PO files too. Sometimes a PO file contains problems that
-causes it to be rejected by recent Gettext releases; please report
-these to the Translation Project.
+Running "./bootstrap" in the top level should update them all for you. This
+covers PO files too. Sometimes a PO file contains problems that causes it
+to be rejected by recent Gettext releases; please report these to the
+Translation Project.
** Update README
-Make sure the information in README is current. Most notably, make sure
-it recommends a version of GNU M4 that is compatible with the latest
-Bison sources.
+Make sure the information in README is current. Most notably, make sure it
+recommends a version of GNU M4 that is compatible with the latest Bison
+sources.
** Check copyright years.
-We update years in copyright statements throughout Bison once at the
-start of every year by running "make update-copyright". However, before
-a release, it's good to verify that it's actually been run. Besides the
-copyright statement for each Bison file, check the copyright statements
-that the skeletons insert into generated parsers, and check all
-occurrences of PACKAGE_COPYRIGHT_YEAR in configure.ac.
+We update years in copyright statements throughout Bison once at the start
+of every year by running "make update-copyright". However, before a
+release, it's good to verify that it's actually been run. Besides the
+copyright statement for each Bison file, check the copyright statements that
+the skeletons insert into generated parsers, and check all occurrences of
+PACKAGE_COPYRIGHT_YEAR in configure.ac.
** Update NEWS, commit and tag.
-See do-release-commit-and-tag in README-release. For a while, we used
-beta names such as "2.6_rc1". Now that we use gnulib in the release
-procedure, we must use "2.5.90", which has the additional benefit of
-being properly sorted in "git tag -l".
+See do-release-commit-and-tag in README-release. For a while, we used beta
+names such as "2.6_rc1". Now that we use gnulib in the release procedure,
+we must use "2.5.90", which has the additional benefit of being properly
+sorted in "git tag -l".
** make alpha, beta, or stable
See README-release.
** Upload
-There are two ways to upload the tarballs to the GNU servers: using
-gnupload (from gnulib), or by hand. Obviously prefer the former. But
-in either case, be sure to read the following paragraph.
+There are two ways to upload the tarballs to the GNU servers: using gnupload
+(from gnulib), or by hand. Obviously prefer the former. But in either
+case, be sure to read the following paragraph.
*** Setup
You need "gnupg".
-Make sure your public key has been uploaded at least to
-keys.gnupg.net. You can upload it with:
+Make sure your public key has been uploaded at least to keys.gnupg.net. You
+can upload it with:
gpg --keyserver keys.gnupg.net --send-keys F125BDF3
@@ -347,8 +345,8 @@
*** Using gnupload
You need "ncftp".
-At the end "make stable" (or alpha/beta) will display the procedure to
-run. Just copy and paste it in your shell.
+At the end "make stable" (or alpha/beta) will display the procedure to run.
+Just copy and paste it in your shell.
*** By hand
@@ -410,9 +408,9 @@
$ ls -lt
Remove these files and commit their removal to CVS. For each of these
-files, add a line to the file .symlinks. This will ensure that
-hyperlinks to the removed files will redirect to the entire manual; this
-is better than a 404 error.
+files, add a line to the file .symlinks. This will ensure that hyperlinks
+to the removed files will redirect to the entire manual; this is better than
+a 404 error.
There is a problem with 'index.html' being written twice (once for POSIX
function 'index', once for the table of contents); you can ignore this
@@ -431,19 +429,18 @@
(address@hidden, address@hidden, address@hidden,
address@hidden, and address@hidden) is
appropriate for a stable release or a "serious beta". For any other
-release, drop at least address@hidden For an example of how to
-fill out the rest of the template, search the mailing list archives
-for the most recent release announcement.
+release, drop at least address@hidden For an example of how to fill out
+the rest of the template, search the mailing list archives for the most
+recent release announcement.
For a stable release, send the same announcement on the comp.compilers
-newsgroup by sending email to address@hidden Do not make any Cc as
-the moderator will throw away anything cross-posted or Cc'ed. It really
-needs to be a separate message.
+newsgroup by sending email to address@hidden Do not make any Cc as the
+moderator will throw away anything cross-posted or Cc'ed. It really needs
+to be a separate message.
** Prepare NEWS
-So that developers don't accidentally add new items to the old NEWS
-entry, create a new empty entry in line 3 (without the two leading
-spaces):
+So that developers don't accidentally add new items to the old NEWS entry,
+create a new empty entry in line 3 (without the two leading spaces):
* Noteworthy changes in release ?.? (????-??-??) [?]
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//Zfppwb_THANKS
2018-06-17 19:12:30.000000000 +0200
+++ THANKS 2018-06-17 18:43:59.000000000 +0200
@@ -15,6 +15,7 @@
Antonio Silva Correia address@hidden
Arnold Robbins address@hidden
Art Haas address@hidden
+Askar Safin address@hidden
Baron Schwartz address@hidden
Ben Pfaff address@hidden
Benoit Perrot address@hidden
@@ -39,6 +40,7 @@
David J. MacKenzie address@hidden
David Kastrup address@hidden
Dennis Clarke address@hidden
+Derek Clegg address@hidden
Derek M. Jones address@hidden
Di-an Jan address@hidden
Dick Streefland address@hidden
@@ -48,6 +50,7 @@
Eric Blake address@hidden
Evgeny Stambulchik address@hidden
Fabrice Bauzac address@hidden
+Ferdinand Thiessen address@hidden
Florian Krohm address@hidden
Frank Heckenbach address@hidden
Frans Englich address@hidden
@@ -58,7 +61,7 @@
Goran Uddeborg address@hidden
Guido Trentalancia address@hidden
H. Merijn Brand address@hidden
-Hans Aberg address@hidden
+Hans Åberg address@hidden
Jan Nieuwenhuizen address@hidden
Jerry Quinn address@hidden
Jesse Thilo address@hidden
@@ -93,6 +96,7 @@
Mickael Labau address@hidden
Mike Castle address@hidden
Mike Sullivan address@hidden
+Nate Guerin address@hidden
Neil Booth address@hidden
Nelson H. F. Beebe address@hidden
Nick Bowler address@hidden
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//tDJbpb_bootstrap
2018-06-17 19:12:30.000000000 +0200
+++ bootstrap 2018-06-17 18:43:59.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Print a version string.
-scriptversion=2014-12-08.12; # UTC
+scriptversion=2018-04-28.14; # UTC
# Bootstrap this package from checked-out sources.
@@ -17,7 +17,7 @@
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
# Originally written by Paul Eggert. The canonical version of this
# script is maintained as build-aux/bootstrap in gnulib, however, to
@@ -42,7 +42,7 @@
local_gl_dir=gl
-# Honour $PERL, but work even if there is none
+# Honor $PERL, but work even if there is none.
PERL="${PERL-perl}"
me=$0
@@ -109,9 +109,6 @@
# Configuration.
-# Name of the Makefile.am
-gnulib_mk=gnulib.mk
-
# List of gnulib modules needed.
gnulib_modules=
@@ -141,7 +138,7 @@
# Fallback for downloading .po files (if rsync fails).
po_download_command_format2=\
"wget --mirror -nd -q -np -A.po -P '%s' \
- http://translationproject.org/latest/%s/"
+ https://translationproject.org/latest/%s/"
# Prefer a non-empty tarname (4th argument of AC_INIT if given), else
# fall back to the package name (1st argument with munging)
@@ -170,7 +167,15 @@
m4_base=m4
doc_base=doc
tests_base=tests
-gnulib_extra_files=''
+gnulib_extra_files="
+ build-aux/install-sh
+ build-aux/mdate-sh
+ build-aux/texinfo.tex
+ build-aux/depcomp
+ build-aux/config.guess
+ build-aux/config.sub
+ doc/INSTALL
+"
# Additional gnulib-tool options to use. Use "\newline" to break lines.
gnulib_tool_option_extras=
@@ -264,24 +269,18 @@
*) test -r "$0.conf" && . ./"$0.conf" ;;
esac
-# Extra files from gnulib, which override files from other sources.
-test -z "${gnulib_extra_files}" && \
- gnulib_extra_files="
- build-aux/install-sh
- build-aux/mdate-sh
- build-aux/texinfo.tex
- build-aux/depcomp
- build-aux/config.guess
- build-aux/config.sub
- doc/INSTALL
-"
-
if test "$vc_ignore" = auto; then
vc_ignore=
test -d .git && vc_ignore=.gitignore
test -d CVS && vc_ignore="$vc_ignore .cvsignore"
fi
+if test x"$gnulib_modules$gnulib_files$gnulib_extra_files" = x; then
+ use_gnulib=false
+else
+ use_gnulib=true
+fi
+
# Translate configuration into internal form.
# Parse options.
@@ -418,28 +417,30 @@
done
}
+get_version_sed='
+# Move version to start of line.
+s/.*[v ]\([0-9]\)/\1/
+
+# Skip lines that do not start with version.
+/^[0-9]/!d
+
+# Remove characters after the version.
+s/[^.a-z0-9-].*//
+
+# The first component must be digits only.
+s/^\([0-9]*\)[a-z-].*/\1/
+
+#the following essentially does s/5.005/5.5/
+s/\.0*\([1-9]\)/.\1/g
+p
+q'
+
get_version() {
app=$1
$app --version >/dev/null 2>&1 || { $app --version; return 1; }
- $app --version 2>&1 |
- sed -n '# Move version to start of line.
- s/.*[v ]\([0-9]\)/\1/
-
- # Skip lines that do not start with version.
- /^[0-9]/!d
-
- # Remove characters after the version.
- s/[^.a-z0-9-].*//
-
- # The first component must be digits only.
- s/^\([0-9]*\)[a-z-].*/\1/
-
- #the following essentially does s/5.005/5.5/
- s/\.0*\([1-9]\)/.\1/g
- p
- q'
+ $app --version 2>&1 | sed -n "$get_version_sed"
}
check_versions() {
@@ -610,84 +611,86 @@
test -f .gitmodules && git config --file .gitmodules "$@"
}
-if $use_git; then
- gnulib_path=$(git_modules_config submodule.gnulib.path)
- test -z "$gnulib_path" && gnulib_path=gnulib
-fi
+if $use_gnulib; then
+ if $use_git; then
+ gnulib_path=$(git_modules_config submodule.gnulib.path)
+ test -z "$gnulib_path" && gnulib_path=gnulib
+ fi
-# Get gnulib files. Populate $GNULIB_SRCDIR, possibly updating a
-# submodule, for use in the rest of the script.
+ # Get gnulib files. Populate $GNULIB_SRCDIR, possibly updating a
+ # submodule, for use in the rest of the script.
-case ${GNULIB_SRCDIR--} in
--)
- # Note that $use_git is necessarily true in this case.
- if git_modules_config submodule.gnulib.url >/dev/null; then
- echo "$0: getting gnulib files..."
- git submodule init -- "$gnulib_path" || exit $?
- git submodule update -- "$gnulib_path" || exit $?
-
- elif [ ! -d "$gnulib_path" ]; then
- echo "$0: getting gnulib files..."
-
- trap cleanup_gnulib 1 2 13 15
-
- shallow=
- git clone -h 2>&1 | grep -- --depth > /dev/null && shallow='--depth 2'
- git clone $shallow git://git.sv.gnu.org/gnulib "$gnulib_path" ||
- cleanup_gnulib
+ case ${GNULIB_SRCDIR--} in
+ -)
+ # Note that $use_git is necessarily true in this case.
+ if git_modules_config submodule.gnulib.url >/dev/null; then
+ echo "$0: getting gnulib files..."
+ git submodule init -- "$gnulib_path" || exit $?
+ git submodule update -- "$gnulib_path" || exit $?
+
+ elif [ ! -d "$gnulib_path" ]; then
+ echo "$0: getting gnulib files..."
+
+ trap cleanup_gnulib 1 2 13 15
+
+ shallow=
+ git clone -h 2>&1 | grep -- --depth > /dev/null && shallow='--depth 2'
+ git clone $shallow git://git.sv.gnu.org/gnulib "$gnulib_path" ||
+ cleanup_gnulib
- trap - 1 2 13 15
- fi
- GNULIB_SRCDIR=$gnulib_path
- ;;
-*)
- # Use GNULIB_SRCDIR directly or as a reference.
- if $use_git && test -d "$GNULIB_SRCDIR"/.git && \
- git_modules_config submodule.gnulib.url >/dev/null; then
- echo "$0: getting gnulib files..."
- if git submodule -h|grep -- --reference > /dev/null; then
- # Prefer the one-liner available in git 1.6.4 or newer.
- git submodule update --init --reference "$GNULIB_SRCDIR" \
- "$gnulib_path" || exit $?
- else
- # This fallback allows at least git 1.5.5.
- if test -f "$gnulib_path"/gnulib-tool; then
- # Since file already exists, assume submodule init already complete.
- git submodule update -- "$gnulib_path" || exit $?
+ trap - 1 2 13 15
+ fi
+ GNULIB_SRCDIR=$gnulib_path
+ ;;
+ *)
+ # Use GNULIB_SRCDIR directly or as a reference.
+ if $use_git && test -d "$GNULIB_SRCDIR"/.git && \
+ git_modules_config submodule.gnulib.url >/dev/null; then
+ echo "$0: getting gnulib files..."
+ if git submodule -h|grep -- --reference > /dev/null; then
+ # Prefer the one-liner available in git 1.6.4 or newer.
+ git submodule update --init --reference "$GNULIB_SRCDIR" \
+ "$gnulib_path" || exit $?
else
- # Older git can't clone into an empty directory.
- rmdir "$gnulib_path" 2>/dev/null
- git clone --reference "$GNULIB_SRCDIR" \
- "$(git_modules_config submodule.gnulib.url)" "$gnulib_path" \
- && git submodule init -- "$gnulib_path" \
- && git submodule update -- "$gnulib_path" \
- || exit $?
+ # This fallback allows at least git 1.5.5.
+ if test -f "$gnulib_path"/gnulib-tool; then
+ # Since file already exists, assume submodule init already complete.
+ git submodule update -- "$gnulib_path" || exit $?
+ else
+ # Older git can't clone into an empty directory.
+ rmdir "$gnulib_path" 2>/dev/null
+ git clone --reference "$GNULIB_SRCDIR" \
+ "$(git_modules_config submodule.gnulib.url)" "$gnulib_path" \
+ && git submodule init -- "$gnulib_path" \
+ && git submodule update -- "$gnulib_path" \
+ || exit $?
+ fi
fi
+ GNULIB_SRCDIR=$gnulib_path
fi
- GNULIB_SRCDIR=$gnulib_path
- fi
- ;;
-esac
+ ;;
+ esac
-# $GNULIB_SRCDIR now points to the version of gnulib to use, and
-# we no longer need to use git or $gnulib_path below here.
+ # $GNULIB_SRCDIR now points to the version of gnulib to use, and
+ # we no longer need to use git or $gnulib_path below here.
-if $bootstrap_sync; then
- cmp -s "$0" "$GNULIB_SRCDIR/build-aux/bootstrap" || {
- echo "$0: updating bootstrap and restarting..."
- case $(sh -c 'echo "$1"' -- a) in
- a) ignored=--;;
- *) ignored=ignored;;
- esac
- exec sh -c \
- 'cp "$1" "$2" && shift && exec "${CONFIG_SHELL-/bin/sh}" "$@"' \
- $ignored "$GNULIB_SRCDIR/build-aux/bootstrap" \
- "$0" "$@" --no-bootstrap-sync
- }
-fi
+ if $bootstrap_sync; then
+ cmp -s "$0" "$GNULIB_SRCDIR/build-aux/bootstrap" || {
+ echo "$0: updating bootstrap and restarting..."
+ case $(sh -c 'echo "$1"' -- a) in
+ a) ignored=--;;
+ *) ignored=ignored;;
+ esac
+ exec sh -c \
+ 'cp "$1" "$2" && shift && exec "${CONFIG_SHELL-/bin/sh}" "$@"' \
+ $ignored "$GNULIB_SRCDIR/build-aux/bootstrap" \
+ "$0" "$@" --no-bootstrap-sync
+ }
+ fi
-gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
-<$gnulib_tool || exit $?
+ gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
+ <$gnulib_tool || exit $?
+fi
# Get translations.
@@ -697,7 +700,7 @@
echo "$me: getting translations into $subdir for $domain..."
cmd=$(printf "$po_download_command_format" "$domain" "$subdir")
eval "$cmd" && return
- # Fallback to HTTP.
+ # Fallback to HTTPS.
cmd=$(printf "$po_download_command_format2" "$subdir" "$domain")
eval "$cmd"
}
@@ -788,9 +791,9 @@
# Leave any existing symlink alone, if it already points to the source,
# so that broken build tools that care about symlink times
# aren't confused into doing unnecessary builds. Conversely, if the
- # existing symlink's time stamp is older than the source, make it afresh,
+ # existing symlink's timestamp is older than the source, make it afresh,
# so that broken tools aren't confused into skipping needed builds. See
- # <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00326.html>.
+ # <https://lists.gnu.org/r/bug-gnulib/2011-05/msg00326.html>.
test -h "$dst" &&
src_ls=$(ls -diL "$src" 2>/dev/null) && set $src_ls && src_i=$1 &&
dst_ls=$(ls -diL "$dst" 2>/dev/null) && set $dst_ls && dst_i=$1 &&
@@ -896,31 +899,33 @@
# Import from gnulib.
-gnulib_tool_options="\
- --import\
- --no-changelog\
- --aux-dir $build_aux\
- --doc-base $doc_base\
- --lib $gnulib_name\
- --m4-base $m4_base/\
- --source-base $source_base/\
- --tests-base $tests_base\
- --local-dir $local_gl_dir\
- $gnulib_tool_option_extras\
-"
-if test $use_libtool = 1; then
- case "$gnulib_tool_options " in
- *' --libtool '*) ;;
- *) gnulib_tool_options="$gnulib_tool_options --libtool" ;;
- esac
+if $use_gnulib; then
+ gnulib_tool_options="\
+ --no-changelog\
+ --aux-dir $build_aux\
+ --doc-base $doc_base\
+ --lib $gnulib_name\
+ --m4-base $m4_base/\
+ --source-base $source_base/\
+ --tests-base $tests_base\
+ --local-dir $local_gl_dir\
+ $gnulib_tool_option_extras\
+ "
+ if test $use_libtool = 1; then
+ case "$gnulib_tool_options " in
+ *' --libtool '*) ;;
+ *) gnulib_tool_options="$gnulib_tool_options --libtool" ;;
+ esac
+ fi
+ echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
+ $gnulib_tool $gnulib_tool_options --import $gnulib_modules \
+ || die "gnulib-tool failed"
+
+ for file in $gnulib_files; do
+ symlink_to_dir "$GNULIB_SRCDIR" $file \
+ || die "failed to symlink $file"
+ done
fi
-echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
-$gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
-
-for file in $gnulib_files; do
- symlink_to_dir "$GNULIB_SRCDIR" $file \
- || die "failed to symlink $file"
-done
bootstrap_post_import_hook \
|| die "bootstrap_post_import_hook failed"
@@ -1017,9 +1022,9 @@
echo "$0: done. Now you can run './configure'."
# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//pzqufb_bootstrap.conf
2018-06-17 19:12:30.000000000 +0200
+++ bootstrap.conf 2018-06-17 18:43:59.000000000 +0200
@@ -81,7 +81,7 @@
bootstrap_post_import_hook()
{
# Massage lib/gnulib.mk before using it later in the bootstrapping process.
- build-aux/prefix-gnulib-mk --lib-name=$gnulib_name lib/$gnulib_mk
+ build-aux/prefix-gnulib-mk --lib-name=$gnulib_name lib/gnulib.mk
# Ensure that ChangeLog exists, for automake.
test -f ChangeLog || touch ChangeLog
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//ZFootc_.gitignore
2018-06-17 19:12:30.000000000 +0200
+++ build-aux/.gitignore 2018-06-17 18:43:59.000000000 +0200
@@ -1,6 +1,4 @@
/announce-gen
-/arg-nonnull.h
-/c++defs.h
/compile
/config.guess
/config.rpath
@@ -16,14 +14,12 @@
/install-sh
/javacomp.sh.in
/javaexec.sh.in
-/link-warning.h
/mdate-sh
/missing
+/prefix-gnulib-mk
/test-driver
/texinfo.tex
/update-copyright
/useless-if-before-free
/vc-list-files
-/warn-on-use.h
/ylwrap
-/prefix-gnulib-mk
--- /dev/null 2018-06-17 19:12:07.000000000 +0200
+++ build-aux/Linux.valgrind 2018-06-17 18:43:59.000000000 +0200
@@ -0,0 +1,48 @@
+# Copyright (C) 2012-2015, 2018 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Valgrind suppression file for Bison.
+
+# Linux prague 4.1.2-2-ARCH #1 SMP PREEMPT Wed Jul 15 08:30:32 UTC 2015
+# x86_64 GNU/Linux
+{
+ Probably exception handling from G++ 5.1.
+ Memcheck:Leak
+ match-leak-kinds: reachable
+ fun:malloc
+ fun:pool
+ fun:__static_initialization_and_destruction_0
+ fun:_GLOBAL__sub_I_eh_alloc.cc
+ fun:call_init.part.0
+ fun:_dl_init
+ obj:/usr/lib/ld-2.21.so
+}
+
+# Linux seattle 2.6.32-5-amd64 #1 SMP Thu Mar 22 17:26:33 UTC 2012
+# x86_64 GNU/Linux
+{
+ index
+ Memcheck:Cond
+ fun:index
+ fun:expand_dynamic_string_token
+ fun:_dl_map_object
+ fun:map_doit
+ fun:_dl_catch_error
+ fun:do_preload
+ fun:dl_main
+ fun:_dl_sysdep_start
+ fun:_dl_start
+ obj:/lib/ld-2.11.3.so
+}
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//zs0lOa_linux-gnu.valgrind
2018-06-17 19:12:30.000000000 +0200
+++ /dev/null 2018-06-17 19:12:07.000000000 +0200
@@ -1,16 +0,0 @@
-# Linux seattle 2.6.32-5-amd64 #1 SMP Thu Mar 22 17:26:33 UTC 2012
-# x86_64 GNU/Linux
-{
- index
- Memcheck:Cond
- fun:index
- fun:expand_dynamic_string_token
- fun:_dl_map_object
- fun:map_doit
- fun:_dl_catch_error
- fun:do_preload
- fun:dl_main
- fun:_dl_sysdep_start
- fun:_dl_start
- obj:/lib/ld-2.11.3.so
-}
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//NHMiZ8_local.mk
2018-06-17 19:12:30.000000000 +0200
+++ build-aux/local.mk 2018-06-17 18:43:59.000000000 +0200
@@ -13,10 +13,10 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-EXTRA_DIST += \
- build-aux/cross-options.pl \
- build-aux/darwin11.4.0.valgrind \
- build-aux/linux-gnu.valgrind \
- build-aux/move-if-change \
- build-aux/prev-version.txt \
+EXTRA_DIST += \
+ build-aux/Darwin.valgrind \
+ build-aux/Linux.valgrind \
+ build-aux/cross-options.pl \
+ build-aux/move-if-change \
+ build-aux/prev-version.txt \
build-aux/update-b4-copyright
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//Lwdr5b_.gitignore
2018-06-17 19:12:30.000000000 +0200
+++ /dev/null 2018-06-17 19:12:07.000000000 +0200
@@ -1,4 +0,0 @@
-/_Noreturn.h
-/arg-nonnull.h
-/c++defs.h
-/warn-on-use.h
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//3dPp3b_cfg.mk
2018-06-17 19:12:30.000000000 +0200
+++ cfg.mk 2018-06-17 18:43:59.000000000 +0200
@@ -34,7 +34,7 @@
$(filter maintainer-% dist% alpha beta major,$(MAKECMDGOALS)))
url_dir_list = \
- ftp://$(gnu_rel_host)/gnu/bison
+ https://$(gnu_rel_host)/gnu/bison
# Tests not to run as part of "make distcheck".
local-checks-to-skip = \
@@ -158,23 +158,24 @@
exclude = \
$(foreach a,$(1),$(eval $(subst $$,$$$$,exclude_file_name_regexp--sc_$(a))))
-$(call exclude,
\
- bindtextdomain=^lib/main.c$$ \
- preprocessor_indentation=^data/|^lib/|^src/parse-gram.[ch]$$ \
- program_name=^lib/main.c$$ \
- prohibit_always-defined_macros=^data/yacc.c$$|^djgpp/
\
- prohibit_always-defined_macros+=?|^lib/timevar.c$$ \
- prohibit_always-defined_macros+=?|^src/(parse-gram.c|system.h)$$ \
- prohibit_always-defined_macros+=?|^tests/regression.at$$ \
- prohibit_always_true_header_tests=^djgpp/subpipe.h$$|^lib/timevar.c$$
\
- prohibit_always_true_header_tests+=?|^m4/timevar.m4$$
\
- prohibit_defined_have_decl_tests=?|^lib/timevar.c$$ \
+$(call exclude, \
+ bindtextdomain=^lib/main.c$$ \
+ preprocessor_indentation=^data/|^lib/|^src/parse-gram.[ch]$$ \
+ program_name=^lib/main.c$$ \
+ prohibit_always-defined_macros=^data/yacc.c$$|^djgpp/ \
+ prohibit_always-defined_macros+=?|^lib/timevar.c$$ \
+ prohibit_always-defined_macros+=?|^src/(parse-gram.c|system.h)$$ \
+ prohibit_always-defined_macros+=?|^tests/regression.at$$ \
+ prohibit_always_true_header_tests=^djgpp/subpipe.h$$|^lib/timevar.c$$ \
+ prohibit_always_true_header_tests+=?|^m4/timevar.m4$$ \
+ prohibit_defined_have_decl_tests=?|^lib/timevar.c$$ \
prohibit_doubled_word=^tests/named-refs.at$$ \
- prohibit_magic_number_exit=^doc/bison.texi$$ \
- prohibit_magic_number_exit+=?|^tests/(conflicts|regression).at$$ \
- prohibit_strcmp=^doc/bison\.texi|tests/local\.at$$ \
- prohibit_tab_based_indentation=\.(am|mk)$$|^djgpp/|^\.git \
- require_config_h_first=^(lib/yyerror|data/(glr|yacc))\.c$$ \
+ prohibit_magic_number_exit=^doc/bison.texi$$ \
+ prohibit_magic_number_exit+=?|^tests/(conflicts|regression).at$$ \
+ prohibit_strcmp=^doc/bison\.texi|tests/local\.at$$ \
+ prohibit_tab_based_indentation=\.(am|mk)$$|^djgpp/|^\.git \
+ require_config_h_first=^(lib/yyerror|data/(glr|yacc))\.c$$ \
space_before_open_paren=^(data/|djgpp/) \
- unmarked_diagnostics=^(djgpp/|doc/bison.texi$$|tests/c\+\+\.at$$) \
+ two_space_separator_in_usage=^(bootstrap) \
+ unmarked_diagnostics=^(djgpp/|doc/bison.texi$$|tests/c\+\+\.at$$) \
)
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//ljhHka_configure.ac
2018-06-17 19:12:30.000000000 +0200
+++ configure.ac 2018-06-17 18:43:59.000000000 +0200
@@ -26,7 +26,7 @@
AC_INIT([GNU Bison],
m4_esyscmd([build-aux/git-version-gen .tarball-version]),
address@hidden)
-AC_SUBST([PACKAGE_COPYRIGHT_YEAR], [2015])
+AC_SUBST([PACKAGE_COPYRIGHT_YEAR], [2018])
AC_DEFINE_UNQUOTED([PACKAGE_COPYRIGHT_YEAR], [$PACKAGE_COPYRIGHT_YEAR],
[The copyright year for this package])
@@ -82,7 +82,7 @@
AM_CONDITIONAL([ENABLE_GCC_WARNINGS], [test "$enable_gcc_warnings" = yes])
if test "$enable_gcc_warnings" = yes; then
warn_common='-Wall -Wextra -Wno-sign-compare -Wcast-align -Wdocumentation
- -Wformat -Wpointer-arith -Wwrite-strings'
+ -Wformat -Wnull-dereference -Wpointer-arith -Wwrite-strings'
warn_c='-Wbad-function-cast -Wshadow -Wstrict-prototypes'
warn_cxx='-Wnoexcept'
# Warnings for the test suite only.
@@ -90,7 +90,12 @@
# -fno-color-diagnostics: Clang's use of colors in the error
# messages is confusing the tests looking at the compiler's output
# (e.g., synclines.at).
- warn_tests='-Wundef -pedantic -Wsign-compare -fno-color-diagnostics'
+ #
+ # -Wno-keyword-macro: We use the "#define private public" dirty
+ # trick in the test suite to check some private implementation
+ # details for lalr1.cc.
+ warn_tests='-Wundef -pedantic -Wdeprecated -Wsign-compare
-fno-color-diagnostics
+ -Wno-keyword-macro'
AC_LANG_PUSH([C])
# Clang supports many of GCC's -W options, but only issues warnings
@@ -220,20 +225,21 @@
AC_CONFIG_TESTDIR(tests)
AC_CONFIG_FILES([tests/atlocal])
AC_CONFIG_FILES([tests/bison], [chmod +x tests/bison])
+
AC_CHECK_PROGS([VALGRIND], [valgrind])
-case $VALGRIND:$host_os in
+# Use something simpler that $host_os to select our suppression file.
+uname=`uname`
+case $VALGRIND:$uname in
'':*) ;;
- *:darwin*)
+ *:Darwin)
# See README-hacking.
- # VALGRIND+='-q
--suppressions=$(abs_top_srcdir)/build-aux/darwin11.4.0.valgrind'
VALGRIND=;;
*:*)
- suppfile=build-aux/$host_os.valgrind
+ suppfile=build-aux/$uname.valgrind
if test -f "$srcdir/$suppfile"; then
- VALGRIND="$VALGRIND --gen-suppressions=all"
- VALGRIND="$VALGRIND --suppressions=\$(abs_top_srcdir)/$suppfile"
+ AC_SUBST([VALGRIND_OPTS_SUPPRESSION],
+ ["--suppressions=\$(abs_top_srcdir)/$suppfile"])
fi
- AC_SUBST([VALGRIND_PREBISON], ["$VALGRIND -q"])
;;
esac
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//XWjPac_c++.m4
2018-06-17 19:12:30.000000000 +0200
+++ data/c++.m4 2018-06-17 18:43:59.000000000 +0200
@@ -30,6 +30,16 @@
m4_define([b4_comment],
[b4_comment_([$1], [$2// ], [$2// ])])
+# b4_inline(hh|cc)
+# ----------------
+# Expand to `inline\n ` if $1 is hh.
+m4_define([b4_inline],
+[m4_case([$1],
+ [cc], [],
+ [hh], [[inline
+ ]],
+ [m4_fatal([$0: invalid argument: $1])])])
+
## -------- ##
## Checks. ##
## -------- ##
@@ -275,25 +285,22 @@
]b4_symbol_constructor_declare])
-# b4_public_types_define
-# ----------------------
+# b4_public_types_define(hh|cc)
+# -----------------------------
# Provide the implementation needed by the public types.
m4_define([b4_public_types_define],
-[[ inline
- ]b4_parser_class_name[::syntax_error::syntax_error (]b4_locations_if([const
location_type& l, ])[const std::string& m)
+[ b4_inline([$1])b4_parser_class_name[::syntax_error::syntax_error
(]b4_locations_if([const location_type& l, ])[const std::string& m)
: std::runtime_error (m)]b4_locations_if([
, location (l)])[
{}
// basic_symbol.
template <typename Base>
- inline
]b4_parser_class_name[::basic_symbol<Base>::basic_symbol ()
: value ()
{}
template <typename Base>
- inline
]b4_parser_class_name[::basic_symbol<Base>::basic_symbol (const
basic_symbol& other)
: Base (other)
, value ()]b4_locations_if([
@@ -304,9 +311,7 @@
[value = other.value;])[
}
-
template <typename Base>
- inline
]b4_parser_class_name[::basic_symbol<Base>::basic_symbol (]b4_join(
[typename Base::kind_type t],
[const semantic_type& v],
@@ -323,7 +328,6 @@
]b4_type_foreach([b4_basic_symbol_constructor_define])], [[
/// Constructor for valueless symbols.
template <typename Base>
- inline
]b4_parser_class_name[::basic_symbol<Base>::basic_symbol (]b4_join(
[typename Base::kind_type t],
b4_locations_if([const location_type& l]))[)
@@ -333,14 +337,12 @@
{}]])[
template <typename Base>
- inline
]b4_parser_class_name[::basic_symbol<Base>::~basic_symbol ()
{
clear ();
}
template <typename Base>
- inline
void
]b4_parser_class_name[::basic_symbol<Base>::clear ()
{]b4_variant_if([[
@@ -361,7 +363,6 @@
}
template <typename Base>
- inline
bool
]b4_parser_class_name[::basic_symbol<Base>::empty () const
{
@@ -369,11 +370,10 @@
}
template <typename Base>
- inline
void
]b4_parser_class_name[::basic_symbol<Base>::move (basic_symbol& s)
{
- super_type::move(s);
+ super_type::move (s);
]b4_variant_if([b4_symbol_variant([this->type_get ()], [value], [move],
[s.value])],
[value = s.value;])[]b4_locations_if([
@@ -381,45 +381,38 @@
}
// by_type.
- inline
- ]b4_parser_class_name[::by_type::by_type ()
+ ]b4_inline([$1])b4_parser_class_name[::by_type::by_type ()
: type (empty_symbol)
{}
- inline
- ]b4_parser_class_name[::by_type::by_type (const by_type& other)
+ ]b4_inline([$1])b4_parser_class_name[::by_type::by_type (const by_type&
other)
: type (other.type)
{}
- inline
- ]b4_parser_class_name[::by_type::by_type (token_type t)
+ ]b4_inline([$1])b4_parser_class_name[::by_type::by_type (token_type t)
: type (yytranslate_ (t))
{}
- inline
- void
+ ]b4_inline([$1])[void
]b4_parser_class_name[::by_type::clear ()
{
type = empty_symbol;
}
- inline
- void
+ ]b4_inline([$1])[void
]b4_parser_class_name[::by_type::move (by_type& that)
{
type = that.type;
that.clear ();
}
- inline
- int
+ ]b4_inline([$1])[int
]b4_parser_class_name[::by_type::type_get () const
{
return type;
}
]b4_token_ctor_if([[
- inline
- ]b4_parser_class_name[::token_type
+ ]b4_inline([$1])b4_parser_class_name[::token_type
]b4_parser_class_name[::by_type::token () const
{
// YYTOKNUM[NUM] -- (External) token number corresponding to the
@@ -445,14 +438,13 @@
m4_define([b4_symbol_constructor_define], [])
-# b4_yytranslate_define
-# ---------------------
-# Define yytranslate_. Sometimes used in the header file,
+# b4_yytranslate_define(cc|hh)
+# ----------------------------
+# Define yytranslate_. Sometimes used in the header file ($1=hh),
# sometimes in the cc file.
m4_define([b4_yytranslate_define],
[[ // Symbol number corresponding to token number t.
- inline
- ]b4_parser_class_name[::token_number_type
+ ]b4_inline([$1])b4_parser_class_name[::token_number_type
]b4_parser_class_name[::yytranslate_ (]b4_token_ctor_if([token_type],
[int])[ t)
{
@@ -462,12 +454,12 @@
{
]b4_translate[
};
- const unsigned int user_token_number_max_ = ]b4_user_token_number_max[;
+ const unsigned user_token_number_max_ = ]b4_user_token_number_max[;
const token_number_type undef_token_ = ]b4_undef_token_number[;
- if (static_cast<int>(t) <= yyeof_)
+ if (static_cast<int> (t) <= yyeof_)
return yyeof_;
- else if (static_cast<unsigned int> (t) <= user_token_number_max_)
+ else if (static_cast<unsigned> (t) <= user_token_number_max_)
return translate_table[t];
else
return undef_token_;
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//tJwBwa_c.m4
2018-06-17 19:12:30.000000000 +0200
+++ data/c.m4 2018-06-17 18:43:59.000000000 +0200
@@ -459,7 +459,8 @@
# ------------------------------------
m4_define([b4_predicate_case],
[ case $1:
- if (! ($2)) YYERROR;
+ if (! (
+$2)) YYERROR;
b4_syncline(address@hidden@], address@hidden@])
break;])
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//LiuVcb_glr.c
2018-06-17 19:12:30.000000000 +0200
+++ data/glr.c 2018-06-17 18:43:59.000000000 +0200
@@ -198,7 +198,7 @@
[b4_defines_if(
[b4_output_begin([b4_spec_defines_file])
b4_copyright([Skeleton interface for Bison GLR parsers in C],
- [2002-2015])[
+ [2002-2015, 2018])[
]b4_cpp_guard_open([b4_spec_defines_file])[
]b4_shared_declarations[
@@ -213,7 +213,7 @@
b4_output_begin([b4_parser_file_name])
b4_copyright([Skeleton implementation for Bison GLR parsers in C],
- [2002-2015])[
+ [2002-2015, 2018])[
/* C GLR parser skeleton written by Paul Hilfinger. */
@@ -808,6 +808,7 @@
*yyvalp = yyval_default;
else
*yyvalp = yyvsp[YYFILL
(1-yyrhslen)].yystate.yysemantics.yysval;]b4_locations_if([[
+ /* Default location. */
YYLLOC_DEFAULT ((*yylocp), (yyvsp - yyrhslen), yyrhslen);
yystackp->yyerror_range[1].yystate.yyloc = *yylocp;
]])[
@@ -2074,6 +2075,7 @@
case N: \
yyformat = S; \
break
+ default: /* Avoid compiler warnings. */
YYCASE_(0, YY_("syntax error"));
YYCASE_(1, YY_("syntax error, unexpected %s"));
YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
@@ -2294,8 +2296,8 @@
{
yyrule = yydefaultAction (yystate);
if (yyrule == 0)
- {
-]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc =
yylloc;]])[
+ {]b4_locations_if([[
+ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[
yyreportSyntaxError (&yystack]b4_user_args[);
goto yyuser_error;
}
@@ -2334,8 +2336,8 @@
yystack.yyerrState -= 1;
}
else if (yyisErrorAction (yyaction))
- {
-]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc =
yylloc;]])[
+ {]b4_locations_if([[
+ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[
yyreportSyntaxError (&yystack]b4_user_args[);
goto yyuser_error;
}
@@ -2380,8 +2382,8 @@
if (yystack.yytops.yysize == 0)
yyFail (&yystack][]b4_lpure_args[, YY_("syntax error"));
YYCHK1 (yyresolveStack (&yystack]b4_user_args[));
- YYDPRINTF ((stderr, "Returning to deterministic operation.\n"));
-]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc =
yylloc;]])[
+ YYDPRINTF ((stderr, "Returning to deterministic
operation.\n"));]b4_locations_if([[
+ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[
yyreportSyntaxError (&yystack]b4_user_args[);
goto yyuser_error;
}
@@ -2462,9 +2464,9 @@
{
while (yystates[yyk])
{
- yyGLRState *yys = yystates[yyk];
-]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc =
yys->yyloc;]]
-)[ if (yys->yypred != YY_NULLPTR)
+ yyGLRState *yys = yystates[yyk];]b4_locations_if([[
+ yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;]])[
+ if (yys->yypred != YY_NULLPTR)
yydestroyGLRState ("Cleanup: popping",
yys]b4_user_args[);
yystates[yyk] = yys->yypred;
yystack.yynextFree -= 1;
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//5culUb_glr.cc
2018-06-17 19:12:30.000000000 +0200
+++ data/glr.cc 2018-06-17 18:43:59.000000000 +0200
@@ -177,7 +177,7 @@
| Print this symbol. |
`--------------------*/
- inline void
+ void
]b4_parser_class_name[::yy_symbol_value_print_ (int yytype,
const semantic_type* yyvaluep]b4_locations_if([[,
const location_type* yylocationp]])[)
@@ -329,7 +329,7 @@
b4_defines_if(
[b4_output_begin([b4_spec_defines_file])
b4_copyright([Skeleton interface for Bison GLR parsers in C++],
- [2002-2015])[
+ [2002-2015, 2018])[
// C++ GLR parser skeleton written by Akim Demaille.
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//VJJlBb_lalr1.cc
2018-06-17 19:12:30.000000000 +0200
+++ data/lalr1.cc 2018-06-17 18:43:59.000000000 +0200
@@ -131,7 +131,7 @@
m4_pushdef([b4_copyright_years],
- [2002-2015])
+ [2002-2015, 2018])
m4_define([b4_parser_class_name],
[b4_percent_define_get([[parser_class_name]])])
@@ -142,9 +142,9 @@
m4_include(b4_pkgdatadir/[stack.hh])
b4_variant_if([m4_include(b4_pkgdatadir/[variant.hh])])
-# b4_shared_declarations
-# ----------------------
-# Declaration that might either go into the header (if --defines)
+# b4_shared_declarations(hh|cc)
+# -----------------------------
+# Declaration that might either go into the header (if --defines, $1 = hh)
# or open coded in the parser body.
m4_define([b4_shared_declarations],
[b4_percent_code_get([[requires]])[
@@ -314,6 +314,8 @@
typedef basic_symbol<by_state> super_type;
/// Construct an empty symbol.
stack_symbol_type ();
+ /// Copy construct.
+ stack_symbol_type (const stack_symbol_type& that);
/// Steal the contents from \a sym to build this.
stack_symbol_type (state_type s, symbol_type& sym);
/// Assignment, needed by push_back.
@@ -342,7 +344,7 @@
void yypush_ (const char* m, state_type s, symbol_type& sym);
/// Pop \a n symbols the three stacks.
- void yypop_ (unsigned int n = 1);
+ void yypop_ (unsigned n = 1);
/// Constants.
enum
@@ -359,8 +361,8 @@
]b4_parse_param_vars[
};
-]b4_token_ctor_if([b4_yytranslate_define
-b4_public_types_define])[
+]b4_token_ctor_if([b4_yytranslate_define([$1])[
+]b4_public_types_define([$1])])[
]b4_namespace_close[
]b4_percent_define_flag_if([[global_tokens_and_yystype]],
@@ -386,7 +388,7 @@
// C++ LALR(1) parser skeleton written by Akim Demaille.
]b4_cpp_guard_open([b4_spec_defines_file])[
-]b4_shared_declarations[
+]b4_shared_declarations(hh)[
]b4_cpp_guard_close([b4_spec_defines_file])
b4_output_end()
])
@@ -406,7 +408,7 @@
]b4_null_define[
]b4_defines_if([[#include "@basename(]b4_spec_defines_file[@)"]],
- [b4_shared_declarations])[
+ [b4_shared_declarations([cc])])[
// User implementation prologue.
]b4_user_post_prologue[
@@ -443,7 +445,7 @@
{ \
*yycdebug_ << Title << ' '; \
yy_print_ (*yycdebug_, Symbol); \
- *yycdebug_ << std::endl; \
+ *yycdebug_ << '\n'; \
} \
} while (false)
@@ -462,9 +464,9 @@
#else // !]b4_api_PREFIX[DEBUG
# define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE(Symbol)
-# define YY_REDUCE_PRINT(Rule) static_cast<void>(0)
-# define YY_STACK_PRINT() static_cast<void>(0)
+# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE (Symbol)
+# define YY_REDUCE_PRINT(Rule) static_cast<void> (0)
+# define YY_STACK_PRINT() static_cast<void> (0)
#endif // !]b4_api_PREFIX[DEBUG
@@ -533,27 +535,23 @@
| Symbol types. |
`---------------*/
-]b4_token_ctor_if([], [b4_public_types_define])[
+]b4_token_ctor_if([], [b4_public_types_define([cc])])[
// by_state.
- inline
]b4_parser_class_name[::by_state::by_state ()
: state (empty_state)
{}
- inline
]b4_parser_class_name[::by_state::by_state (const by_state& other)
: state (other.state)
{}
- inline
void
]b4_parser_class_name[::by_state::clear ()
{
state = empty_state;
}
- inline
void
]b4_parser_class_name[::by_state::move (by_state& that)
{
@@ -561,12 +559,10 @@
that.clear ();
}
- inline
]b4_parser_class_name[::by_state::by_state (state_type s)
: state (s)
{}
- inline
]b4_parser_class_name[::symbol_number_type
]b4_parser_class_name[::by_state::type_get () const
{
@@ -576,12 +572,17 @@
return yystos_[state];
}
- inline
]b4_parser_class_name[::stack_symbol_type::stack_symbol_type ()
{}
+ ]b4_parser_class_name[::stack_symbol_type::stack_symbol_type (const
stack_symbol_type& that)
+ : super_type (that.state]b4_locations_if([, that.location])[)
+ {
+ ]b4_variant_if([b4_symbol_variant([that.type_get ()],
+ [value], [copy], [that.value])],
+ [[value = that.value;]])[
+ }
- inline
]b4_parser_class_name[::stack_symbol_type::stack_symbol_type (state_type s,
symbol_type& that)
: super_type (s]b4_locations_if([, that.location])[)
{
@@ -592,7 +593,6 @@
that.type = empty_symbol;
}
- inline
]b4_parser_class_name[::stack_symbol_type&
]b4_parser_class_name[::stack_symbol_type::operator= (const
stack_symbol_type& that)
{
@@ -606,7 +606,6 @@
template <typename Base>
- inline
void
]b4_parser_class_name[::yy_destroy_ (const char* yymsg, basic_symbol<Base>&
yysym) const
{
@@ -638,7 +637,6 @@
}
#endif
- inline
void
]b4_parser_class_name[::yypush_ (const char* m, state_type s, symbol_type&
sym)
{
@@ -646,7 +644,6 @@
yypush_ (m, t);
}
- inline
void
]b4_parser_class_name[::yypush_ (const char* m, stack_symbol_type& s)
{
@@ -655,9 +652,8 @@
yystack_.push (s);
}
- inline
void
- ]b4_parser_class_name[::yypop_ (unsigned int n)
+ ]b4_parser_class_name[::yypop_ (unsigned n)
{
yystack_.pop (n);
}
@@ -689,7 +685,7 @@
}
#endif // ]b4_api_PREFIX[DEBUG
- inline ]b4_parser_class_name[::state_type
+ ]b4_parser_class_name[::state_type
]b4_parser_class_name[::yy_lr_goto_state_ (state_type yystate, int yysym)
{
int yyr = yypgoto_[yysym - yyntokens_] + yystate;
@@ -699,13 +695,13 @@
return yydefgoto_[yysym - yyntokens_];
}
- inline bool
+ bool
]b4_parser_class_name[::yy_pact_value_is_default_ (int yyvalue)
{
return yyvalue == yypact_ninf_;
}
- inline bool
+ bool
]b4_parser_class_name[::yy_table_value_is_error_ (int yyvalue)
{
return yyvalue == yytable_ninf_;
@@ -736,7 +732,7 @@
// avoid gratuitous conflicts when merging into the master branch.
try
{
- YYCDEBUG << "Starting parse" << std::endl;
+ YYCDEBUG << "Starting parse\n";
]m4_ifdef([b4_initial_action], [
b4_dollar_pushdef([yyla.value], [], [yyla.location])dnl
@@ -753,7 +749,7 @@
// A new symbol was pushed on the stack.
yynewstate:
- YYCDEBUG << "Entering state " << yystack_[0].state << std::endl;
+ YYCDEBUG << "Entering state " << yystack_[0].state << '\n';
// Accept?
if (yystack_[0].state == yyfinal_)
@@ -827,7 +823,7 @@
yylen = yyr2_[yyn];
{
stack_symbol_type yylhs;
- yylhs.state = yy_lr_goto_state_(yystack_[yylen].state,
yyr1_[yyn]);]b4_variant_if([
+ yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state,
yyr1_[yyn]);]b4_variant_if([
/* Variants are always initialized to an empty instance of the
correct type. The default '$$ = $1' action is NOT applied
when using variants. */
@@ -844,10 +840,11 @@
yylhs.value = address@hidden@}.value;])[
]b4_locations_if([dnl
[
- // Compute the default @@$.
+ // Default location.
{
slice<stack_symbol_type, stack_type> slice (yystack_, yylen);
YYLLOC_DEFAULT (yylhs.location, slice, yylen);
+ yyerror_range[1].location = yylhs.location;
}]])[
// Perform the reduction.
@@ -918,8 +915,7 @@
YYERROR and the label yyerrorlab therefore never appears in user
code. */
if (false)
- goto yyerrorlab;]b4_locations_if([[
- yyerror_range[1].location = yystack_[yylen - 1].location;]])[
+ goto yyerrorlab;
/* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
yypop_ (yylen);
@@ -993,8 +989,7 @@
}
catch (...)
{
- YYCDEBUG << "Exception caught: cleaning lookahead and stack"
- << std::endl;
+ YYCDEBUG << "Exception caught: cleaning lookahead and stack\n";
// Do not try to display the values of the reclaimed symbols,
// as their printer might throw an exception.
if (!yyla.empty ())
@@ -1013,7 +1008,7 @@
]b4_parser_class_name[::error (const syntax_error& yyexc)
{
error (]b4_join(b4_locations_if([yyexc.location]),
- [[yyexc.what()]])[);
+ [[yyexc.what ()]])[);
}
// Generate an error message.
@@ -1091,12 +1086,13 @@
case N: \
yyformat = S; \
break
- YYCASE_(0, YY_("syntax error"));
- YYCASE_(1, YY_("syntax error, unexpected %s"));
- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or
%s"));
- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s
or %s"));
+ default: // Avoid compiler warnings.
+ YYCASE_ (0, YY_("syntax error"));
+ YYCASE_ (1, YY_("syntax error, unexpected %s"));
+ YYCASE_ (2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_ (3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_ (4, YY_("syntax error, unexpected %s, expecting %s or %s or
%s"));
+ YYCASE_ (5, YY_("syntax error, unexpected %s, expecting %s or %s or %s
or %s"));
#undef YYCASE_
}
@@ -1144,18 +1140,18 @@
i_end = yystack_.end ();
i != i_end; ++i)
*yycdebug_ << ' ' << i->state;
- *yycdebug_ << std::endl;
+ *yycdebug_ << '\n';
}
// Report on the debug stream that the rule \a yyrule is going to be reduced.
void
]b4_parser_class_name[::yy_reduce_print_ (int yyrule)
{
- unsigned int yylno = yyrline_[yyrule];
+ unsigned yylno = yyrline_[yyrule];
int yynrhs = yyr2_[yyrule];
// Print the symbols being reduced, and their result.
*yycdebug_ << "Reducing stack by rule " << yyrule - 1
- << " (line " << yylno << "):" << std::endl;
+ << " (line " << yylno << "):\n";
// The symbols being reduced.
for (int yyi = 0; yyi < yynrhs; yyi++)
YY_SYMBOL_PRINT (" $" << yyi + 1 << " =",
@@ -1163,7 +1159,7 @@
}
#endif // ]b4_api_PREFIX[DEBUG
-]b4_token_ctor_if([], [b4_yytranslate_define])[
+]b4_token_ctor_if([], [b4_yytranslate_define([cc])])[
]b4_namespace_close[
]b4_epilogue[]dnl
b4_output_end()
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//DsFFbb_lalr1.java
2018-06-17 19:12:30.000000000 +0200
+++ data/lalr1.java 2018-06-17 18:43:59.000000000 +0200
@@ -84,7 +84,7 @@
b4_output_begin([b4_parser_file_name])
b4_copyright([Skeleton implementation for Bison LALR(1) parsers in Java],
- [2007-2015])
+ [2007-2015, 2018])
b4_percent_define_ifdef([package], [package b4_percent_define_get([package]);
])[/* First part of user declarations. */
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//ZdOy6a_location.cc
2018-06-17 19:12:30.000000000 +0200
+++ data/location.cc 2018-06-17 18:43:59.000000000 +0200
@@ -16,7 +16,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
m4_pushdef([b4_copyright_years],
- [2002-2015])
+ [2002-2015, 2018])
# b4_position_define
# ------------------
@@ -28,19 +28,18 @@
public:]m4_ifdef([b4_location_constructors], [[
/// Construct a position.
explicit position (]b4_percent_define_get([[filename_type]])[* f =
YY_NULLPTR,
- unsigned int l = ]b4_location_initial_line[u,
- unsigned int c = ]b4_location_initial_column[u)
+ unsigned l = ]b4_location_initial_line[u,
+ unsigned c = ]b4_location_initial_column[u)
: filename (f)
, line (l)
, column (c)
- {
- }
+ {}
]])[
/// Initialization.
void initialize (]b4_percent_define_get([[filename_type]])[* fn =
YY_NULLPTR,
- unsigned int l = ]b4_location_initial_line[u,
- unsigned int c = ]b4_location_initial_column[u)
+ unsigned l = ]b4_location_initial_line[u,
+ unsigned c = ]b4_location_initial_column[u)
{
filename = fn;
line = l;
@@ -69,15 +68,15 @@
/// File name to which this position refers.
]b4_percent_define_get([[filename_type]])[* filename;
/// Current line number.
- unsigned int line;
+ unsigned line;
/// Current column number.
- unsigned int column;
+ unsigned column;
private:
/// Compute max(min, lhs+rhs) (provided min <= lhs).
- static unsigned int add_ (unsigned int lhs, int rhs, unsigned int min)
+ static unsigned add_ (unsigned lhs, int rhs, unsigned min)
{
- return (0 < rhs || -static_cast<unsigned int>(rhs) < lhs
+ return (0 < rhs || -static_cast<unsigned>(rhs) < lhs
? rhs + lhs
: min);
}
@@ -157,30 +156,27 @@
location (const position& b, const position& e)
: begin (b)
, end (e)
- {
- }
+ {}
/// Construct a 0-width location in \a p.
explicit location (const position& p = position ())
: begin (p)
, end (p)
- {
- }
+ {}
/// Construct a 0-width location in \a f, \a l, \a c.
explicit location (]b4_percent_define_get([[filename_type]])[* f,
- unsigned int l = ]b4_location_initial_line[u,
- unsigned int c = ]b4_location_initial_column[u)
+ unsigned l = ]b4_location_initial_line[u,
+ unsigned c = ]b4_location_initial_column[u)
: begin (f, l, c)
, end (f, l, c)
- {
- }
+ {}
])[
/// Initialization.
void initialize (]b4_percent_define_get([[filename_type]])[* f =
YY_NULLPTR,
- unsigned int l = ]b4_location_initial_line[u,
- unsigned int c = ]b4_location_initial_column[u)
+ unsigned l = ]b4_location_initial_line[u,
+ unsigned c = ]b4_location_initial_column[u)
{
begin.initialize (f, l, c);
end = begin;
@@ -278,7 +274,7 @@
inline std::basic_ostream<YYChar>&
operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
{
- unsigned int end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
+ unsigned end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
ostr << loc.begin;
if (loc.end.filename
&& (!loc.begin.filename
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//lVkZn9_stack.hh
2018-06-17 19:12:30.000000000 +0200
+++ data/stack.hh 2018-06-17 18:43:59.000000000 +0200
@@ -16,12 +16,13 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
m4_pushdef([b4_copyright_years],
- [2002-2015])
+ [2002-2015, 2018])
# b4_stack_define
# ---------------
m4_define([b4_stack_define],
-[[ template <class T, class S = std::vector<T> >
+[[ /// A stack with random access from its top.
+ template <class T, class S = std::vector<T> >
class stack
{
public:
@@ -35,20 +36,24 @@
seq_.reserve (200);
}
- stack (unsigned int n)
+ stack (unsigned n)
: seq_ (n)
{}
- inline
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
T&
- operator[] (unsigned int i)
+ operator[] (unsigned i)
{
return seq_[seq_.size () - 1 - i];
}
- inline
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
const T&
- operator[] (unsigned int i) const
+ operator[] (unsigned i) const
{
return seq_[seq_.size () - 1 - i];
}
@@ -56,7 +61,6 @@
/// Steal the contents of \a t.
///
/// Close to move-semantics.
- inline
void
push (T& t)
{
@@ -64,9 +68,8 @@
operator[](0).move (t);
}
- inline
void
- pop (unsigned int n = 1)
+ pop (unsigned n = 1)
{
for (; n; --n)
seq_.pop_back ();
@@ -78,21 +81,18 @@
seq_.clear ();
}
- inline
typename S::size_type
size () const
{
return seq_.size ();
}
- inline
const_iterator
begin () const
{
return seq_.rbegin ();
}
- inline
const_iterator
end () const
{
@@ -111,21 +111,20 @@
class slice
{
public:
- slice (const S& stack, unsigned int range)
+ slice (const S& stack, unsigned range)
: stack_ (stack)
, range_ (range)
{}
- inline
const T&
- operator [] (unsigned int i) const
+ operator [] (unsigned i) const
{
return stack_[range_ - i];
}
private:
const S& stack_;
- unsigned int range_;
+ unsigned range_;
};
]])
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//z85dsb_variant.hh
2018-06-17 19:12:30.000000000 +0200
+++ data/variant.hh 2018-06-17 18:43:59.000000000 +0200
@@ -27,7 +27,7 @@
m4_define([b4_symbol_variant],
[m4_pushdef([b4_dollar_dollar],
[$2.$3< $][3 > (m4_shift3($@))])dnl
- switch ($1)
+switch ($1)
{
b4_type_foreach([b4_type_action_])[]dnl
default:
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//ojM18a_yacc.c
2018-06-17 19:12:31.000000000 +0200
+++ data/yacc.c 2018-06-17 18:43:59.000000000 +0200
@@ -1,11 +1,11 @@
-*- C -*-
# Yacc compatible skeleton for Bison
-# Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation,
-# Inc.
+# Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software
+# Foundation, Inc.
m4_pushdef([b4_copyright_years],
- [1984, 1989-1990, 2000-2015])
+ [1984, 1989-1990, 2000-2015, 2018])
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -1207,6 +1207,7 @@
case N: \
yyformat = S; \
break
+ default: /* Avoid compiler warnings. */
YYCASE_(0, YY_("syntax error"));
YYCASE_(1, YY_("syntax error, unexpected %s"));
YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
@@ -1641,8 +1642,9 @@
yyval = yyvsp[1-yylen];
]b4_locations_if(
-[[ /* Default location. */
- YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);]])[
+[[ /* Default location. */
+ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
+ yyerror_range[1] = yyloc;]])[
YY_REDUCE_PRINT (yyn);]b4_lac_if([[
{
int yychar_backup = yychar;
@@ -1782,8 +1784,7 @@
if (/*CONSTCOND*/ 0)
goto yyerrorlab;
-]b4_locations_if([[ yyerror_range[1] = yylsp[1-yylen];
-]])[ /* Do not reclaim the symbols of the rule whose action triggered
+ /* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
YYPOPSTACK (yylen);
yylen = 0;
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//OaTina_bison.texi
2018-06-17 19:12:31.000000000 +0200
+++ doc/bison.texi 2018-06-17 18:43:59.000000000 +0200
@@ -143,7 +143,7 @@
Examples
-* RPN Calc:: Reverse polish notation calculator;
+* RPN Calc:: Reverse Polish Notation Calculator;
a first example with no operator precedence.
* Infix Calc:: Infix (algebraic) notation calculator.
Operator precedence is introduced.
@@ -1493,7 +1493,7 @@
@cindex examples, simple
Now we show and explain several sample programs written using Bison: a
-reverse polish notation calculator, an algebraic (infix) notation
+Reverse Polish Notation calculator, an algebraic (infix) notation
calculator --- later extended to track ``locations'' ---
and a multi-function calculator. All
produce usable, though limited, interactive desk-top calculators.
@@ -1503,7 +1503,7 @@
source file to try them.
@menu
-* RPN Calc:: Reverse polish notation calculator;
+* RPN Calc:: Reverse Polish Notation Calculator;
a first example with no operator precedence.
* Infix Calc:: Infix (algebraic) notation calculator.
Operator precedence is introduced.
@@ -1516,13 +1516,12 @@
@node RPN Calc
@section Reverse Polish Notation Calculator
address@hidden reverse polish notation
address@hidden polish notation calculator
address@hidden Reverse Polish Notation
@cindex @code{rpcalc}
@cindex calculator, simple
-The first example is that of a simple double-precision @dfn{reverse polish
-notation} calculator (a calculator using postfix operators). This example
+The first example is that of a simple double-precision @dfn{Reverse Polish
+Notation} calculator (a calculator using postfix operators). This example
provides a good starting point, since operator precedence is not an issue.
The second example will illustrate how operator precedence is handled.
@@ -1542,12 +1541,12 @@
@node Rpcalc Declarations
@subsection Declarations for @code{rpcalc}
-Here are the C and Bison declarations for the reverse polish notation
+Here are the C and Bison declarations for the Reverse Polish Notation
calculator. As in C, comments are placed between @samp{/address@hidden/}.
@comment file: rpcalc.y
@example
-/* Reverse polish notation calculator. */
+/* Reverse Polish Notation calculator. */
@group
address@hidden
@@ -1598,7 +1597,7 @@
@node Rpcalc Rules
@subsection Grammar Rules for @code{rpcalc}
-Here are the grammar rules for the reverse polish notation calculator.
+Here are the grammar rules for the Reverse Polish Notation calculator.
@comment file: rpcalc.y
@example
@@ -8933,7 +8932,7 @@
Developing a parser can be a challenge, especially if you don't understand
the algorithm (@pxref{Algorithm, ,The Bison Parser Algorithm}). This
-chapter explains how understand and debug a parser.
+chapter explains how to understand and debug a parser.
The first sections focus on the static part of the parser: its structure.
They explain how to generate and read the detailed description of the
@@ -10901,12 +10900,12 @@
@example
[0-9]+ @{
- yylval.ival = text_to_int (yytext);
- return yy::parser::INTEGER;
+ yylval->ival = text_to_int (yytext);
+ return yy::parser::token::INTEGER;
@}
[a-z]+ @{
- yylval.sval = new std::string (yytext);
- return yy::parser::IDENTIFIER;
+ yylval->sval = new std::string (yytext);
+ return yy::parser::token::IDENTIFIER;
@}
@end example
@@ -10915,12 +10914,12 @@
@example
[0-9]+ @{
- yylval.build<int>() = text_to_int (yytext);
- return yy::parser::INTEGER;
+ yylval->build<int> () = text_to_int (yytext);
+ return yy::parser::token::INTEGER;
@}
[a-z]+ @{
- yylval.build<std::string> = yytext;
- return yy::parser::IDENTIFIER;
+ yylval->build<std::string> () = yytext;
+ return yy::parser::token::IDENTIFIER;
@}
@end example
@@ -10929,12 +10928,12 @@
@example
[0-9]+ @{
- yylval.build(text_to_int (yytext));
- return yy::parser::INTEGER;
+ yylval->build (text_to_int (yytext));
+ return yy::parser::token::INTEGER;
@}
[a-z]+ @{
- yylval.build(yytext);
- return yy::parser::IDENTIFIER;
+ yylval->build (yytext);
+ return yy::parser::token::IDENTIFIER;
@}
@end example
@@ -10962,8 +10961,8 @@
So for each token type, Bison generates named constructors as follows.
address@hidden {symbol_type} {} address@hidden (const @var{value_type}&
@var{value}, const location_type& @var{location})
address@hidden {symbol_type} {} address@hidden (const location_type&
@var{location})
address@hidden {symbol_type} {} address@hidden (const @var{value_type}&
@var{value}, const location_type& @var{location})
address@hidden {symbol_type} {} address@hidden (const location_type&
@var{location})
Build a complete terminal symbol for the token type @var{token} (not
including the @code{api.token.prefix}) whose possible semantic value is
@var{value} of adequate @var{value_type}. If location tracking is enabled,
@@ -10983,20 +10982,18 @@
Bison generates the following functions:
@example
-symbol_type make_IDENTIFIER(const std::string& v,
- const location_type& l);
-symbol_type make_INTEGER(const int& v,
- const location_type& loc);
-symbol_type make_COLON(const location_type& loc);
+symbol_type make_IDENTIFIER (const std::string&, const location_type&);
+symbol_type make_INTEGER (const int&, const location_type&);
+symbol_type make_COLON (const location_type&);
@end example
@noindent
which should be used in a Lex-scanner as follows.
@example
-[0-9]+ return yy::parser::make_INTEGER(text_to_int (yytext), loc);
-[a-z]+ return yy::parser::make_IDENTIFIER(yytext, loc);
-":" return yy::parser::make_COLON(loc);
+[0-9]+ return yy::parser::make_INTEGER (text_to_int (yytext), loc);
+[a-z]+ return yy::parser::make_IDENTIFIER (yytext, loc);
+":" return yy::parser::make_COLON (loc);
@end example
Tokens that do not have an identifier are not accessible: you cannot simply
@@ -11177,13 +11174,13 @@
void
calcxx_driver::error (const yy::location& l, const std::string& m)
@{
- std::cerr << l << ": " << m << std::endl;
+ std::cerr << l << ": " << m << '\n';
@}
void
calcxx_driver::error (const std::string& m)
@{
- std::cerr << m << std::endl;
+ std::cerr << m << '\n';
@}
@end example
@@ -11461,13 +11458,13 @@
@comment file: calc++-scanner.ll
@example
-"-" return yy::calcxx_parser::make_MINUS(loc);
-"+" return yy::calcxx_parser::make_PLUS(loc);
-"*" return yy::calcxx_parser::make_STAR(loc);
-"/" return yy::calcxx_parser::make_SLASH(loc);
-"(" return yy::calcxx_parser::make_LPAREN(loc);
-")" return yy::calcxx_parser::make_RPAREN(loc);
-":=" return yy::calcxx_parser::make_ASSIGN(loc);
+"-" return yy::calcxx_parser::make_MINUS (loc);
+"+" return yy::calcxx_parser::make_PLUS (loc);
+"*" return yy::calcxx_parser::make_STAR (loc);
+"/" return yy::calcxx_parser::make_SLASH (loc);
+"(" return yy::calcxx_parser::make_LPAREN (loc);
+")" return yy::calcxx_parser::make_RPAREN (loc);
+":=" return yy::calcxx_parser::make_ASSIGN (loc);
@group
@address@hidden @{
@@ -11475,12 +11472,12 @@
long n = strtol (yytext, NULL, 10);
if (! (INT_MIN <= n && n <= INT_MAX && errno != ERANGE))
driver.error (loc, "integer is out of range");
- return yy::calcxx_parser::make_NUMBER(n, loc);
+ return yy::calcxx_parser::make_NUMBER (n, loc);
@}
@end group
address@hidden@} return yy::calcxx_parser::make_IDENTIFIER(yytext, loc);
address@hidden@} return yy::calcxx_parser::make_IDENTIFIER (yytext, loc);
. driver.error (loc, "invalid character");
-<<EOF>> return yy::calcxx_parser::make_END(loc);
+<<EOF>> return yy::calcxx_parser::make_END (loc);
%%
@end example
@@ -11536,7 +11533,7 @@
else if (argv[i] == std::string ("-s"))
driver.trace_scanning = true;
else if (!driver.parse (argv[i]))
- std::cout << driver.result << std::endl;
+ std::cout << driver.result << '\n';
else
res = 1;
return res;
@@ -12543,7 +12540,7 @@
subdirectory, it indicates that your system's internationalization
support is lacking. You can re-configure Bison with
@option{--disable-nls} to turn off this support, or you can install GNU
-gettext from @url{ftp://ftp.gnu.org/gnu/gettext/} and re-configure
+gettext from @url{https://ftp.gnu.org/gnu/gettext/} and re-configure
Bison. See the file @file{ABOUT-NLS} for more information.
@@ -12572,7 +12569,7 @@
@end quotation
Before you send a bug report, make sure you are using the latest
-version. Check @url{ftp://ftp.gnu.org/pub/gnu/bison/} or one of its
+version. Check @url{https://ftp.gnu.org/pub/gnu/bison/} or one of its
mirrors. Be sure to include the version number in your bug report. If
the bug is present in the latest version but not in a previous version,
try to determine the most recent version which did not contain the bug.
@@ -13348,7 +13345,7 @@
number of times in parallel, without interference between the various
invocations. @xref{Pure Decl, ,A Pure (Reentrant) Parser}.
address@hidden Reverse polish notation
address@hidden Reverse Polish Notation
A language in which all operators are postfix operators.
@item Right recursion
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//gdBue9_bench.pl.in
2018-06-17 19:12:31.000000000 +0200
+++ etc/bench.pl.in 2018-06-17 18:43:59.000000000 +0200
@@ -738,7 +738,7 @@
void
yy::parser::error(const yy::parser::location_type& loc, const std::string& msg)
{
- std::cerr << loc << ": " << msg << std::endl;
+ std::cerr << loc << ": " << msg << '\n';
}
int main(int argc, char *argv[])
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//m8Oj88_variant.yy
2018-06-17 19:12:31.000000000 +0200
+++ examples/variant.yy 2018-06-17 18:43:59.000000000 +0200
@@ -25,9 +25,9 @@
%code requires // *.hh
{
-#include <list>
#include <string>
-typedef std::list<std::string> strings_type;
+#include <vector>
+typedef std::vector<std::string> strings_type;
}
%code // *.cc
@@ -43,14 +43,14 @@
static parser::symbol_type yylex ();
}
- // Printing a list of strings.
- // Koening look up will look into std, since that's an std::list.
+ // Printing a vector of strings.
+ // Koening look up will look into std, since that's an std::vector.
namespace std
{
std::ostream&
operator<< (std::ostream& o, const strings_type& ss)
{
- o << "(" << &ss << ") {";
+ o << '(' << &ss << ") {";
const char *sep = "";
for (strings_type::const_iterator i = ss.begin(), end = ss.end();
i != end; ++i)
@@ -58,13 +58,12 @@
o << sep << *i;
sep = ", ";
}
- return o << "}";
+ return o << '}';
}
}
// Conversion to string.
template <typename T>
- inline
std::string
string_cast (const T& t)
{
@@ -80,12 +79,12 @@
%token END_OF_FILE 0;
%type <::std::string> item;
-%type <::std::list<std::string>> list;
+%type <::std::vector<std::string>> list;
%%
result:
- list { std::cout << $1 << std::endl; }
+ list { std::cout << $1 << '\n'; }
;
list:
@@ -135,7 +134,7 @@
void
parser::error (const parser::location_type& loc, const std::string& msg)
{
- std::cerr << loc << ": " << msg << std::endl;
+ std::cerr << loc << ": " << msg << '\n';
}
}
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//meSngc_gnulib
2018-06-17 19:12:31.000000000 +0200
+++ /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//ekXzec_gnulib
2018-06-17 19:12:31.000000000 +0200
@@ -1 +1 @@
-Subproject commit ea6cb044ca0ab57045900a494a0e4ae39ed5372c
+Subproject commit 0d10473be6fb40c42c0d10c3417a818b0ebfcce1
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//6vblpa_.gitignore
2018-06-17 19:12:31.000000000 +0200
+++ lib/.gitignore 2018-06-17 18:43:59.000000000 +0200
@@ -4,8 +4,7 @@
/*~
/.deps
/.dirstamp
-/Makefile
-/Makefile.in
+/_Noreturn.h
/alignof.h
/alloca.h
/alloca.in.h
@@ -15,7 +14,9 @@
/asnprintf.c
/basename-lgpl.c
/basename.c
+/binary-io.c
/binary-io.h
+/bitrotate.c
/bitrotate.h
/c++defs.h
/c-ctype.c
@@ -28,8 +29,6 @@
/charset.alias
/cloexec.c
/cloexec.h
-/close-hook.c
-/close-hook.h
/close-stream.c
/close-stream.h
/close.c
@@ -56,7 +55,6 @@
/exitfail.h
/fatal-signal.c
/fatal-signal.h
-/fclose.c
/fcntl.c
/fcntl.h
/fcntl.in.h
@@ -81,19 +79,27 @@
/fseterr.h
/fstat.c
/getdtablesize.c
+/getopt-cdefs.in.h
+/getopt-core.h
+/getopt-ext.h
+/getopt-pfx-core.h
+/getopt-pfx-ext.h
/getopt.c
/getopt.h
/getopt.in.h
/getopt1.c
/getopt_int.h
+/getprogname.c
+/getprogname.h
/gettext.h
/gnulib.mk
+/hard-locale.c
+/hard-locale.h
/hash.c
/hash.h
/intprops.h
/inttypes.h
/inttypes.in.h
-/ioctl.c
/isnan.c
/isnand-nolibm.h
/isnand.c
@@ -103,9 +109,15 @@
/isnanl.c
/itold.c
/ldexpl.c
+/limits.h
+/limits.in.h
/localcharset.c
/localcharset.h
+/lstat.c
/malloc.c
+/malloca.c
+/malloca.h
+/math.c
/math.h
/math.in.h
/mbrtowc.c
@@ -114,12 +126,11 @@
/mbswidth.h
/memchr.c
/memchr.valgrind
+/minmax.h
/msvc-inval.c
/msvc-inval.h
/msvc-nothrow.c
/msvc-nothrow.h
-/nonblocking.c
-/nonblocking.h
/obstack.c
/obstack.h
/obstack_printf.c
@@ -140,7 +151,6 @@
/printf.c
/progname.c
/progname.h
-/quote.c
/quote.h
/quotearg.c
/quotearg.h
@@ -154,6 +164,7 @@
/ref-del.sin
/sched.h
/sched.in.h
+/sig-handler.c
/sig-handler.h
/sigaction.c
/signal.h
@@ -182,6 +193,8 @@
/spawnp.c
/sprintf.c
/stamp-h1
+/stat-w32.c
+/stat-w32.h
/stat.c
/stdbool.h
/stdbool.in.h
@@ -192,7 +205,6 @@
/stdio--.h
/stdio-impl.h
/stdio-safer.h
-/stdio-write.c
/stdio.h
/stdio.in.h
/stdlib.h
@@ -213,20 +225,17 @@
/strnlen.c
/strverscmp.c
/sys
-/sys_ioctl.h
/sys_ioctl.in.h
-/sys_socket.h
/sys_socket.in.h
-/sys_stat.h
/sys_stat.in.h
/sys_types.in.h
-/sys_wait.h
/sys_wait.in.h
/sysexits.in.h
/time.h
/time.in.h
/unistd--.h
/unistd-safer.h
+/unistd.c
/unistd.h
/unistd.in.h
/unitypes.h
@@ -234,6 +243,7 @@
/uniwidth
/uniwidth.h
/uniwidth.in.h
+/unlink.c
/unlocked-io.h
/unsetenv.c
/vasnprintf.c
@@ -242,7 +252,6 @@
/vfprintf.c
/vsnprintf.c
/vsprintf.c
-/w32sock.h
/w32spawn.h
/wait-process.c
/wait-process.h
@@ -250,6 +259,7 @@
/warn-on-use.h
/wchar.h
/wchar.in.h
+/wctype-h.c
/wctype.h
/wctype.in.h
/wcwidth.c
@@ -260,17 +270,9 @@
/xmalloc.c
/xmemdup0.c
/xmemdup0.h
+/xsize.c
/xsize.h
/xstrndup.c
/xstrndup.h
-/binary-io.c
-/xsize.c
-/bitrotate.c
-/math.c
-/sig-handler.c
-/unistd.c
-/wctype-h.c
-/lstat.c
-/unlink.c
-/gettimeofday.c
-/sys_time.in.h
+/stat-time.c
+/stat-time.h
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//rVgLRa_.gitignore
2018-06-17 19:12:32.000000000 +0200
+++ m4/.gitignore 2018-06-17 18:43:59.000000000 +0200
@@ -1,10 +1,10 @@
+/*~
/00gnulib.m4
+/absolute-header.m4
/alloca.m4
-/argmatch.m4
/asm-underscore.m4
/assert.m4
/calloc.m4
-/cloexec.m4
/close-stream.m4
/close.m4
/closeout.m4
@@ -12,9 +12,9 @@
/config-h.m4
/configmake.m4
/dirname.m4
-/dos.m4
/double-slash-root.m4
/dup2.m4
+/eealloc.m4
/environ.m4
/errno_h.m4
/error.m4
@@ -22,8 +22,8 @@
/exponentf.m4
/exponentl.m4
/extensions.m4
+/extern-inline.m4
/fatal-signal.m4
-/fclose.m4
/fcntl-o.m4
/fcntl.m4
/fcntl_h.m4
@@ -38,6 +38,7 @@
/fstat.m4
/getdtablesize.m4
/getopt.m4
+/getprogname.m4
/gettext.m4
/glibc2.m4
/glibc21.m4
@@ -45,12 +46,11 @@
/gnulib-common.m4
/gnulib-comp.m4
/gnulib-tool.m4
-/hash.m4
+/hard-locale.m4
/iconv.m4
/include_next.m4
/intdiv0.m4
/intl.m4
-/intl.m4~
/intldir.m4
/intlmacosx.m4
/intmax.m4
@@ -58,7 +58,6 @@
/inttypes-pri.m4
/inttypes.m4
/inttypes_h.m4
-/ioctl.m4
/isnan.m4
/isnand.m4
/isnanf.m4
@@ -73,19 +72,23 @@
/lib-link.m4
/lib-prefix.m4
/libunistring-base.m4
+/limits-h.m4
/localcharset.m4
/locale-fr.m4
/locale-ja.m4
/locale-zh.m4
/lock.m4
/longlong.m4
+/lstat.m4
/malloc.m4
+/malloca.m4
/math_h.m4
/mbrtowc.m4
/mbsinit.m4
/mbstate_t.m4
/mbswidth.m4
/memchr.m4
+/minmax.m4
/mmap-anon.m4
/mode_t.m4
/msvc-inval.m4
@@ -93,13 +96,16 @@
/multiarch.m4
/nls.m4
/nocrash.m4
+/non-recursive-gnulib-prefix-hack.m4
+/obstack-printf.m4
+/obstack.m4
/off_t.m4
+/open-cloexec.m4
/open.m4
/pathmax.m4
/perror.m4
/pipe2.m4
/po.m4
-/po.m4~
/posix_spawn.m4
/printf-frexp.m4
/printf-frexpl.m4
@@ -107,6 +113,7 @@
/printf-posix.m4
/printf.m4
/progtest.m4
+/pthread_rwlock_rdlock.m4
/quote.m4
/quotearg.m4
/raise.m4
@@ -122,8 +129,6 @@
/size_max.m4
/snprintf-posix.m4
/snprintf.m4
-/socklen.m4
-/sockpfaf.m4
/spawn-pipe.m4
/spawn_h.m4
/sprintf-posix.m4
@@ -133,7 +138,6 @@
/stddef_h.m4
/stdint.m4
/stdint_h.m4
-/stdio-safer.m4
/stdio_h.m4
/stdlib_h.m4
/stpcpy.m4
@@ -145,17 +149,16 @@
/strndup.m4
/strnlen.m4
/strverscmp.m4
-/sys_ioctl_h.m4
/sys_socket_h.m4
/sys_stat_h.m4
/sys_types_h.m4
/sys_wait_h.m4
-/sysexits.m4
/threadlib.m4
/time_h.m4
/uintmax_t.m4
/unistd-safer.m4
/unistd_h.m4
+/unlink.m4
/unlocked-io.m4
/vasnprintf.m4
/vfprintf-posix.m4
@@ -175,12 +178,5 @@
/xalloc.m4
/xsize.m4
/xstrndup.m4
-/obstack-printf.m4
-/extern-inline.m4
-/non-recursive-gnulib-prefix-hack.m4
-/absolute-header.m4
-/lstat.m4
-/unlink.m4
-/gettimeofday.m4
-/obstack.m4
-/sys_time_h.m4
+/host-cpu-c-abi.m4
+/stat-time.m4
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//t2hUY9_.gitignore
2018-06-17 19:12:32.000000000 +0200
+++ po/.gitignore 2018-06-17 18:43:59.000000000 +0200
@@ -1,12 +1,11 @@
+/*~
/*.gmo
/*.po
-/*.po~
/.reference
/LINGUAS
/Makefile
/Makefile.in
/Makefile.in.in
-/Makefile.in.in~
/Makevars
/Makevars.template
/POTFILES
@@ -15,7 +14,6 @@
/boldquot.sed
/address@hidden
/address@hidden
-/insert-header.sed
/insert-header.sin
/quot.sed
/remove-potcdate.sed
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//lUNdWb_.gitignore
2018-06-17 19:12:32.000000000 +0200
+++ runtime-po/.gitignore 2018-06-17 18:43:59.000000000 +0200
@@ -1,12 +1,11 @@
+/*~
/*.gmo
/*.po
-/*.po~
/.reference
/LINGUAS
/Makefile
/Makefile.in
/Makefile.in.in
-/Makefile.in.in~
/Makevars
/Makevars.template
/POTFILES
@@ -15,7 +14,6 @@
/boldquot.sed
/address@hidden
/address@hidden
-/insert-header.sed
/insert-header.sin
/quot.sed
/remove-potcdate.sed
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//cALmZb_getargs.c
2018-06-17 19:12:33.000000000 +0200
+++ src/getargs.c 2018-06-17 18:43:59.000000000 +0200
@@ -64,7 +64,7 @@
/** Decode an option's key.
*
- * \param option option being decoded.
+ * \param opt option being decoded.
* \param keys array of valid subarguments.
* \param values array of corresponding (int) values.
* \param all the all value.
@@ -79,11 +79,11 @@
* flags from \c all. Thus no-none = all and no-all = none.
*/
static void
-flag_argmatch (const char *option,
- const char * const keys[], const int values[],
+flag_argmatch (const char *opt,
+ const char *const keys[], const int values[],
int all, int *flags, char *arg, size_t no)
{
- int value = XARGMATCH (option, arg + no, keys, values);
+ int value = XARGMATCH (opt, arg + no, keys, values);
/* -rnone == -rno-all, and -rno-none == -rall. */
if (!value)
@@ -100,7 +100,7 @@
/** Decode an option's set of keys.
*
- * \param option option being decoded.
+ * \param opt option being decoded (e.g., --report).
* \param keys array of valid subarguments.
* \param values array of corresponding (int) values.
* \param all the all value.
@@ -109,7 +109,7 @@
* If 0, then activate all the flags.
*/
static void
-flags_argmatch (const char *option,
+flags_argmatch (const char *opt,
const char * const keys[], const int values[],
int all, int *flags, char *args)
{
@@ -117,7 +117,7 @@
for (args = strtok (args, ","); args; args = strtok (NULL, ","))
{
size_t no = STRPREFIX_LIT ("no-", args) ? 3 : 0;
- flag_argmatch (option, keys,
+ flag_argmatch (opt, keys,
values, all, flags, args, no);
}
else
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//GnPJCa_output.c
2018-06-17 19:12:33.000000000 +0200
+++ src/output.c 2018-06-17 18:43:59.000000000 +0200
@@ -358,8 +358,8 @@
for (r = 0; r < nrules; ++r)
if (rules[r].action)
{
- fprintf (out, "b4_%scase(%d, [b4_syncline(%d, ",
- rules[r].is_predicate ? "predicate_" : "",
+ fprintf (out, "%s(%d, [b4_syncline(%d, ",
+ rules[r].is_predicate ? "b4_predicate_case" : "b4_case",
r + 1, rules[r].action_location.start.line);
string_output (out, rules[r].action_location.start.file);
fprintf (out, ")\n[ %s]])\n\n", rules[r].action);
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//Q4oS08_parse-gram.y
2018-06-17 19:12:33.000000000 +0200
+++ src/parse-gram.y 2018-06-17 18:43:59.000000000 +0200
@@ -780,7 +780,7 @@
static void
add_param (param_type type, char *decl, location loc)
{
- static char const alphanum[26 + 26 + 1 + 10] =
+ static char const alphanum[26 + 26 + 1 + 10 + 1] =
"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"_"
@@ -792,18 +792,18 @@
/* Stop on last actual character. */
for (p = decl; p[1]; p++)
if ((p == decl
- || ! memchr (alphanum, p[-1], sizeof alphanum))
- && memchr (alphanum, p[0], sizeof alphanum - 10))
+ || ! memchr (alphanum, p[-1], sizeof alphanum - 1))
+ && memchr (alphanum, p[0], sizeof alphanum - 10 - 1))
name_start = p;
/* Strip the surrounding '{' and '}', and any blanks just inside
the braces. */
--p;
- while (c_isspace ((unsigned char) *p))
+ while (c_isspace ((unsigned char) *p))
--p;
p[1] = '\0';
++decl;
- while (c_isspace ((unsigned char) *decl))
+ while (c_isspace ((unsigned char) *decl))
++decl;
}
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//xRSGOb_autoconf
2018-06-17 19:12:34.000000000 +0200
+++ /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//RHUuNb_autoconf
2018-06-17 19:12:34.000000000 +0200
@@ -1 +1 @@
-Subproject commit 9e087dd343b67ac58a7f54e08335ac62fc33ed53
+Subproject commit 487d6aaaa4fe45001d30c439ea6240fc74f1b5d7
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//roJ20a_actions.at
2018-06-17 19:12:34.000000000 +0200
+++ tests/actions.at 2018-06-17 18:43:59.000000000 +0200
@@ -203,7 +203,7 @@
]AT_YYLEX_DECLARE[
}
%%
-exp: { ]AT_SKEL_CC_IF([[std::cerr << @$ << std::endl]],
+exp: { ]AT_SKEL_CC_IF([[std::cerr << @$ << '\n']],
[[LOCATION_PRINT(stderr, @$); fputc ('\n', stderr)]])[; }
%%
]AT_YYERROR_DEFINE[
@@ -475,7 +475,7 @@
/* Display the symbol type Symbol. */
#define V(Symbol, Value, Location, Sep) \
- fprintf (stderr, #Symbol " (address@hidden)" Sep, Value, RANGE(Location))
+ fprintf (stderr, #Symbol " (address@hidden)%s", Value, RANGE(Location), Sep)
}
$5
@@ -490,15 +490,17 @@
]AT_LALR1_CC_IF([], [AT_YYERROR_DECLARE])
[}
-]m4_ifval([$6], [%type <ival> '(' 'x' 'y' ')' ';' thing line input END])[
+]m4_ifval([$6],
+[%type <ival> '(' 'x' 'y' ')' ';' thing line input
+ '!' raise check-spontaneous-errors END])[
/* FIXME: This %printer isn't actually tested. */
%printer
{
- ]AT_LALR1_CC_IF([debug_stream () << $$;],
- [fprintf (yyoutput, "%d", $$)])[;
+ ]AT_LALR1_CC_IF([yyo << $$;],
+ [fprintf (yyo, "%d", $$)])[;
}
- input line thing 'x' 'y'
+ '(' 'x' 'y' ')' ';' thing line input '!' raise check-spontaneous-errors END
%destructor
{ fprintf (stderr, "Freeing nterm input (address@hidden)\n", $$, RANGE
(@$)); }
@@ -513,6 +515,14 @@
thing
%destructor
+ { fprintf (stderr, "Freeing raise thing (address@hidden)\n", $$, RANGE
(@$)); }
+ raise
+
+%destructor
+ { fprintf (stderr, "Freeing check-spontaneous-errors thing
(address@hidden)\n", $$, RANGE (@$)); }
+ check-spontaneous-errors
+
+%destructor
{ fprintf (stderr, "Freeing token 'x' (address@hidden)\n", $$, RANGE (@$)); }
'x'
@@ -534,7 +544,7 @@
*/
input:
- /* Nothing. */
+ %empty
{
$$ = 0;
V(input, $$, @$, ": /* Nothing */\n");
@@ -547,6 +557,38 @@
V(line, $1, @1, " ");
V(input, $2, @2, "\n");
}
+| '!' check-spontaneous-errors
+ {
+ $$ = $2;
+ }
+;
+
+check-spontaneous-errors:
+ raise { abort(); $$ = $1; }
+| '(' raise ')' { abort(); $$ = $2; }
+| error
+ {
+ $$ = 5;
+ V(check-spontaneous-errors, $$, @$, ": ");
+ fprintf (stderr, "error (@%d-%d)\n", RANGE(@1));
+ }
+;
+
+raise:
+ %empty
+ {
+ $$ = 4;
+ V(raise, $$, @$, ": %empty\n");
+ YYERROR;
+ }
+| '!' '!'
+ {
+ $$ = 5;
+ V(raise, $$, @$, ": ");
+ V(!, $1, @2, " ");
+ V(!, $2, @2, "\n");
+ YYERROR;
+ }
;
line:
@@ -668,6 +710,38 @@
Successful parse.
]])
+# Check the location of empty reductions raising an error
+# -------------------------------------------------------
+# Here, the error is after token "address@hidden", so the error is raised from
+# @9-9, and the error recovery detects that it starts from @9-9 and
+# ends where starts the next token: address@hidden
+#
+# So error recovery reports address@hidden
+AT_PARSER_CHECK([./input '!'], 0, [],
+[[sending: '!' (address@hidden)
+sending: END (address@hidden)
+raise (address@hidden): %empty
+check-spontaneous-errors (address@hidden): error (@9-19)
+Freeing token END (address@hidden)
+Freeing nterm input (address@hidden)
+Successful parse.
+]])
+
+# Check the location of not empty reductions raising an error
+# -----------------------------------------------------------
+# This time the error is raised from a rule with 2 rhs symbols: @10-29.
+# It is recovered @10-29.
+AT_PARSER_CHECK([[./input '!!!']], 0, [],
+[[sending: '!' (address@hidden)
+sending: '!' (address@hidden)
+sending: '!' (address@hidden)
+raise (address@hidden): ! (address@hidden) ! (address@hidden)
+check-spontaneous-errors (address@hidden): error (@10-29)
+sending: END (address@hidden)
+Freeing token END (address@hidden)
+Freeing nterm input (address@hidden)
+Successful parse.
+]])
# Check locations in error recovery
# ---------------------------------
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//niZBG9_atlocal.in
2018-06-17 19:12:34.000000000 +0200
+++ tests/atlocal.in 2018-06-17 18:43:59.000000000 +0200
@@ -16,8 +16,8 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# We need 'config.h'.
-CPPFLAGS="-I$abs_top_builddir/lib @CPPFLAGS@"
+# We need 'config.h' (builddir/lib), and the gnulib headers (srcdir/lib).
+CPPFLAGS="-I$abs_top_srcdir/lib -I$abs_top_builddir/lib @CPPFLAGS@"
# Don't just check if $POSIXLY_CORRECT is set, as Bash, when launched
# as /bin/sh, sets the shell variable POSIXLY_CORRECT to y, but not
@@ -69,7 +69,7 @@
int main ()
{
- std::cout << "Works" << std::endl;
+ std::cout << "Works\n";
}
EOF
$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS $LIBS -o conftest conftest.cc
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//nIgUYa_c++.at
2018-06-17 19:12:34.000000000 +0200
+++ tests/c++.at 2018-06-17 18:43:59.000000000 +0200
@@ -49,7 +50,7 @@
os << in;
if (os.str () != s)
{
- std::cerr << "fail: " << os.str () << ", expected: " << s << std::endl;
+ std::cerr << "fail: " << os.str () << ", expected: " << s << '\n';
return false;
}
return true;
@@ -96,7 +97,7 @@
AT_KEYWORDS([variant])
AT_BISON_OPTION_PUSHDEFS([%skeleton "lalr1.cc" %debug $1])
-# Store strings and integers in a list of strings.
+# Store strings and integers in a vector of strings.
AT_DATA_GRAMMAR([list.y],
[[%skeleton "lalr1.cc"
%define api.value.type variant
@@ -114,20 +115,20 @@
}
%token <int> INT "int"
-%type < std::list<int> > exp
+%type < std::vector<int> > exp
%printer { yyo << $$; } <int>
%printer
{
- for (std::list<int>::const_iterator i = $$.begin (); i != $$.end (); ++i)
+ for (std::vector<int>::const_iterator i = $$.begin (); i != $$.end (); ++i)
{
if (i != $$.begin ())
yyo << ", ";
yyo << *i;
}
- } < std::list<int> >
+ } < std::vector<int> >
-%code requires { #include <list> }
+%code requires { #include <vector> }
%code { int yylex (yy::parser::semantic_type* yylval); }
%%
@@ -140,13 +141,13 @@
{
{
yy::parser::symbol_type s = yy::parser::make_INT(12);
- std::cerr << s.value.as<int>() << std::endl;
+ std::cerr << s.value.as<int>() << '\n';
}
{
yy::parser::symbol_type s = yy::parser::make_INT(123);
yy::parser::stack_symbol_type ss(1, s);
- std::cerr << ss.value.as<int>() << std::endl;
+ std::cerr << ss.value.as<int>() << '\n';
}
{
@@ -185,7 +186,7 @@
[AT_SETUP([Variants $1])
AT_BISON_OPTION_PUSHDEFS([%debug $1])
-# Store strings and integers in a list of strings.
+# Store strings and integers in a vector of strings.
AT_DATA_GRAMMAR([list.y],
[[%debug
%define api.value.type variant
@@ -194,29 +195,25 @@
%code requires // code for the .hh file
{
-#include <list>
+#include <vector>
#include <string>
-typedef std::list<std::string> strings_type;
+typedef std::vector<std::string> strings_type;
}
-%code // code for the .cc file
+%code top // code for the .cc file.
{
#include <cstdlib> // abort, getenv
#include <iostream>
+#include <vector>
#include <sstream>
+#include <string>
- namespace yy
- {
- static]AT_TOKEN_CTOR_IF([[
- parser::symbol_type yylex ()]], [[
- parser::token_type yylex (parser::semantic_type* yylval]AT_LOCATION_IF([,
- parser::location_type* yylloc])[)]])[;
- }
- // Printing a list of strings (for %printer).
- // Koening look up will look into std, since that's an std::list.
- namespace std
+ typedef std::vector<std::string> strings_type;
+
+ namespace yy
{
+ // Must be available early, as is used in %destructor.
std::ostream&
operator<<(std::ostream& o, const strings_type& s)
{
@@ -230,16 +227,27 @@
return o << ')';
}
}
+}
- // Conversion to string.
- template <typename T>
- inline
- std::string
- to_string (const T& t)
+%code // code for the .cc file.
+{
+ namespace yy
{
- std::ostringstream o;
- o << t;
- return o.str ();
+ static]AT_TOKEN_CTOR_IF([[
+ parser::symbol_type yylex ()]], [[
+ parser::token_type yylex (parser::semantic_type* yylval]AT_LOCATION_IF([,
+ parser::location_type* yylloc])[)]])[;
+
+ // Conversion to string.
+ template <typename T>
+ inline
+ std::string
+ to_string (const T& t)
+ {
+ std::ostringstream o;
+ o << t;
+ return o.str ();
+ }
}
}
@@ -252,16 +260,16 @@
// Using the template type to exercize its parsing.
// Starting with :: to ensure we don't output "<::" which starts by the
// digraph for the left square bracket.
-%type <::std::list<std::string>> list;
+%type <::std::vector<std::string>> list;
%printer { yyo << $$; }
- <int> <::std::string> <::std::list<std::string>>;
+ <int> <::std::string> <::std::vector<std::string>>;
%destructor { std::cerr << "Destroy: " << $$ << '\n'; } <*>;
%destructor { std::cerr << "Destroy: \"" << $$ << "\"\n"; } <::std::string>;
%%
result:
- list { std::cout << $][1 << std::endl; }
+ list { std::cout << $][1 << '\n'; }
;
list:
@@ -497,7 +505,7 @@
]$1[::parser::error (const ]$1[::parser::location_type &loc,
const std::string &msg)
{
- std::cerr << "At " << loc << ": " << msg << std::endl;
+ std::cerr << "At " << loc << ": " << msg << '\n';
}
]AT_MAIN_DEFINE[
@@ -565,7 +573,7 @@
%nonassoc 'a' ;
%destructor {
- std::cerr << "Discarding 'a'." << std::endl;
+ std::cerr << "Discarding 'a'.\n";
} 'a'
%%
@@ -574,7 +582,7 @@
error-reduce:
'a' 'a' consistent-error 'a' { USE (($1, $2, $4)); }
-| 'a' error { std::cerr << "Reducing 'a'." << std::endl; USE ($1); }
+| 'a' error { std::cerr << "Reducing 'a'.\n"; USE ($1); }
;
consistent-error:
@@ -598,7 +606,7 @@
void
yy::parser::error (const std::string &m)
{
- std::cerr << m << std::endl;
+ std::cerr << m << '\n';
}
]AT_MAIN_DEFINE[
@@ -626,6 +634,7 @@
AT_DATA_GRAMMAR([[input.y]],
[[%skeleton "lalr1.cc"
+%defines
%code
{
@@ -644,7 +653,7 @@
;
thing:
- error { std::cerr << "caught error" << std::endl; }
+ error { std::cerr << "caught error\n"; }
| item
;
@@ -657,6 +666,17 @@
%%
+void
+yy::parser::error (const std::string &m)
+{
+ std::cerr << "error: " << m << '\n';
+}
+]AT_MAIN_DEFINE[
+]])
+
+AT_DATA_SOURCE([input-scan.cc],
+[[#include "input.hh"
+
int
yylex (yy::parser::semantic_type *)
{
@@ -670,16 +690,9 @@
return res;
}
}
-
-void
-yy::parser::error (const std::string &m)
-{
- std::cerr << "error: " << m << std::endl;
-}
-]AT_MAIN_DEFINE[
]])
-AT_FULL_COMPILE([[input]])
+AT_FULL_COMPILE([[input]], [[scan]])
AT_PARSER_CHECK([[./input]], [[0]], [[]],
[[error: invalid expression
@@ -757,6 +770,12 @@
Object::instances.erase (i);
}
+ Object& operator= (const Object& that)
+ {
+ val = that.val;
+ return *this;
+ }
+
Object& operator= (char v)
{
val = v;
@@ -790,7 +809,7 @@
std::cerr << sep << *i;
sep = ", ";
}
- std::cerr << " }" << std::endl;
+ std::cerr << " }\n";
}
}
};
@@ -922,11 +941,11 @@
}
catch (const std::exception& e)
{
- std::cerr << "exception caught: " << e.what () << std::endl;
+ std::cerr << "exception caught: " << e.what () << '\n';
}
catch (...)
{
- std::cerr << "unknown exception caught" << std::endl;
+ std::cerr << "unknown exception caught\n";
}
Object::log (YY_NULLPTR, "end");
assert (Object::empty());
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//TgSK2a_glr-regression.at
2018-06-17 19:12:34.000000000 +0200
+++ tests/glr-regression.at 2018-06-17 18:43:59.000000000 +0200
@@ -1759,23 +1760,55 @@
AT_SETUP([Predicates])
-# FIXME: We need genuine test cases with uses of %?.
-
AT_DATA_GRAMMAR([input.y],
[[%glr-parser
+%error-verbose
%expect-rr 1
+%code requires
+{
+ #include <assert.h>
+ #include <stdbool.h>
+ bool new_syntax = false;
+ const char *input = YY_NULLPTR;
+ ]AT_YYERROR_DECLARE[
+ ]AT_YYLEX_DECLARE[
+}
%%
-// Exercise "%?{...}" and "%? {...}".
widget:
- %? {new_syntax} "widget" id new_args { $$ = f($3, $4); }
-| %?{!new_syntax} "widget" id old_args { $$ = f($3, $4); }
+ %? {new_syntax} 'w' id new_args { printf("new"); }
+| %?{!new_syntax} 'w' id old_args { printf("old"); }
;
-id:;
-new_args:;
-old_args:;
+id: 'i';
+new_args: 'n';
+old_args: 'o';
%%
+]AT_YYERROR_DEFINE[
+
+int
+yylex (void)
+{
+ return *input++;
+}
+
+int
+main (int argc, const char* argv[])
+{
+ assert (argc == 2); (void) argc;
+ // First char decides whether new, or old syntax.
+ // Then the input.
+ new_syntax = argv[1][0] == 'N';
+ input = argv[1] + 1;
+ return yyparse ();
+}
]])
-AT_BISON_CHECK([[input.y]])
+AT_BISON_CHECK([[-o input.c input.y]])
+AT_COMPILE([input])
+AT_PARSER_CHECK([[./input Nwin]], [0], [new])
+AT_PARSER_CHECK([[./input Owin]], [1], [], [[syntax error, unexpected 'n',
expecting 'o'
+]])
+AT_PARSER_CHECK([[./input Owio]], [0], [old])
+AT_PARSER_CHECK([[./input Nwio]], [1], [], [[syntax error, unexpected 'o',
expecting 'n'
+]])
AT_CLEANUP
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//nCrjs9_headers.at
2018-06-17 19:12:34.000000000 +0200
+++ tests/headers.at 2018-06-17 18:43:59.000000000 +0200
@@ -181,7 +181,7 @@
do { \
int res = S; \
if (res) \
- std::cerr << #S": " << res << std::endl; \
+ std::cerr << #S": " << res << '\n'; \
} while (false)
int
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//XIFdW8_javapush.at
2018-06-17 19:12:34.000000000 +0200
+++ tests/javapush.at 2018-06-17 18:43:59.000000000 +0200
@@ -241,10 +241,13 @@
static StringReader
getinput(String filename) throws IOException
{
- StringBuilder buf = new StringBuilder();
+ // Yes, there are better alternatives to StringBuffer. But we
+ // don't really care about performances here, while portability
+ // to older Java matters.
+ StringBuffer buf = new StringBuffer();
FileReader file = new FileReader(filename);
int c;
- while ((c=file.read()) > 0)
+ while (0 < (c = file.read()))
buf.append((char)c);
file.close();
return new StringReader(buf.toString());
@@ -302,6 +305,13 @@
;
])
+
+
+## ------------------------------------- ##
+## Calc parser with api.push-pull both. ##
+## ------------------------------------- ##
+
+
# Test that the states transitioned by the push parser are the
# same as for the pull parser. This test is assumed to work
# if it produces the same partial trace of stack states as is
@@ -577,8 +587,9 @@
]])
AT_BISON_CHECK([PUSHPULLFLAG [-o Calc.java Calc.y]])
+
AT_JAVA_COMPILE([[Calc.java]])
-#Verify that this is a push parser.
+# Verify that this is a push parser.
AT_CHECK_JAVA_GREP([[Calc.java]],
[[.*public void push_parse_initialize().*]])
# Capture stderr output for comparison purposes.
@@ -593,6 +604,13 @@
AT_BISON_OPTION_POPDEFS
AT_CLEANUP
+
+
+## ---------------------------------------------------------------- ##
+## Calc parser with %locations %code lexer and api.push-pull both. ##
+## ---------------------------------------------------------------- ##
+
+
# This test looks for location reporting by looking
# at the lexer output with locations enabled.
# It defines a lexer that reports location info.
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//bQTiXb_local.at
2018-06-17 19:12:34.000000000 +0200
+++ tests/local.at 2018-06-17 18:43:59.000000000 +0200
@@ -539,7 +539,7 @@
void
]AT_NAME_PREFIX[::parser::error (]AT_LOCATION_IF([[const location_type& l,
]])[const std::string& m)
{
- std::cerr << ]AT_LOCATION_IF([l << ": " << ])[m << std::endl;
+ std::cerr << ]AT_LOCATION_IF([l << ": " << ])[m << '\n';
}]])
@@ -892,7 +892,7 @@
}
catch (...)
{
- std::cerr << "Inner caught" << std::endl;
+ std::cerr << "Inner caught\n";
throw;
}
}
@@ -905,7 +905,7 @@
}
catch (...)
{
- std::cerr << "Outer caught" << std::endl;
+ std::cerr << "Outer caught\n";
return 0;
}
return 1;
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//N17Z8a_local.mk
2018-06-17 19:12:34.000000000 +0200
+++ tests/local.mk 2018-06-17 18:43:59.000000000 +0200
@@ -108,11 +108,13 @@
$(RUN_TESTSUITE) POSIXLY_CORRECT=1 _POSIX2_VERSION=200112
.PHONY: maintainer-check-valgrind
+VALGRIND_OPTS = --leak-check=full --show-reachable=yes --gen-suppressions=all \
+ $(VALGRIND_OPTS_SUPPRESSION)
maintainer-check-valgrind: $(RUN_TESTSUITE_deps)
- test -z '$(VALGRIND)' || \
+ test 'x$(VALGRIND)' != x || \
$(RUN_TESTSUITE) \
- PREBISON='$(VALGRIND_PREBISON)' PREPARSER='$(VALGRIND) -q' \
- VALGRIND_OPTS='--leak-check=full --show-reachable=yes'
+ PREBISON='$(VALGRIND) -q' PREPARSER='$(VALGRIND) -q' \
+ VALGRIND_OPTS="$(VALGRIND_OPTS)"
.PHONY: maintainer-check
maintainer-check: maintainer-check-posix maintainer-check-valgrind
maintainer-check-g++
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//iMtN8a_synclines.at
2018-06-17 19:12:35.000000000 +0200
+++ tests/synclines.at 2018-06-17 18:43:59.000000000 +0200
@@ -81,7 +81,15 @@
#
# "input.yy", line 80.21: 1540-0218 (S) The call does not match any
parameter list for "operator<<".
# "/usr/vacpp/include/iosfwd", line 32.6: 1506-205 (S) #error This file to
be used only with IBM VisualAge C++ v4 and later compilers
-
+#
+# Newer GCCs go further and if the function is declared static, complain
+# that it's not used.
+#
+# GCC 7 also underlines the error.
+#
+# syncline.c:4:2: error: #error "4"
+# #error "4"
+# ^~~~~
AT_CHECK([[$PERL -p -0777 - stderr <<\EOF
# 1. Remove useless lines.
@@ -91,8 +99,8 @@
s/^clang: warning: treating 'c' input as 'c\+\+'.*\n//gm;
# Function context.
s/^[^:]*: In function '[^']+':\n//gm;
- # Caret error.
- s/^ *#error.*\n *\^\n//gm;
+ # Caret error (with possible '~' to underline).
+ s/^ *#error.*\n *\^~*\n//gm;
# Number of errors.
s/^1 error generated\.\n//gm;
@@ -136,12 +144,15 @@
m4_define([AT_SYNCLINES_COMPILE],
[# Check if we can trust location translation.
AT_DATA([syncline.c],
-[[#error "1"
-int i; /* avoids -pedantic warning about an empty translation unit. */
+[[void foo (void);
+void foo (void)
+{
+#error "4"
+}
]])
_AT_SYNCLINES_COMPILE([syncline.c])
-AT_CHECK([[test "`cat stdout`" = 'syncline.c:1: @%:@error "1"' || exit 77]])
+AT_CHECK([[test "`cat stdout`" = 'syncline.c:4: @%:@error "4"' || exit 77]])
# Then work for real.
_AT_SYNCLINES_COMPILE([$1])
--- /var/folders/5y/lz6sht194vz_k1p88510k3yc0000gs/T//maHuYa_types.at
2018-06-17 19:12:35.000000000 +0200
+++ tests/types.at 2018-06-17 18:43:59.000000000 +0200
@@ -243,7 +243,7 @@
%define api.value.type variant],
[%token <int> '1';
%token <std::string> '2';],
- ['1' '2' { std::cout << $1 << ", " << $2 << std::endl; }],
+ ['1' '2' { std::cout << $1 << ", " << $2 << '\n'; }],
["12"],
[if (res == '1')
AT_VAL.build(10);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- FYI: merge maint into master,
Akim Demaille <=