STL_MSFT created this revision.

[libcxx] [test] Avoid P0138R2, direct-list-init of fixed enums from integers.

This C++17 Core Language feature isn't necessary when testing std::byte.
It's a minor convenience, but it limits test coverage to very new compilers.

(I encountered this because C1XX currently has a bug in this feature, and our 
Clang/C2 is still 3.8 and missing this feature. But these tests had UNSUPPORTED 
comments knocking out several versions of Clang, so the impact isn't just 
limited to us.)


https://reviews.llvm.org/D32386

Files:
  test/std/language.support/support.types/byteops/and.assign.pass.cpp
  test/std/language.support/support.types/byteops/and.pass.cpp
  test/std/language.support/support.types/byteops/lshift.assign.pass.cpp
  test/std/language.support/support.types/byteops/lshift.fail.cpp
  test/std/language.support/support.types/byteops/lshift.pass.cpp
  test/std/language.support/support.types/byteops/not.pass.cpp
  test/std/language.support/support.types/byteops/or.assign.pass.cpp
  test/std/language.support/support.types/byteops/or.pass.cpp
  test/std/language.support/support.types/byteops/rshift.assign.pass.cpp
  test/std/language.support/support.types/byteops/rshift.fail.cpp
  test/std/language.support/support.types/byteops/rshift.pass.cpp
  test/std/language.support/support.types/byteops/to_integer.fail.cpp
  test/std/language.support/support.types/byteops/to_integer.pass.cpp
  test/std/language.support/support.types/byteops/xor.assign.pass.cpp
  test/std/language.support/support.types/byteops/xor.pass.cpp

Index: test/std/language.support/support.types/byteops/xor.pass.cpp
===================================================================
--- test/std/language.support/support.types/byteops/xor.pass.cpp
+++ test/std/language.support/support.types/byteops/xor.pass.cpp
@@ -11,16 +11,13 @@
 #include <test_macros.h>
 
 // UNSUPPORTED: c++98, c++03, c++11, c++14
