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