1*9d7ae0acSLouis Dionne //===----------------------------------------------------------------------===//
2*9d7ae0acSLouis Dionne //
3*9d7ae0acSLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*9d7ae0acSLouis Dionne // See https://llvm.org/LICENSE.txt for license information.
5*9d7ae0acSLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*9d7ae0acSLouis Dionne //
7*9d7ae0acSLouis Dionne //===----------------------------------------------------------------------===//
8*9d7ae0acSLouis Dionne 
9*9d7ae0acSLouis Dionne // UNSUPPORTED: c++03, c++11, c++14, c++17
10*9d7ae0acSLouis Dionne 
11*9d7ae0acSLouis Dionne // Make sure the various node handles mark their .empty() method with
12*9d7ae0acSLouis Dionne // [[nodiscard]] starting with C++20
13*9d7ae0acSLouis Dionne 
14*9d7ae0acSLouis Dionne #include <map>
15*9d7ae0acSLouis Dionne #include <set>
16*9d7ae0acSLouis Dionne #include <unordered_map>
17*9d7ae0acSLouis Dionne #include <unordered_set>
18*9d7ae0acSLouis Dionne 
test()19*9d7ae0acSLouis Dionne void test() {
20*9d7ae0acSLouis Dionne     {
21*9d7ae0acSLouis Dionne         std::map<int, int>::node_type node;
22*9d7ae0acSLouis Dionne         node.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
23*9d7ae0acSLouis Dionne     }
24*9d7ae0acSLouis Dionne     {
25*9d7ae0acSLouis Dionne         std::multimap<int, int>::node_type node;
26*9d7ae0acSLouis Dionne         node.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
27*9d7ae0acSLouis Dionne     }
28*9d7ae0acSLouis Dionne     {
29*9d7ae0acSLouis Dionne         std::set<int> node;
30*9d7ae0acSLouis Dionne         node.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
31*9d7ae0acSLouis Dionne     }
32*9d7ae0acSLouis Dionne     {
33*9d7ae0acSLouis Dionne         std::multiset<int> node;
34*9d7ae0acSLouis Dionne         node.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
35*9d7ae0acSLouis Dionne     }
36*9d7ae0acSLouis Dionne     {
37*9d7ae0acSLouis Dionne         std::unordered_map<int, int> node;
38*9d7ae0acSLouis Dionne         node.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
39*9d7ae0acSLouis Dionne     }
40*9d7ae0acSLouis Dionne     {
41*9d7ae0acSLouis Dionne         std::unordered_multimap<int, int> node;
42*9d7ae0acSLouis Dionne         node.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
43*9d7ae0acSLouis Dionne     }
44*9d7ae0acSLouis Dionne     {
45*9d7ae0acSLouis Dionne         std::unordered_set<int> node;
46*9d7ae0acSLouis Dionne         node.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
47*9d7ae0acSLouis Dionne     }
48*9d7ae0acSLouis Dionne     {
49*9d7ae0acSLouis Dionne         std::unordered_multiset<int> node;
50*9d7ae0acSLouis Dionne         node.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
51*9d7ae0acSLouis Dionne     }
52*9d7ae0acSLouis Dionne }
53