From 7910416b106183e2aec9c87cbaacad0e6d22cb92 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Thu, 20 Nov 2025 07:05:59 +0200 Subject: [PATCH 1/3] [libc++][any] Applied `[[nodiscard]]` `[[nodiscard]]` should be applied to functions where discarding the return value is most likely a correctness issue. - https://libcxx.llvm.org/CodingGuidelines.html#apply-nodiscard-where-relevant --- libcxx/include/any | 18 ++++---- .../libcxx/utilities/any/nodiscard.verify.cpp | 45 +++++++++++++++++++ ..._request_invalid_value_category.verify.cpp | 21 +++------ .../any.cast/const_correctness.verify.cpp | 8 ++-- .../not_copy_constructible.verify.cpp | 8 ++-- .../any.cast/reference_types.verify.cpp | 21 ++++----- .../any.nonmembers/any.cast/void.verify.cpp | 4 +- 7 files changed, 79 insertions(+), 46 deletions(-) create mode 100644 libcxx/test/libcxx/utilities/any/nodiscard.verify.cpp diff --git a/libcxx/include/any b/libcxx/include/any index b3e5b8748df4c..5c779e397c9ea 100644 --- a/libcxx/include/any +++ b/libcxx/include/any @@ -262,10 +262,10 @@ public: _LIBCPP_HIDE_FROM_ABI void swap(any& __rhs) _NOEXCEPT; // 6.3.4 any observers - _LIBCPP_HIDE_FROM_ABI bool has_value() const _NOEXCEPT { return __h_ != nullptr; } + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool has_value() const _NOEXCEPT { return __h_ != nullptr; } # if _LIBCPP_HAS_RTTI - _LIBCPP_HIDE_FROM_ABI const type_info& type() const _NOEXCEPT { + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const type_info& type() const _NOEXCEPT { if (__h_) { return *static_cast(this->__call(_Action::_TypeInfo)); } else { @@ -492,17 +492,17 @@ inline _LIBCPP_HIDE_FROM_ABI void any::swap(any& __rhs) _NOEXCEPT { inline _LIBCPP_HIDE_FROM_ABI void swap(any& __lhs, any& __rhs) _NOEXCEPT { __lhs.swap(__rhs); } template -inline _LIBCPP_HIDE_FROM_ABI any make_any(_Args&&... __args) { +[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI any make_any(_Args&&... __args) { return any(in_place_type<_Tp>, std::forward<_Args>(__args)...); } template -inline _LIBCPP_HIDE_FROM_ABI any make_any(initializer_list<_Up> __il, _Args&&... __args) { +[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI any make_any(initializer_list<_Up> __il, _Args&&... __args) { return any(in_place_type<_Tp>, __il, std::forward<_Args>(__args)...); } template -inline _LIBCPP_HIDE_FROM_ABI _ValueType any_cast(any const& __v) { +[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI _ValueType any_cast(any const& __v) { using _RawValueType = __remove_cvref_t<_ValueType>; static_assert(is_constructible<_ValueType, _RawValueType const&>::value, "ValueType is required to be a const lvalue reference " @@ -514,7 +514,7 @@ inline _LIBCPP_HIDE_FROM_ABI _ValueType any_cast(any const& __v) { } template -inline _LIBCPP_HIDE_FROM_ABI _ValueType any_cast(any& __v) { +[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI _ValueType any_cast(any& __v) { using _RawValueType = __remove_cvref_t<_ValueType>; static_assert(is_constructible<_ValueType, _RawValueType&>::value, "ValueType is required to be an lvalue reference " @@ -526,7 +526,7 @@ inline _LIBCPP_HIDE_FROM_ABI _ValueType any_cast(any& __v) { } template -inline _LIBCPP_HIDE_FROM_ABI _ValueType any_cast(any&& __v) { +[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI _ValueType any_cast(any&& __v) { using _RawValueType = __remove_cvref_t<_ValueType>; static_assert(is_constructible<_ValueType, _RawValueType>::value, "ValueType is required to be an rvalue reference " @@ -538,7 +538,7 @@ inline _LIBCPP_HIDE_FROM_ABI _ValueType any_cast(any&& __v) { } template -inline _LIBCPP_HIDE_FROM_ABI add_pointer_t> any_cast(any const* __any) _NOEXCEPT { +[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI add_pointer_t> any_cast(any const* __any) _NOEXCEPT { static_assert(!is_void_v<_ValueType>, "_ValueType may not be void."); static_assert(!is_reference<_ValueType>::value, "_ValueType may not be a reference."); return std::any_cast<_ValueType>(const_cast(__any)); @@ -555,7 +555,7 @@ inline _LIBCPP_HIDE_FROM_ABI _RetType __pointer_or_func_cast(void*, /*IsFunction } template -_LIBCPP_HIDE_FROM_ABI add_pointer_t<_ValueType> any_cast(any* __any) _NOEXCEPT { +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI add_pointer_t<_ValueType> any_cast(any* __any) _NOEXCEPT { using __any_imp::_Action; static_assert(!is_void_v<_ValueType>, "_ValueType may not be void."); static_assert(!is_reference<_ValueType>::value, "_ValueType may not be a reference."); diff --git a/libcxx/test/libcxx/utilities/any/nodiscard.verify.cpp b/libcxx/test/libcxx/utilities/any/nodiscard.verify.cpp new file mode 100644 index 0000000000000..13a67bd3c3044 --- /dev/null +++ b/libcxx/test/libcxx/utilities/any/nodiscard.verify.cpp @@ -0,0 +1,45 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// REQUIRES: std-at-least-c++17 + +// Check that functions are marked [[nodiscard]] + +#include +#include +#include + +#include "test_macros.h" + +void test() { + std::any a{94}; + + // expected-warning@+1 {{ignoring return value of function declared with 'nodiscard' attribute}} + a.has_value(); +#if !defined(TEST_HAS_NO_RTTI) + // expected-warning@+1 {{ignoring return value of function declared with 'nodiscard' attribute}} + a.type(); +#endif + + // expected-warning@+1 {{ignoring return value of function declared with 'nodiscard' attribute}} + std::make_any(82); + // expected-warning@+1 {{ignoring return value of function declared with 'nodiscard' attribute}} + std::make_any>({94, 82, 50}); + + // expected-warning@+1 {{ignoring return value of function declared with 'nodiscard' attribute}} + std::any_cast(std::as_const(a)); + // expected-warning@+1 {{ignoring return value of function declared with 'nodiscard' attribute}} + std::any_cast(a); + // expected-warning@+1 {{ignoring return value of function declared with 'nodiscard' attribute}} + std::any_cast(std::move(a)); + + // expected-warning@+1 {{ignoring return value of function declared with 'nodiscard' attribute}} + std::any_cast(&a); + // expected-warning@+1 {{ignoring return value of function declared with 'nodiscard' attribute}} + std::any_cast(&std::as_const(a)); +} diff --git a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/any_cast_request_invalid_value_category.verify.cpp b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/any_cast_request_invalid_value_category.verify.cpp index 34f785fdff6bc..bb0fa1f4d9aff 100644 --- a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/any_cast_request_invalid_value_category.verify.cpp +++ b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/any_cast_request_invalid_value_category.verify.cpp @@ -24,23 +24,23 @@ void test_const_lvalue_cast_request_non_const_lvalue() const std::any a; // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} // expected-error@any:* {{drops 'const' qualifier}} - std::any_cast(a); // expected-note {{requested here}} + (void)std::any_cast(a); // expected-note {{requested here}} const std::any a2(42); // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} // expected-error@any:* {{drops 'const' qualifier}} - std::any_cast(a2); // expected-note {{requested here}} + (void)std::any_cast(a2); // expected-note {{requested here}} } void test_lvalue_any_cast_request_rvalue() { std::any a; // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an lvalue reference or a CopyConstructible type}} - std::any_cast(a); // expected-note {{requested here}} + (void)std::any_cast(a); // expected-note {{requested here}} std::any a2(42); // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an lvalue reference or a CopyConstructible type}} - std::any_cast(a2); // expected-note {{requested here}} + (void)std::any_cast(a2); // expected-note {{requested here}} } void test_rvalue_any_cast_request_lvalue() @@ -48,18 +48,9 @@ void test_rvalue_any_cast_request_lvalue() std::any a; // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an rvalue reference or a CopyConstructible type}} // expected-error@any:* {{non-const lvalue reference to type 'TestType' cannot bind to a temporary}} - std::any_cast(std::move(a)); // expected-note {{requested here}} + (void)std::any_cast(std::move(a)); // expected-note {{requested here}} // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an rvalue reference or a CopyConstructible type}} // expected-error@any:* {{non-const lvalue reference to type 'int' cannot bind to a temporary}} - std::any_cast(42); -} - -int main(int, char**) -{ - test_const_lvalue_cast_request_non_const_lvalue(); - test_lvalue_any_cast_request_rvalue(); - test_rvalue_any_cast_request_lvalue(); - - return 0; + (void)std::any_cast(42); } diff --git a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/const_correctness.verify.cpp b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/const_correctness.verify.cpp index 1830626d7f410..434093ab780fd 100644 --- a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/const_correctness.verify.cpp +++ b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/const_correctness.verify.cpp @@ -31,14 +31,14 @@ void f() { std::any a; // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} - std::any_cast(static_cast(a)); // expected-note {{requested here}} + (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} - std::any_cast(static_cast(a)); // expected-note {{requested here}} + (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} - std::any_cast(static_cast(a)); // expected-note {{requested here}} + (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} - std::any_cast(static_cast(a)); // expected-note {{requested here}} + (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} } diff --git a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/not_copy_constructible.verify.cpp b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/not_copy_constructible.verify.cpp index 3b9aac581a083..f489db1213ef2 100644 --- a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/not_copy_constructible.verify.cpp +++ b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/not_copy_constructible.verify.cpp @@ -45,13 +45,13 @@ struct no_move { void f() { std::any a; // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an lvalue reference or a CopyConstructible type}} - std::any_cast(static_cast(a)); // expected-note {{requested here}} + (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} - std::any_cast(static_cast(a)); // expected-note {{requested here}} + (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} - std::any_cast(static_cast(a)); // OK + (void)std::any_cast(static_cast(a)); // OK // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an rvalue reference or a CopyConstructible type}} - std::any_cast(static_cast(a)); + (void)std::any_cast(static_cast(a)); } diff --git a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/reference_types.verify.cpp b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/reference_types.verify.cpp index 0a13fdf0c6d80..4fec3e6ee758d 100644 --- a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/reference_types.verify.cpp +++ b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/reference_types.verify.cpp @@ -18,35 +18,32 @@ #include -int main(int, char**) -{ +void test() { std::any a = 1; // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - std::any_cast(&a); // expected-note {{requested here}} + (void)std::any_cast(&a); // expected-note {{requested here}} // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - std::any_cast(&a); // expected-note {{requested here}} + (void)std::any_cast(&a); // expected-note {{requested here}} // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - std::any_cast(&a); // expected-note {{requested here}} + (void)std::any_cast(&a); // expected-note {{requested here}} // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - std::any_cast(&a); // expected-note {{requested here}} + (void)std::any_cast(&a); // expected-note {{requested here}} const std::any& a2 = a; // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - std::any_cast(&a2); // expected-note {{requested here}} + (void)std::any_cast(&a2); // expected-note {{requested here}} // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - std::any_cast(&a2); // expected-note {{requested here}} + (void)std::any_cast(&a2); // expected-note {{requested here}} // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - std::any_cast(&a2); // expected-note {{requested here}} + (void)std::any_cast(&a2); // expected-note {{requested here}} // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - std::any_cast(&a2); // expected-note {{requested here}} - - return 0; + (void)std::any_cast(&a2); // expected-note {{requested here}} } diff --git a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/void.verify.cpp b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/void.verify.cpp index 9530d63e07b0a..d1ec42eaf10c2 100644 --- a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/void.verify.cpp +++ b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/void.verify.cpp @@ -23,12 +23,12 @@ void test() { const std::any ca = 1; // expected-error-re@any:* {{static assertion failed{{.*}}_ValueType may not be void.}} - std::any_cast(&ca); // expected-note {{requested here}} + (void)std::any_cast(&ca); // expected-note {{requested here}} } { std::any a = 1; // expected-error-re@any:* {{static assertion failed{{.*}}_ValueType may not be void.}} - std::any_cast(&a); // expected-note {{requested here}} + (void)std::any_cast(&a); // expected-note {{requested here}} } } From da2b7003075fc302f57b80d78137d69b440bd700 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Thu, 20 Nov 2025 18:23:15 +0200 Subject: [PATCH 2/3] Formatting --- ...ny_cast_request_invalid_value_category.verify.cpp | 6 +++--- .../any.cast/const_correctness.verify.cpp | 8 ++++---- .../any.cast/not_copy_constructible.verify.cpp | 4 ++-- .../any.cast/reference_types.verify.cpp | 12 ++++++------ 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/any_cast_request_invalid_value_category.verify.cpp b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/any_cast_request_invalid_value_category.verify.cpp index bb0fa1f4d9aff..c0d94abd3f5ba 100644 --- a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/any_cast_request_invalid_value_category.verify.cpp +++ b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/any_cast_request_invalid_value_category.verify.cpp @@ -24,7 +24,7 @@ void test_const_lvalue_cast_request_non_const_lvalue() const std::any a; // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} // expected-error@any:* {{drops 'const' qualifier}} - (void)std::any_cast(a); // expected-note {{requested here}} + (void)std::any_cast(a); // expected-note {{requested here}} const std::any a2(42); // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} @@ -36,7 +36,7 @@ void test_lvalue_any_cast_request_rvalue() { std::any a; // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an lvalue reference or a CopyConstructible type}} - (void)std::any_cast(a); // expected-note {{requested here}} + (void)std::any_cast(a); // expected-note {{requested here}} std::any a2(42); // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an lvalue reference or a CopyConstructible type}} @@ -48,7 +48,7 @@ void test_rvalue_any_cast_request_lvalue() std::any a; // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an rvalue reference or a CopyConstructible type}} // expected-error@any:* {{non-const lvalue reference to type 'TestType' cannot bind to a temporary}} - (void)std::any_cast(std::move(a)); // expected-note {{requested here}} + (void)std::any_cast(std::move(a)); // expected-note {{requested here}} // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an rvalue reference or a CopyConstructible type}} // expected-error@any:* {{non-const lvalue reference to type 'int' cannot bind to a temporary}} diff --git a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/const_correctness.verify.cpp b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/const_correctness.verify.cpp index 434093ab780fd..85f5e872a3b97 100644 --- a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/const_correctness.verify.cpp +++ b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/const_correctness.verify.cpp @@ -31,14 +31,14 @@ void f() { std::any a; // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} - (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} + (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} - (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} + (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} - (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} + (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} - (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} + (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} } diff --git a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/not_copy_constructible.verify.cpp b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/not_copy_constructible.verify.cpp index f489db1213ef2..e17424a7e6739 100644 --- a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/not_copy_constructible.verify.cpp +++ b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/not_copy_constructible.verify.cpp @@ -50,8 +50,8 @@ void f() { // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} - (void)std::any_cast(static_cast(a)); // OK + (void)std::any_cast(static_cast(a)); // OK // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an rvalue reference or a CopyConstructible type}} - (void)std::any_cast(static_cast(a)); + (void)std::any_cast(static_cast(a)); } diff --git a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/reference_types.verify.cpp b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/reference_types.verify.cpp index 4fec3e6ee758d..a776abdf4ff87 100644 --- a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/reference_types.verify.cpp +++ b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/reference_types.verify.cpp @@ -22,13 +22,13 @@ void test() { std::any a = 1; // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - (void)std::any_cast(&a); // expected-note {{requested here}} + (void)std::any_cast(&a); // expected-note {{requested here}} // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - (void)std::any_cast(&a); // expected-note {{requested here}} + (void)std::any_cast(&a); // expected-note {{requested here}} // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - (void)std::any_cast(&a); // expected-note {{requested here}} + (void)std::any_cast(&a); // expected-note {{requested here}} // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} (void)std::any_cast(&a); // expected-note {{requested here}} @@ -39,11 +39,11 @@ void test() { (void)std::any_cast(&a2); // expected-note {{requested here}} // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - (void)std::any_cast(&a2); // expected-note {{requested here}} + (void)std::any_cast(&a2); // expected-note {{requested here}} // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - (void)std::any_cast(&a2); // expected-note {{requested here}} + (void)std::any_cast(&a2); // expected-note {{requested here}} // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - (void)std::any_cast(&a2); // expected-note {{requested here}} + (void)std::any_cast(&a2); // expected-note {{requested here}} } From 6890692709008265ef2ead244d2878c6985fa970 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Thu, 20 Nov 2025 19:00:38 +0200 Subject: [PATCH 3/3] Fix formatting --- ..._request_invalid_value_category.verify.cpp | 53 +++++++++---------- .../any.cast/const_correctness.verify.cpp | 18 +++---- .../not_copy_constructible.verify.cpp | 28 +++++----- .../any.cast/reference_types.verify.cpp | 36 ++++++------- 4 files changed, 66 insertions(+), 69 deletions(-) diff --git a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/any_cast_request_invalid_value_category.verify.cpp b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/any_cast_request_invalid_value_category.verify.cpp index c0d94abd3f5ba..55e9923eab850 100644 --- a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/any_cast_request_invalid_value_category.verify.cpp +++ b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/any_cast_request_invalid_value_category.verify.cpp @@ -19,38 +19,35 @@ struct TestType {}; -void test_const_lvalue_cast_request_non_const_lvalue() -{ - const std::any a; - // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} - // expected-error@any:* {{drops 'const' qualifier}} - (void)std::any_cast(a); // expected-note {{requested here}} - - const std::any a2(42); - // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} - // expected-error@any:* {{drops 'const' qualifier}} - (void)std::any_cast(a2); // expected-note {{requested here}} +void test_const_lvalue_cast_request_non_const_lvalue() { + const std::any a; + // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} + // expected-error@any:* {{drops 'const' qualifier}} + (void)std::any_cast(a); // expected-note {{requested here}} + + const std::any a2(42); + // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} + // expected-error@any:* {{drops 'const' qualifier}} + (void)std::any_cast(a2); // expected-note {{requested here}} } -void test_lvalue_any_cast_request_rvalue() -{ - std::any a; - // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an lvalue reference or a CopyConstructible type}} - (void)std::any_cast(a); // expected-note {{requested here}} +void test_lvalue_any_cast_request_rvalue() { + std::any a; + // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an lvalue reference or a CopyConstructible type}} + (void)std::any_cast(a); // expected-note {{requested here}} - std::any a2(42); - // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an lvalue reference or a CopyConstructible type}} - (void)std::any_cast(a2); // expected-note {{requested here}} + std::any a2(42); + // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an lvalue reference or a CopyConstructible type}} + (void)std::any_cast(a2); // expected-note {{requested here}} } -void test_rvalue_any_cast_request_lvalue() -{ - std::any a; - // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an rvalue reference or a CopyConstructible type}} - // expected-error@any:* {{non-const lvalue reference to type 'TestType' cannot bind to a temporary}} - (void)std::any_cast(std::move(a)); // expected-note {{requested here}} +void test_rvalue_any_cast_request_lvalue() { + std::any a; + // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an rvalue reference or a CopyConstructible type}} + // expected-error@any:* {{non-const lvalue reference to type 'TestType' cannot bind to a temporary}} + (void)std::any_cast(std::move(a)); // expected-note {{requested here}} - // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an rvalue reference or a CopyConstructible type}} - // expected-error@any:* {{non-const lvalue reference to type 'int' cannot bind to a temporary}} - (void)std::any_cast(42); + // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an rvalue reference or a CopyConstructible type}} + // expected-error@any:* {{non-const lvalue reference to type 'int' cannot bind to a temporary}} + (void)std::any_cast(42); } diff --git a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/const_correctness.verify.cpp b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/const_correctness.verify.cpp index 85f5e872a3b97..39ef0651cd270 100644 --- a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/const_correctness.verify.cpp +++ b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/const_correctness.verify.cpp @@ -28,17 +28,17 @@ struct TestType {}; struct TestType2 {}; void f() { - std::any a; + std::any a; - // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} - (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} + // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} + (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} - // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} - (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} + // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} + (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} - // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} - (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} + // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} + (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} - // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} - (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} + // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} + (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} } diff --git a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/not_copy_constructible.verify.cpp b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/not_copy_constructible.verify.cpp index e17424a7e6739..597727c9a4438 100644 --- a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/not_copy_constructible.verify.cpp +++ b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/not_copy_constructible.verify.cpp @@ -31,27 +31,27 @@ #include struct no_copy { - no_copy() {} - no_copy(no_copy &&) {} - no_copy(no_copy const &) = delete; + no_copy() {} + no_copy(no_copy&&) {} + no_copy(no_copy const&) = delete; }; struct no_move { - no_move() {} - no_move(no_move&&) = delete; - no_move(no_move const&) {} + no_move() {} + no_move(no_move&&) = delete; + no_move(no_move const&) {} }; void f() { - std::any a; - // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an lvalue reference or a CopyConstructible type}} - (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} + std::any a; + // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an lvalue reference or a CopyConstructible type}} + (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} - // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} - (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} + // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be a const lvalue reference or a CopyConstructible type}} + (void)std::any_cast(static_cast(a)); // expected-note {{requested here}} - (void)std::any_cast(static_cast(a)); // OK + (void)std::any_cast(static_cast(a)); // OK - // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an rvalue reference or a CopyConstructible type}} - (void)std::any_cast(static_cast(a)); + // expected-error-re@any:* {{static assertion failed{{.*}}ValueType is required to be an rvalue reference or a CopyConstructible type}} + (void)std::any_cast(static_cast(a)); } diff --git a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/reference_types.verify.cpp b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/reference_types.verify.cpp index a776abdf4ff87..d634f73291e0e 100644 --- a/libcxx/test/std/utilities/any/any.nonmembers/any.cast/reference_types.verify.cpp +++ b/libcxx/test/std/utilities/any/any.nonmembers/any.cast/reference_types.verify.cpp @@ -19,31 +19,31 @@ #include void test() { - std::any a = 1; + std::any a = 1; - // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - (void)std::any_cast(&a); // expected-note {{requested here}} + // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} + (void)std::any_cast(&a); // expected-note {{requested here}} - // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - (void)std::any_cast(&a); // expected-note {{requested here}} + // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} + (void)std::any_cast(&a); // expected-note {{requested here}} - // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - (void)std::any_cast(&a); // expected-note {{requested here}} + // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} + (void)std::any_cast(&a); // expected-note {{requested here}} - // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - (void)std::any_cast(&a); // expected-note {{requested here}} + // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} + (void)std::any_cast(&a); // expected-note {{requested here}} - const std::any& a2 = a; + const std::any& a2 = a; - // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - (void)std::any_cast(&a2); // expected-note {{requested here}} + // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} + (void)std::any_cast(&a2); // expected-note {{requested here}} - // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - (void)std::any_cast(&a2); // expected-note {{requested here}} + // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} + (void)std::any_cast(&a2); // expected-note {{requested here}} - // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - (void)std::any_cast(&a2); // expected-note {{requested here}} + // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} + (void)std::any_cast(&a2); // expected-note {{requested here}} - // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} - (void)std::any_cast(&a2); // expected-note {{requested here}} + // expected-error-re@any:* 1 {{static assertion failed{{.*}}_ValueType may not be a reference.}} + (void)std::any_cast(&a2); // expected-note {{requested here}} }