Skip to content

Commit d16e3e7

Browse files
committed
[libc++][stack] Applied [[nodiscard]]
`[[nodiscard]]` should be applied to functions where discarding the return value is most likely a correctness issue. - https://libcxx.llvm.org/CodingGuidelines.html#apply-nodiscard-where-relevant
1 parent 13ed14f commit d16e3e7

File tree

2 files changed

+30
-18
lines changed

2 files changed

+30
-18
lines changed

libcxx/include/queue

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -376,12 +376,12 @@ public:
376376
# endif // _LIBCPP_CXX03_LANG
377377

378378
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool empty() const { return c.empty(); }
379-
_LIBCPP_HIDE_FROM_ABI size_type size() const { return c.size(); }
379+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI size_type size() const { return c.size(); }
380380

381-
_LIBCPP_HIDE_FROM_ABI reference front() { return c.front(); }
382-
_LIBCPP_HIDE_FROM_ABI const_reference front() const { return c.front(); }
383-
_LIBCPP_HIDE_FROM_ABI reference back() { return c.back(); }
384-
_LIBCPP_HIDE_FROM_ABI const_reference back() const { return c.back(); }
381+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI reference front() { return c.front(); }
382+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reference front() const { return c.front(); }
383+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI reference back() { return c.back(); }
384+
[[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI const_reference back() const { return c.back(); }
385385

386386
_LIBCPP_HIDE_FROM_ABI void push(const value_type& __v) { c.push_back(__v); }
387387
# ifndef _LIBCPP_CXX03_LANG
@@ -401,13 +401,11 @@ public:
401401
template <class... _Args>
402402
_LIBCPP_HIDE_FROM_ABI
403403
# if _LIBCPP_STD_VER >= 17
404-
decltype(auto)
405-
emplace(_Args&&... __args) {
404+
decltype(auto) emplace(_Args&&... __args) {
406405
return c.emplace_back(std::forward<_Args>(__args)...);
407406
}
408407
# else
409-
void
410-
emplace(_Args&&... __args) {
408+
void emplace(_Args&&... __args) {
411409
c.emplace_back(std::forward<_Args>(__args)...);
412410
}
413411
# endif
@@ -664,8 +662,10 @@ public:
664662
# endif
665663

666664
[[__nodiscard__]] _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI bool empty() const { return c.empty(); }
667-
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI size_type size() const { return c.size(); }
668-
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI const_reference top() const { return c.front(); }
665+
[[__nodiscard__]] _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI size_type size() const { return c.size(); }
666+
[[__nodiscard__]] _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI const_reference top() const {
667+
return c.front();
668+
}
669669

670670
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI void push(const value_type& __v);
671671
# ifndef _LIBCPP_CXX03_LANG

libcxx/test/libcxx/diagnostics/queue.nodiscard.verify.cpp

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,24 @@
1212

1313
#include <queue>
1414

15-
void test_queue() {
16-
std::queue<int> queue;
17-
queue.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
18-
}
15+
void test() {
16+
{
17+
std::queue<int> q;
18+
const std::queue<int> cq{};
19+
20+
q.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
21+
q.size(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
22+
q.front(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
23+
cq.front(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
24+
q.back(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
25+
cq.back(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
26+
}
27+
28+
{
29+
std::priority_queue<int> pq;
1930

20-
void test_priority_queue() {
21-
std::priority_queue<int> priority_queue;
22-
priority_queue.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
31+
pq.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
32+
pq.size(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
33+
pq.top(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
34+
}
2335
}

0 commit comments

Comments
 (0)