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 Dionnevoid 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