bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 01/14] glr2.cc: don't publish YY_EXCEPTIONS


From: Akim Demaille
Subject: [PATCH 01/14] glr2.cc: don't publish YY_EXCEPTIONS
Date: Sun, 12 Sep 2021 14:07:34 +0200

We don't need them in the header file.

* data/skeletons/glr2.cc (YY_EXCEPTIONS): Define only in the
implementation file.
* tests/headers.at (Several Parsers): Also check glr2.cc.
---
 data/skeletons/glr2.cc | 18 +++++++++---------
 tests/headers.at       |  8 ++++++--
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/data/skeletons/glr2.cc b/data/skeletons/glr2.cc
index d5f21645..6d3ce093 100644
--- a/data/skeletons/glr2.cc
+++ b/data/skeletons/glr2.cc
@@ -208,15 +208,6 @@ m4_define([b4_shared_declarations],
           [[# include ]b4_location_include])[
 ]b4_variant_if([b4_variant_includes])[
 
-// Whether we are compiled with exception support.
-#ifndef YY_EXCEPTIONS
-# if defined __GNUC__ && !defined __EXCEPTIONS
-#  define YY_EXCEPTIONS 0
-# else
-#  define YY_EXCEPTIONS 1
-# endif
-#endif
-
 ]b4_YYDEBUG_define[
 
 class glr_stack;
@@ -457,6 +448,15 @@ static ]b4_namespace_ref[::]b4_parser_class[::value_type 
yyval_default;
 # endif
 #endif
 
+// Whether we are compiled with exception support.
+#ifndef YY_EXCEPTIONS
+# if defined __GNUC__ && !defined __EXCEPTIONS
+#  define YY_EXCEPTIONS 0
+# else
+#  define YY_EXCEPTIONS 1
+# endif
+#endif
+
 #ifndef YYFREE
 # define YYFREE free
 #endif
diff --git a/tests/headers.at b/tests/headers.at
index 57a5591f..ab2e636b 100644
--- a/tests/headers.at
+++ b/tests/headers.at
@@ -241,6 +241,7 @@ m4_pushdef([AT_TEST],
 | 'x' '9' { printf ("x9\n"); }
 | 'x' 'a' { printf ("xa\n"); }
 | 'x' 'b' { printf ("xb\n"); }
+| 'x' 'c' { printf ("xc\n"); }
 ;
 
 %%
@@ -279,6 +280,7 @@ m4_pushdef([AT_TEST],
 #include "x9.hh"
 #include "xa.hh"
 #include "xb.hh"
+#include "xc.hh"
 
 #define RUN(S)                                  \
   do {                                          \
@@ -305,6 +307,8 @@ m4_pushdef([AT_TEST],
   RUN(pa.parse());
   xb_::parser pb;
   RUN(pb.parse());
+  xc_::parser pc;
+  RUN(pc.parse());
   return 0;
 }
 ]])# main.cc
@@ -320,7 +324,7 @@ m4_pushdef([AT_TEST],
 AT_TEST([x9], [%locations %code requires {#include "location.hh"} %define 
api.location.type {::x5_::location} %debug %language "c++"])
 AT_TEST([xa], [%locations %code requires {#include "location.hh"} %define 
api.location.type {::x5_::location} %language "c++" %define api.value.type 
variant])
 AT_TEST([xb], [%locations %define api.location.file none %language "c++" 
%define api.value.type variant])
-#AT_TEST([x5], [%locations %language "c++" %glr-parser])
+AT_TEST([xc], [%locations %code requires {#include "location.hh"} %define 
api.location.type {::x5_::location} %skeleton "glr2.cc"])
 
 # Check that api.prefix works properly:
 #
@@ -377,7 +381,7 @@ m4_pushdef([AT_TEST],
 # Do this late, so that other checks have been performed.
 AT_SKIP_IF_CANNOT_LINK_C_AND_CXX
 
-AT_COMPILE_CXX([parser], [[x[1-9a-b].o -DCC_IS_CXX=$CC_IS_CXX main.cc]])
+AT_COMPILE_CXX([parser], [[x[1-9a-c].o -DCC_IS_CXX=$CC_IS_CXX main.cc]])
 AT_PARSER_CHECK([parser], [0], [[expout]])
 
 m4_popdef([AT_TEST])
-- 
2.32.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]