[libcxx-commits] [libcxx] [libc++][type_traits] `reference_{constructs|converts}_from_temporary` with `-Winvalid-specialization` tests (PR #133946)

via libcxx-commits libcxx-commits at lists.llvm.org
Wed Apr 2 01:59:21 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-libcxx

Author: Hristo Hristov (H-G-Hristov)

<details>
<summary>Changes</summary>

Addresses comment:
https://github.com/llvm/llvm-project/pull/128649/files#r2022341035

Drive-by fix: libcxx/test/std/language.support/support.initlist/support.initlist.syn/specialization.verify.cpp

https://clang.llvm.org/docs/DiagnosticsReference.html#winvalid-specialization

---
Full diff: https://github.com/llvm/llvm-project/pull/133946.diff


2 Files Affected:

- (modified) libcxx/test/libcxx/type_traits/no_specializations.verify.cpp (+8-2) 
- (modified) libcxx/test/std/language.support/support.initlist/support.initlist.syn/specialization.verify.cpp (+1-1) 


``````````diff
diff --git a/libcxx/test/libcxx/type_traits/no_specializations.verify.cpp b/libcxx/test/libcxx/type_traits/no_specializations.verify.cpp
index 807d01e381b49..38560161f162e 100644
--- a/libcxx/test/libcxx/type_traits/no_specializations.verify.cpp
+++ b/libcxx/test/libcxx/type_traits/no_specializations.verify.cpp
@@ -156,6 +156,12 @@ SPECIALIZE_UTT(is_unbounded_array);     // expected-error 2 {{cannot be speciali
 #  if TEST_STD_VER >= 23
 SPECIALIZE_UTT(is_implicit_lifetime); // expected-error 2 {{cannot be specialized}}
 SPECIALIZE_UTT(is_scoped_enum);       // expected-error 2 {{cannot be specialized}}
+#    if __has_builtin(__reference_constructs_from_temporary)
+SPECIALIZE_BTT(reference_constructs_from_temporary); // expected-error 2 {{cannot be specialized}}
+#    endif
+#    if __has_builtin(__reference_converts_from_temporary)
+SPECIALIZE_BTT(reference_converts_from_temporary); // expected-error 2 {{cannot be specialized}}
+#    endif
 #  endif
 
 #  if TEST_STD_VER >= 26
@@ -177,8 +183,8 @@ struct std::conditional<true, S, S>; // expected-error {{cannot be specialized}}
 template <>
 struct std::enable_if<true, S>; // expected-error {{cannot be specialized}}
 
-#if TEST_STD_VER >= 20
+#  if TEST_STD_VER >= 20
 template <>
 struct std::integral_constant<S, {}>; // expected-error {{cannot be specialized}}
-#endif
+#  endif
 #endif
diff --git a/libcxx/test/std/language.support/support.initlist/support.initlist.syn/specialization.verify.cpp b/libcxx/test/std/language.support/support.initlist/support.initlist.syn/specialization.verify.cpp
index 11807059c71b0..54b2f6db41c7e 100644
--- a/libcxx/test/std/language.support/support.initlist/support.initlist.syn/specialization.verify.cpp
+++ b/libcxx/test/std/language.support/support.initlist/support.initlist.syn/specialization.verify.cpp
@@ -15,7 +15,7 @@
 
 #include <initializer_list>
 
-#if !__has_warning("-Winvalid-specializations")
+#if !__has_warning("-Winvalid-specialization")
 // expected-no-diagnostics
 #else
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/133946


More information about the libcxx-commits mailing list