[libcxx-commits] [libcxx] 91336a0 - [libc++] Move the #error message for no localization to <locale.h>
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Oct 28 06:49:53 PDT 2020
Author: Louis Dionne
Date: 2020-10-28T09:49:37-04:00
New Revision: 91336a0c619f26be35b1dd1c9480a42c4aacb21f
URL: https://github.com/llvm/llvm-project/commit/91336a0c619f26be35b1dd1c9480a42c4aacb21f
DIFF: https://github.com/llvm/llvm-project/commit/91336a0c619f26be35b1dd1c9480a42c4aacb21f.diff
LOG: [libc++] Move the #error message for no localization to <locale.h>
<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.
Added:
Modified:
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
Removed:
################################################################################
diff --git a/libcxx/include/__locale b/libcxx/include/__locale
index 90be8bbe0eef..63508bd84887 100644
--- a/libcxx/include/__locale
+++ b/libcxx/include/__locale
@@ -11,11 +11,6 @@
#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>
diff --git a/libcxx/include/locale.h b/libcxx/include/locale.h
index a21ee385c331..81cfcee57fd7 100644
--- a/libcxx/include/locale.h
+++ b/libcxx/include/locale.h
@@ -35,8 +35,12 @@
#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>
diff --git a/libcxx/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp b/libcxx/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp
index 24a104f5edd4..acfcc90f873f 100644
--- a/libcxx/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp
+++ b/libcxx/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp
@@ -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>
diff --git a/libcxx/test/libcxx/depr/depr.c.headers/locale_h.pass.cpp b/libcxx/test/libcxx/depr/depr.c.headers/locale_h.pass.cpp
index ea117f6b27b3..d2a438808cee 100644
--- a/libcxx/test/libcxx/depr/depr.c.headers/locale_h.pass.cpp
+++ b/libcxx/test/libcxx/depr/depr.c.headers/locale_h.pass.cpp
@@ -6,6 +6,8 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: libcpp-has-no-localization
+
// <locale.h>
#include <locale.h>
diff --git a/libcxx/test/libcxx/double_include.sh.cpp b/libcxx/test/libcxx/double_include.sh.cpp
index 838437130176..ba571e1d6283 100644
--- a/libcxx/test/libcxx/double_include.sh.cpp
+++ b/libcxx/test/libcxx/double_include.sh.cpp
@@ -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>
@@ -138,12 +136,14 @@
#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>
diff --git a/libcxx/test/libcxx/include_as_c.sh.cpp b/libcxx/test/libcxx/include_as_c.sh.cpp
index 8a57e389dc2f..04b044bee875 100644
--- a/libcxx/test/libcxx/include_as_c.sh.cpp
+++ b/libcxx/test/libcxx/include_as_c.sh.cpp
@@ -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>
diff --git a/libcxx/test/libcxx/min_max_macros.compile.pass.cpp b/libcxx/test/libcxx/min_max_macros.compile.pass.cpp
index 3347f6f9f6ea..7c1956b7476f 100644
--- a/libcxx/test/libcxx/min_max_macros.compile.pass.cpp
+++ b/libcxx/test/libcxx/min_max_macros.compile.pass.cpp
@@ -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>
diff --git a/libcxx/test/libcxx/no_assert_include.compile.pass.cpp b/libcxx/test/libcxx/no_assert_include.compile.pass.cpp
index 182a1f31777d..9ad87e0184ae 100644
--- a/libcxx/test/libcxx/no_assert_include.compile.pass.cpp
+++ b/libcxx/test/libcxx/no_assert_include.compile.pass.cpp
@@ -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>
@@ -126,6 +124,7 @@
#include <wctype.h>
#ifndef _LIBCPP_HAS_NO_LOCALIZATION
+# include <clocale>
# include <codecvt>
# include <fstream>
# include <iomanip>
@@ -133,6 +132,7 @@
# include <iostream>
# include <istream>
# include <locale>
+# include <locale.h>
# include <ostream>
# include <regex>
# include <sstream>
diff --git a/libcxx/test/std/depr/depr.c.headers/locale_h.pass.cpp b/libcxx/test/std/depr/depr.c.headers/locale_h.pass.cpp
index 51af3aebc4d5..00e6f03113ac 100644
--- a/libcxx/test/std/depr/depr.c.headers/locale_h.pass.cpp
+++ b/libcxx/test/std/depr/depr.c.headers/locale_h.pass.cpp
@@ -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;
}
More information about the libcxx-commits
mailing list