Skip to content

Commit cb4433b

Browse files
[libcxx][test] Silence nodiscard warnings for std::expected (#119174)
I'm exploring marking microsoft/STL's std::expected as [[nodiscard]], which affects all functions returning std::expected, including its own monadic member functions. As usual, libc++'s test suite contains calls to these member functions to make sure they compile, but it's discarding the returns. I'm adding void casts to silence the [[nodiscard]] warnings without altering what the test is covering.
1 parent f408171 commit cb4433b

File tree

4 files changed

+40
-40
lines changed

4 files changed

+40
-40
lines changed

libcxx/test/std/utilities/expected/expected.expected/monadic/and_then.pass.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -263,23 +263,23 @@ constexpr void test_val_types() {
263263
constexpr void test_sfinae() {
264264
std::expected<NonConst, int> e(std::unexpected<int>(2));
265265
auto l = [](auto&& x) { return x.non_const(); };
266-
e.and_then(l);
267-
std::move(e).and_then(l);
266+
(void)e.and_then(l);
267+
(void)std::move(e).and_then(l);
268268
}
269269

270270
constexpr void test_move_only_error_type() {
271271
// Test &&
272272
{
273273
std::expected<int, MoveOnlyErrorType> e;
274274
auto l = [](int) { return std::expected<int, MoveOnlyErrorType>{}; };
275-
std::move(e).and_then(l);
275+
(void)std::move(e).and_then(l);
276276
}
277277

278278
// Test const&&
279279
{
280280
const std::expected<int, MoveOnlyErrorType> e;
281281
auto l = [](const int) { return std::expected<int, MoveOnlyErrorType>{}; };
282-
std::move(e).and_then(l);
282+
(void)std::move(e).and_then(l);
283283
}
284284
}
285285

@@ -296,10 +296,10 @@ constexpr bool test() {
296296
return std::expected<int, int>();
297297
};
298298

299-
e.and_then(never_called);
300-
std::move(e).and_then(never_called);
301-
ce.and_then(never_called);
302-
std::move(ce).and_then(never_called);
299+
(void)e.and_then(never_called);
300+
(void)std::move(e).and_then(never_called);
301+
(void)ce.and_then(never_called);
302+
(void)std::move(ce).and_then(never_called);
303303

304304
return true;
305305
}

libcxx/test/std/utilities/expected/expected.expected/monadic/or_else.pass.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -178,37 +178,37 @@ struct NonConst {
178178
constexpr void test_sfinae() {
179179
std::expected<int, NonConst> e{1};
180180
auto l = [](auto&& x) { return x.non_const(); };
181-
e.or_else(l);
182-
std::move(e).or_else(l);
181+
(void)e.or_else(l);
182+
(void)std::move(e).or_else(l);
183183
}
184184

185185
constexpr void test_move_only_error_type() {
186186
// Test &
187187
{
188188
std::expected<int, MoveOnlyErrorType> e;
189189
auto l = [](MoveOnlyErrorType&) { return std::expected<int, int>{}; };
190-
e.or_else(l);
190+
(void)e.or_else(l);
191191
}
192192

193193
// Test const&
194194
{
195195
const std::expected<int, MoveOnlyErrorType> e;
196196
auto l = [](const MoveOnlyErrorType&) { return std::expected<int, int>{}; };
197-
e.or_else(l);
197+
(void)e.or_else(l);
198198
}
199199

200200
// Test &&
201201
{
202202
std::expected<int, MoveOnlyErrorType> e;
203203
auto l = [](MoveOnlyErrorType&&) { return std::expected<int, int>{}; };
204-
std::move(e).or_else(l);
204+
(void)std::move(e).or_else(l);
205205
}
206206

207207
// Test const&&
208208
{
209209
const std::expected<int, MoveOnlyErrorType> e;
210210
auto l = [](const MoveOnlyErrorType&&) { return std::expected<int, int>{}; };
211-
std::move(e).or_else(l);
211+
(void)std::move(e).or_else(l);
212212
}
213213
}
214214

@@ -225,10 +225,10 @@ constexpr bool test() {
225225
return std::expected<int, int>();
226226
};
227227

228-
e.or_else(never_called);
229-
std::move(e).or_else(never_called);
230-
ce.or_else(never_called);
231-
std::move(ce).or_else(never_called);
228+
(void)e.or_else(never_called);
229+
(void)std::move(e).or_else(never_called);
230+
(void)ce.or_else(never_called);
231+
(void)std::move(ce).or_else(never_called);
232232
return true;
233233
}
234234

libcxx/test/std/utilities/expected/expected.expected/monadic/transform.pass.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -187,27 +187,27 @@ constexpr void test_val_types() {
187187
constexpr void test_take_val_return_void() {
188188
std::expected<int, int> e(1);
189189
int val = 0;
190-
e.transform([&val]<typename T>(T&&) -> void {
190+
(void)e.transform([&val]<typename T>(T&&) -> void {
191191
static_assert(std::is_same_v<T, int&>);
192192
assert(val == 0);
193193
val = 1;
194194
});
195195
assert(val == 1);
196-
std::move(e).transform([&val]<typename T>(T&&) -> void {
196+
(void)std::move(e).transform([&val]<typename T>(T&&) -> void {
197197
static_assert(std::is_same_v<T, int>);
198198
assert(val == 1);
199199
val = 2;
200200
});
201201

202202
const auto& ce = e;
203203
assert(val == 2);
204-
ce.transform([&val]<typename T>(T&&) -> void {
204+
(void)ce.transform([&val]<typename T>(T&&) -> void {
205205
static_assert(std::is_same_v<T, const int&>);
206206
assert(val == 2);
207207
val = 3;
208208
});
209209
assert(val == 3);
210-
std::move(ce).transform([&val]<typename T>(T&&) -> void {
210+
(void)std::move(ce).transform([&val]<typename T>(T&&) -> void {
211211
static_assert(std::is_same_v<T, const int>);
212212
assert(val == 3);
213213
val = 4;
@@ -227,8 +227,8 @@ constexpr void test_direct_non_list_init() {
227227
constexpr void test_sfinae() {
228228
std::expected<NonConst, int> e(std::unexpected<int>(2));
229229
auto l = [](auto&& x) { return x.non_const(); };
230-
e.transform(l);
231-
std::move(e).transform(l);
230+
(void)e.transform(l);
231+
(void)std::move(e).transform(l);
232232

233233
std::expected<int, int> e1(std::unexpected<int>(1));
234234
const auto& ce1 = e1;
@@ -237,25 +237,25 @@ constexpr void test_sfinae() {
237237
return std::expected<int, int>();
238238
};
239239

240-
e1.transform(never_called);
241-
std::move(e1).transform(never_called);
242-
ce1.and_then(never_called);
243-
std::move(ce1).transform(never_called);
240+
(void)e1.transform(never_called);
241+
(void)std::move(e1).transform(never_called);
242+
(void)ce1.transform(never_called);
243+
(void)std::move(ce1).transform(never_called);
244244
}
245245

246246
constexpr void test_move_only_error_type() {
247247
// Test &&
248248
{
249249
std::expected<int, MoveOnlyErrorType> e;
250250
auto l = [](int) { return 0; };
251-
std::move(e).transform(l);
251+
(void)std::move(e).transform(l);
252252
}
253253

254254
// Test const&&
255255
{
256256
const std::expected<int, MoveOnlyErrorType> e;
257257
auto l = [](const int) { return 0; };
258-
std::move(e).transform(l);
258+
(void)std::move(e).transform(l);
259259
}
260260
}
261261

libcxx/test/std/utilities/expected/expected.expected/monadic/transform_error.pass.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,8 @@ constexpr void test_direct_non_list_init() {
197197
constexpr void test_sfinae() {
198198
std::expected<int, NonConst> e(2);
199199
auto l = [](auto&& x) { return x.non_const(); };
200-
e.transform_error(l);
201-
std::move(e).transform_error(l);
200+
(void)e.transform_error(l);
201+
(void)std::move(e).transform_error(l);
202202

203203
std::expected<int, int> e1;
204204
const auto& ce1 = e1;
@@ -208,39 +208,39 @@ constexpr void test_sfinae() {
208208
return 0;
209209
};
210210

211-
e1.transform_error(never_called);
212-
std::move(e1).transform_error(never_called);
213-
ce1.transform_error(never_called);
214-
std::move(ce1).transform_error(never_called);
211+
(void)e1.transform_error(never_called);
212+
(void)std::move(e1).transform_error(never_called);
213+
(void)ce1.transform_error(never_called);
214+
(void)std::move(ce1).transform_error(never_called);
215215
}
216216

217217
constexpr void test_move_only_error_type() {
218218
// Test &
219219
{
220220
std::expected<int, MoveOnlyErrorType> e;
221221
auto l = [](MoveOnlyErrorType&) { return 0; };
222-
e.transform_error(l);
222+
(void)e.transform_error(l);
223223
}
224224

225225
// Test const&
226226
{
227227
const std::expected<int, MoveOnlyErrorType> e;
228228
auto l = [](const MoveOnlyErrorType&) { return 0; };
229-
e.transform_error(l);
229+
(void)e.transform_error(l);
230230
}
231231

232232
// Test &&
233233
{
234234
std::expected<int, MoveOnlyErrorType> e;
235235
auto l = [](MoveOnlyErrorType&&) { return 0; };
236-
std::move(e).transform_error(l);
236+
(void)std::move(e).transform_error(l);
237237
}
238238

239239
// Test const&&
240240
{
241241
const std::expected<int, MoveOnlyErrorType> e;
242242
auto l = [](const MoveOnlyErrorType&&) { return 0; };
243-
std::move(e).transform_error(l);
243+
(void)std::move(e).transform_error(l);
244244
}
245245
}
246246

0 commit comments

Comments
 (0)