]>
git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc
1 // If you modify this, please update simple.cc and debug.cc as well.
3 // { dg-do run { target c++11 } }
4 // { dg-options "-g -O0" }
6 // Copyright (C) 2011-2021 Free Software Foundation, Inc.
8 // This file is part of the GNU ISO C++ Library. This library is free
9 // software; you can redistribute it and/or modify it under the
10 // terms of the GNU General Public License as published by the
11 // Free Software Foundation; either version 3, or (at your option)
14 // This library is distributed in the hope that it will be useful,
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 // GNU General Public License for more details.
19 // You should have received a copy of the GNU General Public License along
20 // with this library; see the file COPYING3. If not see
21 // <http://www.gnu.org/licenses/>.
23 // Type printers only recognize the old std::string for now.
24 #define _GLIBCXX_USE_CXX11_ABI 0
40 std::string str
= "zardoz";
41 // { dg-final { note-test str "\"zardoz\"" } }
47 // { dg-final { regexp-test bs {std::(__debug::)?bitset = {\[0\] = 1, \[5\] = 1, \[7\] = 1}} } }
49 std::deque
<std::string
> deq
;
52 // { dg-final { regexp-test deq {std::(__debug::)?deque with 2 elements = {"one", "two"}} } }
54 std::deque
<std::string
>::iterator deqiter
= deq
.begin();
55 // { dg-final { note-test deqiter {"one"} } }
57 std::deque
<int>::iterator deqiter0
;
58 // { dg-final { note-test deqiter0 {non-dereferenceable iterator for std::deque} } }
60 std::list
<std::string
> lst
;
63 // { dg-final { regexp-test lst {std::(__debug::)?list = {\[0\] = "one", \[1\] = "two"}} } }
65 std::list
<std::string
>::iterator lstiter
= lst
.begin();
67 // { dg-final { note-test lstiter {"one"}} }
69 std::list
<std::string
>::const_iterator lstciter
= lst
.begin();
71 // { dg-final { note-test lstciter {"one"}} }
73 std::list
<int>::iterator lstiter0
;
74 // { dg-final { note-test lstiter0 {non-dereferenceable iterator for std::list} } }
76 std::map
<std::string
, int> mp
;
78 // { dg-final { regexp-test mp {std::(__debug::)?map with 1 element = {\["zardoz"\] = 23}} } }
80 std::map
<std::string
, int>::iterator mpiter
= mp
.begin();
81 // { dg-final { note-test mpiter {{first = "zardoz", second = 23}} } }
83 std::map
<std::string
, int>::iterator mpiter0
;
84 // { dg-final { note-test mpiter0 {non-dereferenceable iterator for associative container} } }
87 const std::set
<int> const_intset
= {2, 3};
88 // { dg-final { regexp-test const_intset {std::(__debug::)?set with 2 elements = {\[0\] = 2, \[1\] = 3}} } }
90 std::set
<std::string
> sp
;
91 sp
.insert("clownfish");
93 // { dg-final { regexp-test sp {std::(__debug::)?set with 2 elements = {\[0\] = "barrel", \[1\] = "clownfish"}} } }
95 std::set
<std::string
>::const_iterator spciter
= sp
.begin();
96 // { dg-final { note-test spciter {"barrel"} } }
98 std::set
<int>::iterator spiter0
;
99 // { dg-final { note-test spiter0 {non-dereferenceable iterator for associative container} } }
105 // { dg-final { regexp-test v {std::(__debug::)?vector of length 1, capacity 2 = \\{2\\}} } }
106 std::vector
<int>::iterator viter3
= v
.begin();
107 // { dg-final { note-test viter3 {2} } }
109 std::vector
<int>::iterator viter0
;
110 // { dg-final { note-test viter0 {non-dereferenceable iterator for std::vector} } }
112 std::vector
<bool> vb
;
120 vb
.erase(vb
.begin());
121 // { dg-final { regexp-test vb {std::(__debug::)?vector<bool> of length 5, capacity 128 = \\{true, true, false, false, true\\}} } }
123 std::vector
<bool>::iterator vbIt
= vb
.begin();
124 // { dg-final { note-test vbIt {true} } }
125 std::vector
<bool>::iterator vbIt2
= ++vbIt
;
126 // { dg-final { note-test vbIt2 {true} } }
127 std::vector
<bool>::iterator vbIt3
= ++vbIt
;
128 // { dg-final { note-test vbIt3 {false} } }
129 std::vector
<bool>::iterator vbIt4
= ++vbIt
;
130 // { dg-final { note-test vbIt4 {false} } }
131 std::vector
<bool>::iterator vbIt5
= ++vbIt
;
132 // { dg-final { note-test vbIt5 {true} } }
134 std::vector
<bool>::const_iterator vbcIt
= vb
.cbegin();
135 // { dg-final { note-test vbcIt {true} } }
137 std::vector
<bool>::iterator vbIt0
;
138 // { dg-final { note-test vbIt0 {non-dereferenceable iterator for std::vector<bool>} } }
140 std::_Bit_reference br
= *vb
.begin();
141 // { dg-final { note-test br {true} } }
142 std::_Bit_reference br2
= *vbIt2
;
143 // { dg-final { note-test br2 {true} } }
144 std::_Bit_reference br3
= *vbIt3
;
145 // { dg-final { note-test br3 {false} } }
146 std::_Bit_reference br4
= *vbIt4
;
147 // { dg-final { note-test br4 {false} } }
148 std::_Bit_reference br5
= *vbIt5
;
149 // { dg-final { note-test br5 {true} } }
151 std::_Bit_reference br0
;
152 // { dg-final { note-test br0 {invalid std::_Bit_reference} } }
154 __gnu_cxx::slist
<int> sll
;
157 // { dg-final { note-test sll {__gnu_cxx::slist = {[0] = 47, [1] = 23}} } }
159 __gnu_cxx::slist
<int>::iterator slliter
= sll
.begin();
160 // { dg-final { note-test slliter {47} } }
162 __gnu_cxx::slist
<int>::iterator slliter0
;
163 // { dg-final { note-test slliter0 {non-dereferenceable iterator for __gnu_cxx::slist} } }
166 return 0; // Mark SPOT
169 // { dg-final { gdb-test SPOT } }