xref: /llvm-project/libcxx/test/std/containers/container.node/node_handle.nodiscard.verify.cpp (revision 3c355e2881887fea6f4b31e26b68aefa4d216fd0)
19d7ae0acSLouis Dionne //===----------------------------------------------------------------------===//
29d7ae0acSLouis Dionne //
39d7ae0acSLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
49d7ae0acSLouis Dionne // See https://llvm.org/LICENSE.txt for license information.
59d7ae0acSLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
69d7ae0acSLouis Dionne //
79d7ae0acSLouis Dionne //===----------------------------------------------------------------------===//
89d7ae0acSLouis Dionne 
9*3c355e28SNikolas Klauser // UNSUPPORTED: c++03
10*3c355e28SNikolas Klauser // UNSUPPORTED: (c++11 || c++14 || c++17) && !stdlib=libc++
119d7ae0acSLouis Dionne 
129d7ae0acSLouis Dionne // Make sure the various node handles mark their .empty() method with
139d7ae0acSLouis Dionne // [[nodiscard]] starting with C++20
149d7ae0acSLouis Dionne 
159d7ae0acSLouis Dionne #include <map>
169d7ae0acSLouis Dionne #include <set>
179d7ae0acSLouis Dionne #include <unordered_map>
189d7ae0acSLouis Dionne #include <unordered_set>
199d7ae0acSLouis Dionne 
20*3c355e28SNikolas Klauser #include "test_macros.h"
21*3c355e28SNikolas Klauser 
test()229d7ae0acSLouis Dionne void test() {
23*3c355e28SNikolas Klauser #if TEST_STD_VER >= 17
249d7ae0acSLouis Dionne     {
259d7ae0acSLouis Dionne         std::map<int, int>::node_type node;
269d7ae0acSLouis Dionne         node.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
279d7ae0acSLouis Dionne     }
289d7ae0acSLouis Dionne     {
299d7ae0acSLouis Dionne         std::multimap<int, int>::node_type node;
309d7ae0acSLouis Dionne         node.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
319d7ae0acSLouis Dionne     }
32*3c355e28SNikolas Klauser #endif // TEST_STD_VER >= 17
339d7ae0acSLouis Dionne     {
349d7ae0acSLouis Dionne         std::set<int> node;
359d7ae0acSLouis Dionne         node.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
369d7ae0acSLouis Dionne     }
379d7ae0acSLouis Dionne     {
389d7ae0acSLouis Dionne         std::multiset<int> node;
399d7ae0acSLouis Dionne         node.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
409d7ae0acSLouis Dionne     }
419d7ae0acSLouis Dionne     {
429d7ae0acSLouis Dionne         std::unordered_map<int, int> node;
439d7ae0acSLouis Dionne         node.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
449d7ae0acSLouis Dionne     }
459d7ae0acSLouis Dionne     {
469d7ae0acSLouis Dionne         std::unordered_multimap<int, int> node;
479d7ae0acSLouis Dionne         node.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
489d7ae0acSLouis Dionne     }
499d7ae0acSLouis Dionne     {
509d7ae0acSLouis Dionne         std::unordered_set<int> node;
519d7ae0acSLouis Dionne         node.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
529d7ae0acSLouis Dionne     }
539d7ae0acSLouis Dionne     {
549d7ae0acSLouis Dionne         std::unordered_multiset<int> node;
559d7ae0acSLouis Dionne         node.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
569d7ae0acSLouis Dionne     }
579d7ae0acSLouis Dionne }
58