[libc++][test] Fix MSVC warning C4127 in array.cons/initialization.pass.cpp#79793
Conversation
Testing TEST_STD_AT_LEAST_20_OR_RUNTIME_EVALUATED by itself doesn't emit this warning, but the condition here is more complicated. I'm expanding the macro and mechanically simplifying the resulting code.
|
@llvm/pr-subscribers-libcxx Author: Stephan T. Lavavej (StephanTLavavej) ChangesThis fixes MSVC warning C4127: conditional expression is constant. Testing (Yeah, this warning is often annoying, and I introduced Full diff: https://github.com/llvm/llvm-project/pull/79793.diff 1 Files Affected:
diff --git a/libcxx/test/std/containers/sequences/array/array.cons/initialization.pass.cpp b/libcxx/test/std/containers/sequences/array/array.cons/initialization.pass.cpp
index 7991d4738d9699..acd176cce91d9e 100644
--- a/libcxx/test/std/containers/sequences/array/array.cons/initialization.pass.cpp
+++ b/libcxx/test/std/containers/sequences/array/array.cons/initialization.pass.cpp
@@ -28,7 +28,10 @@ struct test_initialization {
// Before C++20, default initialization doesn't work inside constexpr for
// trivially default constructible types. This only apply to non-empty arrays,
// since empty arrays don't hold an element of type T.
- if (TEST_STD_AT_LEAST_20_OR_RUNTIME_EVALUATED || !std::is_trivially_default_constructible<T>::value) {
+#if TEST_STD_VER < 20
+ if (!TEST_IS_CONSTANT_EVALUATED || !std::is_trivially_default_constructible<T>::value)
+#endif
+ {
std::array<T, 1> a1; (void)a1;
std::array<T, 2> a2; (void)a2;
std::array<T, 3> a3; (void)a3;
|
|
✅ With the latest revision this PR passed the C/C++ code formatter. |
libcxx/test/std/containers/sequences/array/array.cons/initialization.pass.cpp
Outdated
Show resolved
Hide resolved
Co-authored-by: Louis Dionne <ldionne.2@gmail.com>
|
Merged as all checks passed, except for a surely-unrelated XPASS in one configuration of |
This fixes MSVC warning C4127: conditional expression is constant.
Testing
TEST_STD_AT_LEAST_20_OR_RUNTIME_EVALUATEDby itself doesn't emit this warning, but the condition here is more complicated. I'm expanding the macro and mechanically simplifying the resulting code.(Yeah, this warning is often annoying, and I introduced
TEST_STD_AT_LEAST_20_OR_RUNTIME_EVALUATEDto avoid this warning elsewhere, so it's disappointing that it doesn't make the compiler happy here. If this change is undesirable, I can replace it withADDITIONAL_COMPILE_FLAGS(cl-style-warnings), but ideally I'd like to avoid having to suppress it.)