c++: enable C++11 assignment operators for lalr1.cc

<https://github.com/akimd/bison/pull/85>
<https://lists.gnu.org/r/bug-bison/2022-04/msg00000.html>

* data/skeletons/c++.m4: Enable C++11 assignment operators for
all C++ skeletons.
This commit is contained in:
Anthony Heading
2022-04-29 04:08:35 -04:00
committed by Akim Demaille
parent ec9c5556d9
commit eb83487606
2 changed files with 8 additions and 6 deletions

2
NEWS
View File

@@ -6,6 +6,8 @@ GNU Bison NEWS
Fixed spurious warnings about input containing `m4_` or `b4_`. Fixed spurious warnings about input containing `m4_` or `b4_`.
The C++ skeletons now expose copy and move operators for symbols.
* Noteworthy changes in release 3.8.2 (2021-09-25) [stable] * Noteworthy changes in release 3.8.2 (2021-09-25) [stable]
Fixed portability issues of bison on Cygwin. Fixed portability issues of bison on Cygwin.

View File

@@ -346,7 +346,7 @@ m4_define([b4_symbol_type_define],
clear (); clear ();
} }
]b4_glr2_cc_if([[ #if 201103L <= YY_CPLUSPLUS
/// Copy assignment. /// Copy assignment.
basic_symbol& operator= (const basic_symbol& that) basic_symbol& operator= (const basic_symbol& that)
{ {
@@ -368,7 +368,7 @@ m4_define([b4_symbol_type_define],
location = std::move (that.location);]])[ location = std::move (that.location);]])[
return *this; return *this;
} }
]])[ #endif
/// Destroy contents, and record that is empty. /// Destroy contents, and record that is empty.
void clear () YY_NOEXCEPT void clear () YY_NOEXCEPT
@@ -454,13 +454,13 @@ m4_define([b4_symbol_type_define],
/// Constructor from (external) token numbers. /// Constructor from (external) token numbers.
by_kind (kind_type t) YY_NOEXCEPT; by_kind (kind_type t) YY_NOEXCEPT;
]b4_glr2_cc_if([[ #if 201103L <= YY_CPLUSPLUS
/// Copy assignment. /// Copy assignment.
by_kind& operator= (const by_kind& that); by_kind& operator= (const by_kind& that);
/// Move assignment. /// Move assignment.
by_kind& operator= (by_kind&& that); by_kind& operator= (by_kind&& that);
]])[ #endif
/// Record that this symbol is empty. /// Record that this symbol is empty.
void clear () YY_NOEXCEPT; void clear () YY_NOEXCEPT;
@@ -584,7 +584,7 @@ m4_define([b4_public_types_define],
: kind_ (yytranslate_ (t)) : kind_ (yytranslate_ (t))
{} {}
]b4_glr2_cc_if([[ #if 201103L <= YY_CPLUSPLUS
]b4_inline([$1])]b4_parser_class[::by_kind& ]b4_inline([$1])]b4_parser_class[::by_kind&
b4_parser_class[::by_kind::by_kind::operator= (const by_kind& that) b4_parser_class[::by_kind::by_kind::operator= (const by_kind& that)
{ {
@@ -599,7 +599,7 @@ m4_define([b4_public_types_define],
that.clear (); that.clear ();
return *this; return *this;
} }
]])[ #endif
]b4_inline([$1])[void ]b4_inline([$1])[void
]b4_parser_class[::by_kind::clear () YY_NOEXCEPT ]b4_parser_class[::by_kind::clear () YY_NOEXCEPT