-// The following compilers don't like "std::byte b1{1}"
-// UNSUPPORTED: clang-3.5, clang-3.6, clang-3.7, clang-3.8
-// UNSUPPORTED: apple-clang-6, apple-clang-7, apple-clang-8.0
 
 // constexpr byte operator^(byte l, byte r) noexcept;
 
 int main () {
-	constexpr std::byte b1{1};
-	constexpr std::byte b8{8};
-	constexpr std::byte b9{9};
+	constexpr std::byte b1{static_cast<std::byte>(1)};
+	constexpr std::byte b8{static_cast<std::byte>(8)};
+	constexpr std::byte b9{static_cast<std::byte>(9)};
 
 	static_assert(noexcept(b1 ^ b8), "" );
 
Index: test/std/language.support/support.types/byteops/xor.assign.pass.cpp
===================================================================
--- test/std/language.support/support.types/byteops/xor.assign.pass.cpp
+++ test/std/language.support/support.types/byteops/xor.assign.pass.cpp
@@ -11,9 +11,6 @@
 #include <test_macros.h>
 
 // UNSUPPORTED: c++98, c++03, c++11, c++14
-// The following compilers don't like "std::byte b1{1}"
-// UNSUPPORTED: clang-3.5, clang-3.6, clang-3.7, clang-3.8
-// UNSUPPORTED: apple-clang-6, apple-clang-7, apple-clang-8.0
 
 // constexpr byte& operator ^=(byte l, byte r) noexcept;
 
@@ -26,9 +23,9 @@
 
 int main () {
 	std::byte b;  // not constexpr, just used in noexcept check
-	constexpr std::byte b1{1};
-	constexpr std::byte b8{8};
-	constexpr std::byte b9{9};
+	constexpr std::byte b1{static_cast<std::byte>(1)};
+	constexpr std::byte b8{static_cast<std::byte>(8)};
+	constexpr std::byte b9{static_cast<std::byte>(9)};
 
 	static_assert(noexcept(b ^= b), "" );
 
Index: test/std/language.support/support.types/byteops/to_integer.pass.cpp
===================================================================
--- test/std/language.support/support.types/byteops/to_integer.pass.cpp
+++ test/std/language.support/support.types/byteops/to_integer.pass.cpp
@@ -11,18 +11,15 @@
 #include <test_macros.h>
 
 // UNSUPPORTED: c++98, c++03, c++11, c++14
-// The following compilers don't like "std::byte b1{1}"
-// UNSUPPORTED: clang-3.5, clang-3.6, clang-3.7, clang-3.8
-// UNSUPPORTED: apple-clang-6, apple-clang-7, apple-clang-8.0
 
 // template <class IntegerType>
 //    constexpr IntegerType to_integer(byte b) noexcept;
 // This function shall not participate in overload resolution unless 
 //   is_integral_v<IntegerType> is true.
 
 int main () {
-	constexpr std::byte b1{1};
-	constexpr std::byte b3{3};
+	constexpr std::byte b1{static_cast<std::byte>(1)};
+	constexpr std::byte b3{static_cast<std::byte>(3)};
 	
 	static_assert(noexcept(std::to_integer<int>(b1)), "" );
 	static_assert(std::is_same<int, decltype(std::to_integer<int>(b1))>::value, "" );
Index: test/std/language.support/support.types/byteops/to_integer.fail.cpp
===================================================================
--- test/std/language.support/support.types/byteops/to_integer.fail.cpp
+++ test/std/language.support/support.types/byteops/to_integer.fail.cpp
@@ -11,16 +11,13 @@
 #include <test_macros.h>
 
 // UNSUPPORTED: c++98, c++03, c++11, c++14
-// The following compilers don't like "std::byte b1{1}"
-// UNSUPPORTED: clang-3.5, clang-3.6, clang-3.7, clang-3.8
-// UNSUPPORTED: apple-clang-6, apple-clang-7, apple-clang-8.0
 
 // template <class IntegerType>
 //    constexpr IntegerType to_integer(byte b) noexcept;
 // This function shall not participate in overload resolution unless 
 //   is_integral_v<IntegerType> is true.
 
 int main () {
-	constexpr std::byte b1{1};
+	constexpr std::byte b1{static_cast<std::byte>(1)};
 	auto f = std::to_integer<float>(b1);
 }
Index: test/std/language.support/support.types/byteops/rshift.pass.cpp
===================================================================
--- test/std/language.support/support.types/byteops/rshift.pass.cpp
+++ test/std/language.support/support.types/byteops/rshift.pass.cpp
@@ -11,9 +11,6 @@
 #include <test_macros.h>
 
 // UNSUPPORTED: c++98, c++03, c++11, c++14
-// The following compilers don't like "std::byte b1{1}"
-// UNSUPPORTED: clang-3.5, clang-3.6, clang-3.7, clang-3.8
-// UNSUPPORTED: apple-clang-6, apple-clang-7, apple-clang-8.0
 
 // template <class IntegerType>
 //    constexpr byte operator <<(byte b, IntegerType shift) noexcept;
@@ -27,8 +24,8 @@
 
 
 int main () {
-	constexpr std::byte b100{100};
-	constexpr std::byte b115{115};
+	constexpr std::byte b100{static_cast<std::byte>(100)};
+	constexpr std::byte b115{static_cast<std::byte>(115)};
 	
 	static_assert(noexcept(b100 << 2), "" );
 
Index: test/std/language.support/support.types/byteops/rshift.fail.cpp
===================================================================
--- test/std/language.support/support.types/byteops/rshift.fail.cpp
+++ test/std/language.support/support.types/byteops/rshift.fail.cpp
@@ -11,16 +11,13 @@
 #include <test_macros.h>
 
 // UNSUPPORTED: c++98, c++03, c++11, c++14
-// The following compilers don't like "std::byte b1{1}"
-// UNSUPPORTED: clang-3.5, clang-3.6, clang-3.7, clang-3.8
-// UNSUPPORTED: apple-clang-6, apple-clang-7, apple-clang-8.0
 
 // template <class IntegerType>
 //    constexpr byte operator >>(byte b, IntegerType shift) noexcept;
 // These functions shall not participate in overload resolution unless 
 //   is_integral_v<IntegerType> is true.
 
 int main () {
-	constexpr std::byte b1{1};
+	constexpr std::byte b1{static_cast<std::byte>(1)};
 	constexpr std::byte b2 = b1 >> 2.0f;
 }
Index: test/std/language.support/support.types/byteops/rshift.assign.pass.cpp
===================================================================
--- test/std/language.support/support.types/byteops/rshift.assign.pass.cpp
+++ test/std/language.support/support.types/byteops/rshift.assign.pass.cpp
@@ -11,9 +11,6 @@
 #include <test_macros.h>
 
 // UNSUPPORTED: c++98, c++03, c++11, c++14
-// The following compilers don't like "std::byte b1{1}"
-// UNSUPPORTED: clang-3.5, clang-3.6, clang-3.7, clang-3.8
-// UNSUPPORTED: apple-clang-6, apple-clang-7, apple-clang-8.0
 
 // template <class IntegerType>
 //   constexpr byte& operator>>=(byte& b, IntegerType shift) noexcept;
@@ -28,8 +25,8 @@
 
 int main () {
 	std::byte b;  // not constexpr, just used in noexcept check
-	constexpr std::byte b16{16};
-	constexpr std::byte b192{192};
+	constexpr std::byte b16{static_cast<std::byte>(16)};
+	constexpr std::byte b192{static_cast<std::byte>(192)};
 
 	static_assert(noexcept(b >>= 2), "" );
 
Index: test/std/language.support/support.types/byteops/or.pass.cpp
===================================================================
--- test/std/language.support/support.types/byteops/or.pass.cpp
+++ test/std/language.support/support.types/byteops/or.pass.cpp
@@ -11,16 +11,13 @@
 #include <test_macros.h>
 
 // UNSUPPORTED: c++98, c++03, c++11, c++14
-// The following compilers don't like "std::byte b1{1}"
-// UNSUPPORTED: clang-3.5, clang-3.6, clang-3.7, clang-3.8
-// UNSUPPORTED: apple-clang-6, apple-clang-7, apple-clang-8.0
 
 // constexpr byte operator|(byte l, byte r) noexcept;
 
 int main () {
-	constexpr std::byte b1{1};
-	constexpr std::byte b2{2};
-	constexpr std::byte b8{8};
+	constexpr std::byte b1{static_cast<std::byte>(1)};
+	constexpr std::byte b2{static_cast<std::byte>(2)};
+	constexpr std::byte b8{static_cast<std::byte>(8)};
 
 	static_assert(noexcept(b1 | b2), "" );
 
Index: test/std/language.support/support.types/byteops/or.assign.pass.cpp
===================================================================
--- test/std/language.support/support.types/byteops/or.assign.pass.cpp
+++ test/std/language.support/support.types/byteops/or.assign.pass.cpp
@@ -11,9 +11,6 @@
 #include <test_macros.h>
 
 // UNSUPPORTED: c++98, c++03, c++11, c++14
-// The following compilers don't like "std::byte b1{1}"
-// UNSUPPORTED: clang-3.5, clang-3.6, clang-3.7, clang-3.8
-// UNSUPPORTED: apple-clang-6, apple-clang-7, apple-clang-8.0
 
 // constexpr byte& operator |=(byte l, byte r) noexcept;
 
@@ -26,9 +23,9 @@
 
 int main () {
 	std::byte b;  // not constexpr, just used in noexcept check
-	constexpr std::byte b1{1};
-	constexpr std::byte b2{2};
-	constexpr std::byte b8{8};
+	constexpr std::byte b1{static_cast<std::byte>(1)};
+	constexpr std::byte b2{static_cast<std::byte>(2)};
+	constexpr std::byte b8{static_cast<std::byte>(8)};
 
 	static_assert(noexcept(b |= b), "" );
 
Index: test/std/language.support/support.types/byteops/not.pass.cpp
===================================================================
--- test/std/language.support/support.types/byteops/not.pass.cpp
+++ test/std/language.support/support.types/byteops/not.pass.cpp
@@ -11,16 +11,13 @@
 #include <test_macros.h>
 
 // UNSUPPORTED: c++98, c++03, c++11, c++14
-// The following compilers don't like "std::byte b1{1}"
-// UNSUPPORTED: clang-3.5, clang-3.6, clang-3.7, clang-3.8
-// UNSUPPORTED: apple-clang-6, apple-clang-7, apple-clang-8.0
 
 // constexpr byte operator~(byte b) noexcept;
 
 int main () {
-	constexpr std::byte b1{1};
-	constexpr std::byte b2{2};
-	constexpr std::byte b8{8};
+	constexpr std::byte b1{static_cast<std::byte>(1)};
+	constexpr std::byte b2{static_cast<std::byte>(2)};
+	constexpr std::byte b8{static_cast<std::byte>(8)};
 
 	static_assert(noexcept(~b1), "" );
 
Index: test/std/language.support/support.types/byteops/lshift.pass.cpp
===================================================================
--- test/std/language.support/support.types/byteops/lshift.pass.cpp
+++ test/std/language.support/support.types/byteops/lshift.pass.cpp
@@ -11,18 +11,15 @@
 #include <test_macros.h>
 
 // UNSUPPORTED: c++98, c++03, c++11, c++14
-// The following compilers don't like "std::byte b1{1}"
-// UNSUPPORTED: clang-3.5, clang-3.6, clang-3.7, clang-3.8
-// UNSUPPORTED: apple-clang-6, apple-clang-7, apple-clang-8.0
 
 // template <class IntegerType>
 //    constexpr byte operator <<(byte b, IntegerType shift) noexcept;
 // These functions shall not participate in overload resolution unless 
 //   is_integral_v<IntegerType> is true.
 
 int main () {
-	constexpr std::byte b1{1};
-	constexpr std::byte b3{3};
+	constexpr std::byte b1{static_cast<std::byte>(1)};
+	constexpr std::byte b3{static_cast<std::byte>(3)};
 	
 	static_assert(noexcept(b3 << 2), "" );
 
Index: test/std/language.support/support.types/byteops/lshift.fail.cpp
===================================================================
--- test/std/language.support/support.types/byteops/lshift.fail.cpp
+++ test/std/language.support/support.types/byteops/lshift.fail.cpp
@@ -11,16 +11,13 @@
 #include <test_macros.h>
 
 // UNSUPPORTED: c++98, c++03, c++11, c++14
-// The following compilers don't like "std::byte b1{1}"
-// UNSUPPORTED: clang-3.5, clang-3.6, clang-3.7, clang-3.8
-// UNSUPPORTED: apple-clang-6, apple-clang-7, apple-clang-8.0
 
 // template <class IntegerType>
 //    constexpr byte operator <<(byte b, IntegerType shift) noexcept;
 // These functions shall not participate in overload resolution unless 
 //   is_integral_v<IntegerType> is true.
 
 int main () {
-	constexpr std::byte b1{1};
+	constexpr std::byte b1{static_cast<std::byte>(1)};
 	constexpr std::byte b2 = b1 << 2.0f;
 }
Index: test/std/language.support/support.types/byteops/lshift.assign.pass.cpp
===================================================================
--- test/std/language.support/support.types/byteops/lshift.assign.pass.cpp
+++ test/std/language.support/support.types/byteops/lshift.assign.pass.cpp
@@ -11,9 +11,6 @@
 #include <test_macros.h>
 
 // UNSUPPORTED: c++98, c++03, c++11, c++14
-// The following compilers don't like "std::byte b1{1}"
-// UNSUPPORTED: clang-3.5, clang-3.6, clang-3.7, clang-3.8
-// UNSUPPORTED: apple-clang-6, apple-clang-7, apple-clang-8.0
 
 // template <class IntegerType>
 //   constexpr byte& operator<<=(byte& b, IntegerType shift) noexcept;
@@ -28,8 +25,8 @@
 
 int main () {
 	std::byte b;  // not constexpr, just used in noexcept check
-	constexpr std::byte b2{2};
-	constexpr std::byte b3{3};
+	constexpr std::byte b2{static_cast<std::byte>(2)};
+	constexpr std::byte b3{static_cast<std::byte>(3)};
 
 	static_assert(noexcept(b <<= 2), "" );
 	
Index: test/std/language.support/support.types/byteops/and.pass.cpp
===================================================================
--- test/std/language.support/support.types/byteops/and.pass.cpp
+++ test/std/language.support/support.types/byteops/and.pass.cpp
@@ -11,16 +11,13 @@
 #include <test_macros.h>
 
 // UNSUPPORTED: c++98, c++03, c++11, c++14
-// The following compilers don't like "std::byte b1{1}"
-// UNSUPPORTED: clang-3.5, clang-3.6, clang-3.7, clang-3.8
-// UNSUPPORTED: apple-clang-6, apple-clang-7, apple-clang-8.0
 
 // constexpr byte operator&(byte l, byte r) noexcept;
 
 int main () {
-	constexpr std::byte b1{1};
-	constexpr std::byte b8{8};
-	constexpr std::byte b9{9};
+	constexpr std::byte b1{static_cast<std::byte>(1)};
+	constexpr std::byte b8{static_cast<std::byte>(8)};
+	constexpr std::byte b9{static_cast<std::byte>(9)};
 
 	static_assert(noexcept(b1 & b8), "" );
 
Index: test/std/language.support/support.types/byteops/and.assign.pass.cpp
===================================================================
--- test/std/language.support/support.types/byteops/and.assign.pass.cpp
+++ test/std/language.support/support.types/byteops/and.assign.pass.cpp
@@ -11,9 +11,6 @@
 #include <test_macros.h>
 
 // UNSUPPORTED: c++98, c++03, c++11, c++14
-// The following compilers don't like "std::byte b1{1}"
-// UNSUPPORTED: clang-3.5, clang-3.6, clang-3.7, clang-3.8
-// UNSUPPORTED: apple-clang-6, apple-clang-7, apple-clang-8.0
 
 // constexpr byte& operator &=(byte l, byte r) noexcept;
 
@@ -26,9 +23,9 @@
 
 int main () {
 	std::byte b;  // not constexpr, just used in noexcept check
-	constexpr std::byte b1{1};
-	constexpr std::byte b8{8};
-	constexpr std::byte b9{9};
+	constexpr std::byte b1{static_cast<std::byte>(1)};
+	constexpr std::byte b8{static_cast<std::byte>(8)};
+	constexpr std::byte b9{static_cast<std::byte>(9)};
 
 	static_assert(noexcept(b &= b), "" );
 
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D32386: [libcxx... Stephan T. Lavavej via Phabricator via cfe-commits

Reply via email to