diff options
author | Lancelot Six <lancelot.six@amd.com> | 2023-10-13 09:55:19 +0000 |
---|---|---|
committer | Lancelot Six <lancelot.six@amd.com> | 2023-11-21 11:52:35 +0000 |
commit | 42742fc5817a8f2e47c711880501073a9ad86cfc (patch) | |
tree | a8a3ceb7ef74871b4226955eff34fc9585ba54c3 /gdb/unittests/optional/assignment/3.cc | |
parent | 6b09f1342cf2d8e2b13a0d634acc3bcf2852a73b (diff) | |
download | gdb-42742fc5817a8f2e47c711880501073a9ad86cfc.zip gdb-42742fc5817a8f2e47c711880501073a9ad86cfc.tar.gz gdb-42742fc5817a8f2e47c711880501073a9ad86cfc.tar.bz2 |
gdbsupport: remove gdb::optional
The previous patch migrated all the uses of gdb::optional to use
std::optional instead, so gdb::optional can be removed entirely
as well as the self-tests which came with it.
Change-Id: I96ecd67b850b01be10ef00eb85a78ac647d5adc7
Approved-By: Tom Tromey <tom@tromey.com>
Approved-By: Pedro Alves <pedro@palves.net>
Diffstat (limited to 'gdb/unittests/optional/assignment/3.cc')
-rw-r--r-- | gdb/unittests/optional/assignment/3.cc | 157 |
1 files changed, 0 insertions, 157 deletions
diff --git a/gdb/unittests/optional/assignment/3.cc b/gdb/unittests/optional/assignment/3.cc deleted file mode 100644 index a1d0934..0000000 --- a/gdb/unittests/optional/assignment/3.cc +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright (C) 2013-2023 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library 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, or (at your option) -// any later version. - -// This library 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 library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -namespace assign_3 { - -struct exception {}; - -static int counter = 0; - -struct mixin_counter -{ - mixin_counter() { ++counter; } - mixin_counter(mixin_counter const&) { ++counter; } - ~mixin_counter() { --counter; } -}; - -struct value_type : private mixin_counter -{ - enum state_type - { - zero, - moved_from, - throwing_construction, - throwing_copy, - throwing_copy_assignment, - throwing_move, - throwing_move_assignment, - threw, - }; - - value_type() = default; - - explicit value_type(state_type state_) - : state(state_) - { - throw_if(throwing_construction); - } - - value_type(value_type const& other) - : state(other.state) - { - throw_if(throwing_copy); - } - - value_type& - operator=(value_type const& other) - { - state = other.state; - throw_if(throwing_copy_assignment); - return *this; - } - - value_type(value_type&& other) - : state(other.state) - { - other.state = moved_from; - throw_if(throwing_move); - } - - value_type& - operator=(value_type&& other) - { - state = other.state; - other.state = moved_from; - throw_if(throwing_move_assignment); - return *this; - } - - void throw_if(state_type match) - { - if(state == match) - { - state = threw; - throw exception {}; - } - } - - state_type state = zero; -}; - -static void -test () -{ - using O = gdb::optional<value_type>; - using S = value_type::state_type; - auto const make = [](S s = S::zero) { return value_type { s }; }; - - enum outcome_type { nothrow, caught, bad_catch }; - - // Check value assignment for disengaged optional - - { - O o; - value_type v = make(S::throwing_copy_assignment); - o = v; - VERIFY( o && o->state == S::throwing_copy_assignment ); - } - - { - O o; - value_type v = make(S::throwing_move_assignment); - o = std::move(v); - VERIFY( o && o->state == S::throwing_move_assignment ); - } - - { - ATTRIBUTE_UNUSED outcome_type outcome {}; - O o; - value_type v = make(S::throwing_copy); - - try - { - o = v; - } - catch(exception const&) - { outcome = caught; } - catch(...) - { outcome = bad_catch; } - - VERIFY( !o ); - } - - { - ATTRIBUTE_UNUSED outcome_type outcome {}; - O o; - value_type v = make(S::throwing_move); - - try - { - o = std::move(v); - } - catch(exception const&) - { outcome = caught; } - catch(...) - { outcome = bad_catch; } - - VERIFY( !o ); - } - - VERIFY( counter == 0 ); -} - -} // namespace assign_3 |