[libc++] Move the #error message for no localization to <locale.h>
authorLouis Dionne <ldionne@apple.com>
Wed, 28 Oct 2020 13:26:56 +0000 (09:26 -0400)
committerLouis Dionne <ldionne@apple.com>
Wed, 28 Oct 2020 13:49:37 +0000 (09:49 -0400)
<locale.h> is lower level than <__locale>, so that's where we want the
error to live for systems that don't provide localization support.

libcxx/include/__locale
libcxx/include/locale.h
libcxx/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp
libcxx/test/libcxx/depr/depr.c.headers/locale_h.pass.cpp
libcxx/test/libcxx/double_include.sh.cpp
libcxx/test/libcxx/include_as_c.sh.cpp
libcxx/test/libcxx/min_max_macros.compile.pass.cpp
libcxx/test/libcxx/no_assert_include.compile.pass.cpp
libcxx/test/std/depr/depr.c.headers/locale_h.pass.cpp

index 90be8bbe0eefd7ac0c13914cacc3bb9fc501c21e..63508bd848874547ab86ef2fa481c41f3fd945f3 100644 (file)
 #define _LIBCPP___LOCALE
 
 #include <__config>
-
-#if defined(_LIBCPP_HAS_NO_LOCALIZATION)
-#   error "Localization is not supported by this configuration of libc++"
-#endif
-
 #include <string>
 #include <memory>
 #include <utility>
index a21ee385c331e0e906561095a0a41c71e5c92c66..81cfcee57fd7356472618f21778b5b5e66206eb6 100644 (file)
@@ -35,8 +35,12 @@ Functions:
 
 #include <__config>
 
+#if defined(_LIBCPP_HAS_NO_LOCALIZATION)
+#   error "Localization is not supported by this configuration of libc++"
+#endif
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
-#pragma GCC system_header
+#   pragma GCC system_header
 #endif
 
 #include_next <locale.h>
index 24a104f5edd43206406cf967220cc8420b3ad159..acfcc90f873fb364f91c73699a74df34f60f0588 100644 (file)
@@ -10,6 +10,8 @@
 // is ill-formed (no diagnostic required), per [using.headers]p3, but we permit
 // it as an extension.
 
+#include <__config>
+
 extern "C" {
 #include <assert.h>
 // complex.h is not supported in extern "C".
@@ -20,7 +22,9 @@ extern "C" {
 #include <inttypes.h>
 #include <iso646.h>
 #include <limits.h>
-#include <locale.h>
+#ifndef _LIBCPP_HAS_NO_LOCALIZATION
+#   include <locale.h>
+#endif
 #include <math.h>
 #include <setjmp.h>
 #include <signal.h>
index ea117f6b27b33846ecf9ae575f2b20bd35e7d0b0..d2a438808cee666b5d95f74b697949824b33a95d 100644 (file)
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+// UNSUPPORTED: libcpp-has-no-localization
+
 // <locale.h>
 
 #include <locale.h>
index 838437130176a2726a41a69bb579c71a1f99cbc3..ba571e1d62834966c6af20220ff6d90c4605982c 100644 (file)
@@ -47,7 +47,6 @@
 #include <cinttypes>
 #include <ciso646>
 #include <climits>
-#include <clocale>
 #include <cmath>
 #include <compare>
 #include <complex>
@@ -87,7 +86,6 @@
 #include <limits>
 #include <limits.h>
 #include <list>
-#include <locale.h>
 #include <map>
 #include <math.h>
 #include <memory>
 #include <wctype.h>
 
 #ifndef _LIBCPP_HAS_NO_LOCALIZATION
+#   include <clocale>
 #   include <codecvt>
 #   include <fstream>
 #   include <iomanip>
 #   include <ios>
 #   include <iostream>
 #   include <istream>
+#   include <locale.h>
 #   include <locale>
 #   include <ostream>
 #   include <regex>
index 8a57e389dc2f4125f37b52d536c353b1f763421a..04b044bee8753c98d3a3a8fe640be343d33d1eca 100644 (file)
@@ -17,6 +17,8 @@
 
 // RUN: %{cxx} -c -xc %s -fsyntax-only %{flags} %{compile_flags} -std=c99
 
+#include <__config>
+
 #include <complex.h>
 #include <ctype.h>
 #include <errno.h>
@@ -24,7 +26,9 @@
 #include <float.h>
 #include <inttypes.h>
 #include <limits.h>
-#include <locale.h>
+#ifndef _LIBCPP_HAS_NO_LOCALIZATION
+#   include <locale.h>
+#endif
 #include <math.h>
 #include <setjmp.h>
 #include <stdbool.h>
index 3347f6f9f6eaeb5266b24ef66bbf0a772133aebe..7c1956b7476f9b5f4bec6c46ff6ebbc0b88c7e28 100644 (file)
@@ -57,8 +57,6 @@ TEST_MACROS();
 TEST_MACROS();
 #include <climits>
 TEST_MACROS();
-#include <clocale>
-TEST_MACROS();
 #include <cmath>
 TEST_MACROS();
 #include <complex>
@@ -127,8 +125,6 @@ TEST_MACROS();
 TEST_MACROS();
 #include <list>
 TEST_MACROS();
-#include <locale.h>
-TEST_MACROS();
 #include <map>
 TEST_MACROS();
 #include <math.h>
@@ -217,6 +213,8 @@ TEST_MACROS();
 TEST_MACROS();
 
 #ifndef _LIBCPP_HAS_NO_LOCALIZATION
+#   include <clocale>
+    TEST_MACROS();
 #   include <codecvt>
     TEST_MACROS();
 #   include <fstream>
@@ -231,6 +229,8 @@ TEST_MACROS();
     TEST_MACROS();
 #   include <locale>
     TEST_MACROS();
+#   include <locale.h>
+    TEST_MACROS();
 #   include <ostream>
     TEST_MACROS();
 #   include <regex>
index 182a1f31777d6975ea0c245528e7723ddc6d39dd..9ad87e0184ae6724eb6c1910c4073e57466c187d 100644 (file)
@@ -37,7 +37,6 @@
 #include <cinttypes>
 #include <ciso646>
 #include <climits>
-#include <clocale>
 #include <cmath>
 #include <compare>
 #include <complex>
@@ -76,7 +75,6 @@
 #include <limits>
 #include <limits.h>
 #include <list>
-#include <locale.h>
 #include <map>
 #include <math.h>
 #include <memory>
 #include <wctype.h>
 
 #ifndef _LIBCPP_HAS_NO_LOCALIZATION
+#   include <clocale>
 #   include <codecvt>
 #   include <fstream>
 #   include <iomanip>
 #   include <iostream>
 #   include <istream>
 #   include <locale>
+#   include <locale.h>
 #   include <ostream>
 #   include <regex>
 #   include <sstream>
index 51af3aebc4d5f4d1a955c98ad8967749fa2a3f7b..00e6f03113acaedf5f04d50d7f3ed29ffdb8a8ca 100644 (file)
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+// UNSUPPORTED: libcpp-has-no-localization
+
 // <locale.h>
 
 #include <locale.h>
@@ -47,5 +49,5 @@ int main(int, char**)
     static_assert((std::is_same<decltype(setlocale(0, "")), char*>::value), "");
     static_assert((std::is_same<decltype(localeconv()), lconv*>::value), "");
 
-  return 0;
+    return 0;
 }