183bc7b57SNikolas Klauser //===----------------------------------------------------------------------===// 283bc7b57SNikolas Klauser // 383bc7b57SNikolas Klauser // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 483bc7b57SNikolas Klauser // See https://llvm.org/LICENSE.txt for license information. 583bc7b57SNikolas Klauser // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 683bc7b57SNikolas Klauser // 783bc7b57SNikolas Klauser //===----------------------------------------------------------------------===// 883bc7b57SNikolas Klauser 983bc7b57SNikolas Klauser // UNSUPPORTED: c++03 1083bc7b57SNikolas Klauser 1183bc7b57SNikolas Klauser // check that <array> functions are marked [[nodiscard]] 1283bc7b57SNikolas Klauser 1383bc7b57SNikolas Klauser // clang-format off 1483bc7b57SNikolas Klauser 1583bc7b57SNikolas Klauser #include <new> 1683bc7b57SNikolas Klauser 1783bc7b57SNikolas Klauser #include "test_macros.h" 1883bc7b57SNikolas Klauser 1983bc7b57SNikolas Klauser void test() { 2083bc7b57SNikolas Klauser ::operator new(0); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}} 2183bc7b57SNikolas Klauser ::operator new(0, std::nothrow); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}} 2283bc7b57SNikolas Klauser ::operator new[](0); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}} 2383bc7b57SNikolas Klauser ::operator new[](0, std::nothrow); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}} 24*ba87515fSNikolas Klauser #if _LIBCPP_HAS_ALIGNED_ALLOCATION 2583bc7b57SNikolas Klauser ::operator new(0, std::align_val_t{1}); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}} 2683bc7b57SNikolas Klauser ::operator new(0, std::align_val_t{1}, std::nothrow); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}} 2783bc7b57SNikolas Klauser ::operator new[](0, std::align_val_t{1}); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}} 2883bc7b57SNikolas Klauser ::operator new[](0, std::align_val_t{1}, std::nothrow); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}} 29*ba87515fSNikolas Klauser #endif // _LIBCPP_HAS_ALIGNED_ALLOCATION 3083bc7b57SNikolas Klauser 3183bc7b57SNikolas Klauser #if TEST_STD_VER >= 17 3283bc7b57SNikolas Klauser int* ptr = nullptr; 3383bc7b57SNikolas Klauser std::launder(ptr); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}} 3483bc7b57SNikolas Klauser #endif 3583bc7b57SNikolas Klauser } 36