]>
Commit | Line | Data |
---|---|---|
047f1cec | 1 | // If you modify this, please update simple11.cc and debug.cc as well. |
3efe2bf7 | 2 | |
01bb8ae2 | 3 | // { dg-do run } |
43a2362b | 4 | // { dg-options "-g -O0 -std=gnu++98" } |
01bb8ae2 | 5 | |
83ffe9cd | 6 | // Copyright (C) 2011-2023 Free Software Foundation, Inc. |
01bb8ae2 TT |
7 | // |
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) | |
12 | // any later version. | |
13 | ||
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. | |
18 | ||
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/>. | |
22 | ||
23 | #include <string> | |
24 | #include <deque> | |
25 | #include <bitset> | |
26 | #include <iostream> | |
27 | #include <list> | |
28 | #include <map> | |
3efe2bf7 | 29 | #include <set> |
93257ed6 | 30 | #include <sstream> |
bdfc9f5c | 31 | #include <vector> |
3efe2bf7 | 32 | #include <ext/slist> |
01bb8ae2 TT |
33 | |
34 | int | |
35 | main() | |
36 | { | |
3efe2bf7 | 37 | std::string tem; |
01bb8ae2 TT |
38 | std::string str = "zardoz"; |
39 | // { dg-final { note-test str "\"zardoz\"" } } | |
40 | ||
14a9206d MS |
41 | // PR 65229 |
42 | std::bitset<0> bs0; | |
3997383b | 43 | // { dg-final { regexp-test bs0 {std::(__debug::)?bitset} } } |
14a9206d | 44 | |
01bb8ae2 TT |
45 | std::bitset<10> bs; |
46 | bs[0] = 1; | |
47 | bs[5] = 1; | |
48 | bs[7] = 1; | |
3997383b | 49 | // { dg-final { regexp-test bs {std::(__debug::)?bitset = {\[0\] = 1, \[5\] = 1, \[7\] = 1}} } } |
01bb8ae2 TT |
50 | |
51 | std::deque<std::string> deq; | |
52 | deq.push_back("one"); | |
53 | deq.push_back("two"); | |
3997383b | 54 | // { dg-final { regexp-test deq {std::(__debug::)?deque with 2 elements = {"one", "two"}} } } |
01bb8ae2 | 55 | |
bdfc9f5c JW |
56 | std::deque<int>::iterator deqiter0; |
57 | // { dg-final { note-test deqiter0 {non-dereferenceable iterator for std::deque} } } | |
58 | ||
3efe2bf7 TT |
59 | std::deque<std::string>::iterator deqiter = deq.begin(); |
60 | // { dg-final { note-test deqiter {"one"} } } | |
61 | ||
01bb8ae2 TT |
62 | std::list<std::string> lst; |
63 | lst.push_back("one"); | |
64 | lst.push_back("two"); | |
4347fea9 | 65 | // { dg-final { regexp-test lst {std::(__cxx11::)?(__debug::)?list = {\[0\] = "one", \[1\] = "two"}} } } |
01bb8ae2 | 66 | |
bdfc9f5c JW |
67 | std::list<int>::iterator lstiter0; |
68 | // { dg-final { note-test lstiter0 {non-dereferenceable iterator for std::list} } } | |
69 | ||
3efe2bf7 TT |
70 | std::list<std::string>::iterator lstiter = lst.begin(); |
71 | tem = *lstiter; | |
72 | // { dg-final { note-test lstiter {"one"}} } | |
73 | ||
74 | std::list<std::string>::const_iterator lstciter = lst.begin(); | |
75 | tem = *lstciter; | |
76 | // { dg-final { note-test lstciter {"one"}} } | |
77 | ||
01bb8ae2 TT |
78 | std::map<std::string, int> mp; |
79 | mp["zardoz"] = 23; | |
3997383b | 80 | // { dg-final { regexp-test mp {std::(__debug::)?map with 1 element = {\["zardoz"\] = 23}} } } |
01bb8ae2 | 81 | |
3efe2bf7 TT |
82 | std::map<std::string, int>::iterator mpiter = mp.begin(); |
83 | // { dg-final { note-test mpiter {{first = "zardoz", second = 23}} } } | |
84 | ||
bdfc9f5c JW |
85 | std::map<std::string, int>::iterator mpiter0; |
86 | // { dg-final { note-test mpiter0 {non-dereferenceable iterator for associative container} } } | |
87 | ||
46d825c5 | 88 | // PR 67440 |
43a2362b JW |
89 | std::set<int> intset; |
90 | intset.insert(2); | |
91 | intset.insert(3); | |
92 | const std::set<int> const_intset = intset; | |
3997383b | 93 | // { dg-final { regexp-test const_intset {std::(__debug::)?set with 2 elements = {\[0\] = 2, \[1\] = 3}} } } |
46d825c5 | 94 | |
3efe2bf7 TT |
95 | std::set<std::string> sp; |
96 | sp.insert("clownfish"); | |
97 | sp.insert("barrel"); | |
3997383b | 98 | // { dg-final { regexp-test sp {std::(__debug::)?set with 2 elements = {\[0\] = "barrel", \[1\] = "clownfish"}} } } |
3efe2bf7 TT |
99 | |
100 | std::set<std::string>::const_iterator spciter = sp.begin(); | |
101 | // { dg-final { note-test spciter {"barrel"} } } | |
102 | ||
bdfc9f5c JW |
103 | std::set<int>::iterator spiter0; |
104 | // { dg-final { note-test spiter0 {non-dereferenceable iterator for associative container} } } | |
105 | ||
106 | std::vector<int> v; | |
107 | v.push_back(1); | |
108 | v.push_back(2); | |
109 | v.erase(v.begin()); | |
3997383b | 110 | // { dg-final { regexp-test v {std::(__debug::)?vector of length 1, capacity 2 = \\{2\\}} } } |
bdfc9f5c JW |
111 | std::vector<int>::iterator viter3 = v.begin(); |
112 | // { dg-final { note-test viter3 {2} } } | |
113 | ||
114 | std::vector<int>::iterator viter0; | |
115 | // { dg-final { note-test viter0 {non-dereferenceable iterator for std::vector} } } | |
116 | ||
36d0dada MW |
117 | std::vector<bool> vb; |
118 | vb.reserve(100); | |
119 | vb.push_back(true); | |
120 | vb.push_back(true); | |
94872d7f | 121 | vb.push_back(true); |
36d0dada MW |
122 | vb.push_back(false); |
123 | vb.push_back(false); | |
124 | vb.push_back(true); | |
125 | vb.erase(vb.begin()); | |
94872d7f | 126 | // { dg-final { regexp-test vb {std::(__debug::)?vector<bool> of length 5, capacity 128 = \\{true, true, false, false, true\\}} } } |
36d0dada | 127 | |
39836f83 MW |
128 | std::vector<bool>::iterator vbIt = vb.begin(); |
129 | // { dg-final { note-test vbIt {true} } } | |
130 | std::vector<bool>::iterator vbIt2 = ++vbIt; | |
131 | // { dg-final { note-test vbIt2 {true} } } | |
132 | std::vector<bool>::iterator vbIt3 = ++vbIt; | |
133 | // { dg-final { note-test vbIt3 {false} } } | |
134 | std::vector<bool>::iterator vbIt4 = ++vbIt; | |
135 | // { dg-final { note-test vbIt4 {false} } } | |
136 | std::vector<bool>::iterator vbIt5 = ++vbIt; | |
137 | // { dg-final { note-test vbIt5 {true} } } | |
138 | ||
139 | std::vector<bool>::const_iterator vbcIt = vb.begin(); | |
140 | // { dg-final { note-test vbcIt {true} } } | |
141 | ||
142 | std::vector<bool>::iterator vbIt0; | |
143 | // { dg-final { note-test vbIt0 {non-dereferenceable iterator for std::vector<bool>} } } | |
144 | ||
c883d1dc | 145 | std::vector<bool>::reference br = *vb.begin(); |
39836f83 | 146 | // { dg-final { note-test br {true} } } |
c883d1dc | 147 | std::vector<bool>::reference br2 = *vbIt2; |
39836f83 | 148 | // { dg-final { note-test br2 {true} } } |
c883d1dc | 149 | std::vector<bool>::reference br3 = *vbIt3; |
39836f83 | 150 | // { dg-final { note-test br3 {false} } } |
c883d1dc | 151 | std::vector<bool>::reference br4 = *vbIt4; |
39836f83 | 152 | // { dg-final { note-test br4 {false} } } |
c883d1dc | 153 | std::vector<bool>::reference br5 = *vbIt5; |
39836f83 MW |
154 | // { dg-final { note-test br5 {true} } } |
155 | ||
c883d1dc JW |
156 | std::vector<bool>::reference br0; |
157 | // { dg-final { note-test br0 {invalid std::vector<bool>::reference} } } | |
39836f83 | 158 | |
3efe2bf7 TT |
159 | __gnu_cxx::slist<int> sll; |
160 | sll.push_front(23); | |
161 | sll.push_front(47); | |
162 | // { dg-final { note-test sll {__gnu_cxx::slist = {[0] = 47, [1] = 23}} } } | |
163 | ||
164 | __gnu_cxx::slist<int>::iterator slliter = sll.begin(); | |
165 | // { dg-final { note-test slliter {47} } } | |
01bb8ae2 | 166 | |
bdfc9f5c JW |
167 | __gnu_cxx::slist<int>::iterator slliter0; |
168 | // { dg-final { note-test slliter0 {non-dereferenceable iterator for __gnu_cxx::slist} } } | |
169 | ||
93257ed6 PF |
170 | std::stringstream sstream; |
171 | sstream << "abc"; | |
172 | // { dg-final { note-test sstream "\"abc\"" } } | |
173 | std::stringstream ssin("input", std::ios::in); | |
174 | // { dg-final { note-test ssin "\"input\"" } } | |
175 | std::istringstream ssin2("input"); | |
176 | // { dg-final { note-test ssin2 "\"input\"" } } | |
177 | std::ostringstream ssout; | |
178 | ssout << "out"; | |
179 | // { dg-final { note-test ssout "\"out\"" } } | |
180 | std::stringstream redirected("xxx"); | |
181 | static_cast<std::basic_ios<std::stringstream::char_type>&>(redirected).rdbuf(sstream.rdbuf()); | |
182 | // { dg-final { regexp-test redirected {std::.*stringstream redirected to .*} } } | |
183 | ||
af583c44 | 184 | std::cout << "\n"; |
3efe2bf7 | 185 | return 0; // Mark SPOT |
01bb8ae2 TT |
186 | } |
187 | ||
188 | // { dg-final { gdb-test SPOT } } |