Skip to content

Conversation

@StephanTLavavej
Copy link
Member

Found while running libc++'s test suite with MSVC's STL.

  • In escaped_output.unicode.pass.cpp, replace _LIBCPP_SHORT_WCHAR with TEST_SHORT_WCHAR.
  • In msvc_stdlib_force_include.h, define TEST_SHORT_WCHAR.

…TEST_SHORT_WCHAR.

libcxx/test/support/test_macros.h performs this mapping. This was the only test that was directly using the _LIBCPP macro.
@StephanTLavavej StephanTLavavej requested a review from a team as a code owner December 10, 2023 02:03
@llvmbot llvmbot added the libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi. label Dec 10, 2023
@llvmbot
Copy link
Member

llvmbot commented Dec 10, 2023

@llvm/pr-subscribers-libcxx

Author: Stephan T. Lavavej (StephanTLavavej)

Changes

Found while running libc++'s test suite with MSVC's STL.

  • In escaped_output.unicode.pass.cpp, replace _LIBCPP_SHORT_WCHAR with TEST_SHORT_WCHAR.
  • In msvc_stdlib_force_include.h, define TEST_SHORT_WCHAR.

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

2 Files Affected:

  • (modified) libcxx/test/std/utilities/format/format.functions/escaped_output.unicode.pass.cpp (+6-6)
  • (modified) libcxx/test/support/msvc_stdlib_force_include.h (+2)
diff --git a/libcxx/test/std/utilities/format/format.functions/escaped_output.unicode.pass.cpp b/libcxx/test/std/utilities/format/format.functions/escaped_output.unicode.pass.cpp
index 5c6f86f742baa..23b26722d7be7 100644
--- a/libcxx/test/std/utilities/format/format.functions/escaped_output.unicode.pass.cpp
+++ b/libcxx/test/std/utilities/format/format.functions/escaped_output.unicode.pass.cpp
@@ -515,7 +515,7 @@ static void test_ill_formed_utf8() {
 }
 
 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
-#  ifdef _LIBCPP_SHORT_WCHAR
+#  ifdef TEST_SHORT_WCHAR
 static void test_ill_formed_utf16() {
   using namespace std::literals;
 
@@ -543,7 +543,7 @@ static void test_ill_formed_utf16() {
               L"\xdbff"
               "a");
 }
-#  else // _LIBCPP_SHORT_WCHAR
+#  else // TEST_SHORT_WCHAR
 static void test_ill_formed_utf32() {
   using namespace std::literals;
 
@@ -552,7 +552,7 @@ static void test_ill_formed_utf32() {
   test_format(LR"("\x{ffffffff}")"sv, L"{:?}", L"\xffffffff"); // largest encoded code point
 }
 
-#  endif // _LIBCPP_SHORT_WCHAR
+#  endif // TEST_SHORT_WCHAR
 #endif   // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**) {
@@ -563,11 +563,11 @@ int main(int, char**) {
 
   test_ill_formed_utf8();
 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
-#  ifdef _LIBCPP_SHORT_WCHAR
+#  ifdef TEST_SHORT_WCHAR
   test_ill_formed_utf16();
-#  else  // _LIBCPP_SHORT_WCHAR
+#  else  // TEST_SHORT_WCHAR
   test_ill_formed_utf32();
-#  endif // _LIBCPP_SHORT_WCHAR
+#  endif // TEST_SHORT_WCHAR
 #endif   // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
diff --git a/libcxx/test/support/msvc_stdlib_force_include.h b/libcxx/test/support/msvc_stdlib_force_include.h
index b5ba33bd281c0..5742bbf4f5572 100644
--- a/libcxx/test/support/msvc_stdlib_force_include.h
+++ b/libcxx/test/support/msvc_stdlib_force_include.h
@@ -100,6 +100,8 @@ const AssertionDialogAvoider assertion_dialog_avoider{};
 #  define TEST_STD_VER 14
 #endif
 
+#define TEST_SHORT_WCHAR
+
 #define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST
 
 #ifdef __clang__

Copy link
Member

@mordante mordante left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, LGTM!

@StephanTLavavej
Copy link
Member Author

Thanks! I'm going to go ahead and merge this - the failing checks are all unrelated sporadic failures/timeouts, or the known failure that I just fixed. One stage3 generic-msan check has been queued for almost 10 hours and I don't think we need it here for this very low-risk change.

@StephanTLavavej StephanTLavavej merged commit 69a10e0 into llvm:main Dec 10, 2023
@StephanTLavavej StephanTLavavej deleted the stl-22-test-short-wchar branch December 10, 2023 15:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants