[libc++] Roll up fstream support into filesystem support

LIBCXX_ENABLE_FILESYSTEM should represent whether the platform has
support for a filesystem, not just whether we support <filesystem>.
This patch slightly generalizes the setting to also encompass whether
we provide <fstream>, since that only makes sense when a filesystem is
supported.

Differential Revision: https://reviews.llvm.org/D152168
This commit is contained in:
Louis Dionne 2023-05-31 11:20:24 -07:00
parent a3a4369ea1
commit 66a562d22e
26 changed files with 53 additions and 75 deletions

View File

@ -57,7 +57,10 @@ option(LIBCXX_ENABLE_ASSERTIONS
by users in their own code regardless of this option." OFF)
option(LIBCXX_ENABLE_SHARED "Build libc++ as a shared library." ON)
option(LIBCXX_ENABLE_STATIC "Build libc++ as a static library." ON)
option(LIBCXX_ENABLE_FILESYSTEM "Build filesystem as part of the main libc++ library" ON)
option(LIBCXX_ENABLE_FILESYSTEM
"Whether to include support for parts of the library that rely on a filesystem being
available on the platform. This includes things like most parts of <filesystem> and
others like <fstream>" ON)
option(LIBCXX_INCLUDE_TESTS "Build the libc++ tests." ${LLVM_INCLUDE_TESTS})
option(LIBCXX_ENABLE_DEBUG_MODE
"Whether to build libc++ with the debug mode enabled.
@ -76,8 +79,6 @@ option(LIBCXX_ENABLE_LOCALIZATION
the C locale API (e.g. embedded). When localization is not supported,
several parts of the library will be disabled: <iostream>, <regex>, <locale>
will be completely unusable, and other parts may be only partly available." ON)
option(LIBCXX_ENABLE_FSTREAM
"Whether to include support for <fstream>." ON) # TODO: Consider rolling that into LIBCXX_ENABLE_FILESYSTEM
option(LIBCXX_ENABLE_UNICODE
"Whether to include support for Unicode in the library. Disabling Unicode can
be useful when porting to platforms that don't support UTF-8 encoding (e.g.
@ -779,10 +780,9 @@ config_define_if(LIBCXX_HAS_WIN32_THREAD_API _LIBCPP_HAS_THREAD_API_WIN32)
config_define_if(LIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY _LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL)
config_define_if(LIBCXX_HAS_MUSL_LIBC _LIBCPP_HAS_MUSL_LIBC)
config_define_if(LIBCXX_NO_VCRUNTIME _LIBCPP_NO_VCRUNTIME)
config_define_if_not(LIBCXX_ENABLE_FILESYSTEM _LIBCPP_HAS_NO_FILESYSTEM_LIBRARY)
config_define_if_not(LIBCXX_ENABLE_FILESYSTEM _LIBCPP_HAS_NO_FILESYSTEM)
config_define_if_not(LIBCXX_ENABLE_RANDOM_DEVICE _LIBCPP_HAS_NO_RANDOM_DEVICE)
config_define_if_not(LIBCXX_ENABLE_LOCALIZATION _LIBCPP_HAS_NO_LOCALIZATION)
config_define_if_not(LIBCXX_ENABLE_FSTREAM _LIBCPP_HAS_NO_FSTREAM)
config_define_if_not(LIBCXX_ENABLE_UNICODE _LIBCPP_HAS_NO_UNICODE)
config_define_if_not(LIBCXX_ENABLE_WIDE_CHARACTERS _LIBCPP_HAS_NO_WIDE_CHARACTERS)
config_define_if_not(LIBCXX_ENABLE_VENDOR_AVAILABILITY_ANNOTATIONS _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS)

View File

@ -1 +0,0 @@
set(LIBCXX_ENABLE_FSTREAM OFF CACHE BOOL "")

View File

@ -153,3 +153,11 @@ Build System Changes
- Building libc++ and libc++abi for Apple platforms now requires targeting macOS 10.13 and later.
This is relevant for vendors building the libc++ shared library and for folks statically linking
libc++ into an application that has back-deployment requirements on Apple platforms.
- ``LIBCXX_ENABLE_FILESYSTEM`` now represents whether a filesystem is supported on the platform instead
of representing merely whether ``<filesystem>`` should be provided. This means that vendors building
with ``LIBCXX_ENABLE_FILESYSTEM=OFF`` will now also get ``<fstream>`` excluded from their configuration
of the library.
- ``LIBCXX_ENABLE_FSTREAM`` is not supported anymore, please use ``LIBCXX_ENABLE_FILESYSTEM=OFF`` if your
platform does not have support for a filesystem.

View File

@ -990,7 +990,7 @@ set(files
wctype.h
)
foreach(feature LIBCXX_ENABLE_FILESYSTEM LIBCXX_ENABLE_LOCALIZATION LIBCXX_ENABLE_FSTREAM LIBCXX_ENABLE_THREADS LIBCXX_ENABLE_WIDE_CHARACTERS)
foreach(feature LIBCXX_ENABLE_FILESYSTEM LIBCXX_ENABLE_LOCALIZATION LIBCXX_ENABLE_THREADS LIBCXX_ENABLE_WIDE_CHARACTERS)
if (NOT ${${feature}})
set(requires_${feature} "requires LIBCXX_CONFIGURED_WITHOUT_SUPPORT_FOR_THIS_HEADER")
endif()

View File

@ -24,10 +24,9 @@
#cmakedefine _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS
#cmakedefine _LIBCPP_NO_VCRUNTIME
#cmakedefine _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION @_LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION@
#cmakedefine _LIBCPP_HAS_NO_FILESYSTEM_LIBRARY
#cmakedefine _LIBCPP_HAS_NO_FILESYSTEM
#cmakedefine _LIBCPP_HAS_NO_RANDOM_DEVICE
#cmakedefine _LIBCPP_HAS_NO_LOCALIZATION
#cmakedefine _LIBCPP_HAS_NO_FSTREAM
#cmakedefine _LIBCPP_HAS_NO_WIDE_CHARACTERS
#cmakedefine01 _LIBCPP_ENABLE_ASSERTIONS_DEFAULT
#cmakedefine _LIBCPP_ENABLE_DEBUG_MODE

View File

@ -457,7 +457,7 @@ inline constexpr bool std::ranges::enable_view<std::filesystem::recursive_direct
// [fs.filesystem.syn]
#include <compare>
#if defined(_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY)
#if defined(_LIBCPP_HAS_NO_FILESYSTEM)
# error "The <filesystem> library is not supported since libc++ has been configured without support for a filesystem."
#endif

View File

@ -194,7 +194,7 @@ typedef basic_fstream<wchar_t> wfstream;
#include <typeinfo>
#include <version>
#if !defined(_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY)
#if !defined(_LIBCPP_HAS_NO_FILESYSTEM)
# include <filesystem>
#endif
@ -209,7 +209,7 @@ _LIBCPP_PUSH_MACROS
# define _LIBCPP_HAS_NO_OFF_T_FUNCTIONS
#endif
#if !defined(_LIBCPP_HAS_NO_FSTREAM)
#if !defined(_LIBCPP_HAS_NO_FILESYSTEM)
_LIBCPP_BEGIN_NAMESPACE_STD
@ -245,7 +245,7 @@ public:
_LIBCPP_INLINE_VISIBILITY
basic_filebuf* open(const string& __s, ios_base::openmode __mode);
#if _LIBCPP_STD_VER >= 17 && !defined(_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY)
#if _LIBCPP_STD_VER >= 17
_LIBCPP_AVAILABILITY_FILESYSTEM _LIBCPP_INLINE_VISIBILITY
basic_filebuf* open(const _VSTD_FS::path& __p, ios_base::openmode __mode) {
return open(__p.c_str(), __mode);
@ -1168,7 +1168,7 @@ public:
#endif
_LIBCPP_INLINE_VISIBILITY
explicit basic_ifstream(const string& __s, ios_base::openmode __mode = ios_base::in);
#if _LIBCPP_STD_VER >= 17 && !defined(_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY)
#if _LIBCPP_STD_VER >= 17
_LIBCPP_AVAILABILITY_FILESYSTEM _LIBCPP_INLINE_VISIBILITY
explicit basic_ifstream(const filesystem::path& __p, ios_base::openmode __mode = ios_base::in)
: basic_ifstream(__p.c_str(), __mode) {}
@ -1189,7 +1189,7 @@ public:
void open(const wchar_t* __s, ios_base::openmode __mode = ios_base::in);
#endif
void open(const string& __s, ios_base::openmode __mode = ios_base::in);
#if _LIBCPP_STD_VER >= 17 && !defined(_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY)
#if _LIBCPP_STD_VER >= 17
_LIBCPP_AVAILABILITY_FILESYSTEM _LIBCPP_INLINE_VISIBILITY
void open(const filesystem::path& __p,
ios_base::openmode __mode = ios_base::in) {
@ -1369,7 +1369,7 @@ public:
_LIBCPP_INLINE_VISIBILITY
explicit basic_ofstream(const string& __s, ios_base::openmode __mode = ios_base::out);
#if _LIBCPP_STD_VER >= 17 && !defined(_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY)
#if _LIBCPP_STD_VER >= 17
_LIBCPP_AVAILABILITY_FILESYSTEM _LIBCPP_INLINE_VISIBILITY
explicit basic_ofstream(const filesystem::path& __p, ios_base::openmode __mode = ios_base::out)
: basic_ofstream(__p.c_str(), __mode) {}
@ -1392,7 +1392,7 @@ public:
#endif
void open(const string& __s, ios_base::openmode __mode = ios_base::out);
#if _LIBCPP_STD_VER >= 17 && !defined(_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY)
#if _LIBCPP_STD_VER >= 17
_LIBCPP_AVAILABILITY_FILESYSTEM _LIBCPP_INLINE_VISIBILITY
void open(const filesystem::path& __p, ios_base::openmode __mode = ios_base::out)
{ return open(__p.c_str(), __mode); }
@ -1570,7 +1570,7 @@ public:
_LIBCPP_INLINE_VISIBILITY
explicit basic_fstream(const string& __s, ios_base::openmode __mode = ios_base::in | ios_base::out);
#if _LIBCPP_STD_VER >= 17 && !defined(_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY)
#if _LIBCPP_STD_VER >= 17
_LIBCPP_AVAILABILITY_FILESYSTEM _LIBCPP_INLINE_VISIBILITY
explicit basic_fstream(const filesystem::path& __p, ios_base::openmode __mode = ios_base::in | ios_base::out)
: basic_fstream(__p.c_str(), __mode) {}
@ -1595,7 +1595,7 @@ public:
#endif
_LIBCPP_HIDE_FROM_ABI void open(const string& __s, ios_base::openmode __mode = ios_base::in | ios_base::out);
#if _LIBCPP_STD_VER >= 17 && !defined(_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY)
#if _LIBCPP_STD_VER >= 17
_LIBCPP_AVAILABILITY_FILESYSTEM _LIBCPP_INLINE_VISIBILITY
void open(const filesystem::path& __p, ios_base::openmode __mode = ios_base::in|ios_base::out)
{ return open(__p.c_str(), __mode); }
@ -1745,7 +1745,7 @@ extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_filebuf<char>;
_LIBCPP_END_NAMESPACE_STD
#endif // _LIBCPP_HAS_NO_FSTREAM
#endif // _LIBCPP_HAS_NO_FILESYSTEM
_LIBCPP_POP_MACROS

View File

@ -976,7 +976,7 @@ module std [system] {
}
module fstream {
@requires_LIBCXX_ENABLE_LOCALIZATION@
@requires_LIBCXX_ENABLE_FSTREAM@
@requires_LIBCXX_ENABLE_FILESYSTEM@
header "fstream"
export *
}

View File

@ -37,7 +37,7 @@ template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_stringstream<char>
template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_ostringstream<char>;
template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_istringstream<char>;
#ifndef _LIBCPP_HAS_NO_FSTREAM
#ifndef _LIBCPP_HAS_NO_FILESYSTEM
template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_ifstream<char>;
template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_ofstream<char>;
template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_filebuf<char>;

View File

@ -20,7 +20,7 @@
#include <array>
#include <deque>
#ifndef TEST_HAS_NO_FILESYSTEM_LIBRARY
#ifndef TEST_HAS_NO_FILESYSTEM
#include <filesystem>
#endif
#include <forward_list>
@ -61,7 +61,7 @@ static_assert(std::__iterator_traits_detail::__cpp17_bidirectional_iterator<std:
static_assert(std::__iterator_traits_detail::__cpp17_bidirectional_iterator<std::deque<int>::const_reverse_iterator>);
// <filesystem>
#ifndef TEST_HAS_NO_FILESYSTEM_LIBRARY
#ifndef TEST_HAS_NO_FILESYSTEM
static_assert(!std::__iterator_traits_detail::__cpp17_bidirectional_iterator<std::filesystem::directory_iterator>);
static_assert(!std::__iterator_traits_detail::__cpp17_bidirectional_iterator<std::filesystem::recursive_directory_iterator>);
#endif

View File

@ -20,7 +20,7 @@
#include <array>
#include <deque>
#ifndef TEST_HAS_NO_FILESYSTEM_LIBRARY
#ifndef TEST_HAS_NO_FILESYSTEM
#include <filesystem>
#endif
#include <forward_list>
@ -61,7 +61,7 @@ static_assert(std::__iterator_traits_detail::__cpp17_forward_iterator<std::deque
static_assert(std::__iterator_traits_detail::__cpp17_forward_iterator<std::deque<int>::const_reverse_iterator>);
// <filesystem>
#ifndef TEST_HAS_NO_FILESYSTEM_LIBRARY
#ifndef TEST_HAS_NO_FILESYSTEM
static_assert(!std::__iterator_traits_detail::__cpp17_forward_iterator<std::filesystem::directory_iterator>);
static_assert(!std::__iterator_traits_detail::__cpp17_forward_iterator<std::filesystem::recursive_directory_iterator>);
#endif

View File

@ -20,7 +20,7 @@
#include <array>
#include <deque>
#ifndef TEST_HAS_NO_FILESYSTEM_LIBRARY
#ifndef TEST_HAS_NO_FILESYSTEM
#include <filesystem>
#endif
#include <forward_list>
@ -61,7 +61,7 @@ static_assert(std::__iterator_traits_detail::__cpp17_input_iterator<std::deque<i
static_assert(std::__iterator_traits_detail::__cpp17_input_iterator<std::deque<int>::const_reverse_iterator>);
// <filesystem>
#ifndef TEST_HAS_NO_FILESYSTEM_LIBRARY
#ifndef TEST_HAS_NO_FILESYSTEM
static_assert(std::__iterator_traits_detail::__cpp17_input_iterator<std::filesystem::directory_iterator>);
static_assert(std::__iterator_traits_detail::__cpp17_input_iterator<std::filesystem::recursive_directory_iterator>);
#endif

View File

@ -20,7 +20,7 @@
#include <array>
#include <deque>
#ifndef TEST_HAS_NO_FILESYSTEM_LIBRARY
#ifndef TEST_HAS_NO_FILESYSTEM
#include <filesystem>
#endif
#include <forward_list>
@ -61,7 +61,7 @@ static_assert(std::__iterator_traits_detail::__cpp17_iterator<std::deque<int>::r
static_assert(std::__iterator_traits_detail::__cpp17_iterator<std::deque<int>::const_reverse_iterator>);
// <filesystem>
#ifndef TEST_HAS_NO_FILESYSTEM_LIBRARY
#ifndef TEST_HAS_NO_FILESYSTEM
static_assert(std::__iterator_traits_detail::__cpp17_iterator<std::filesystem::directory_iterator>);
static_assert(std::__iterator_traits_detail::__cpp17_iterator<std::filesystem::recursive_directory_iterator>);
#endif

View File

@ -20,7 +20,7 @@
#include <array>
#include <deque>
#ifndef TEST_HAS_NO_FILESYSTEM_LIBRARY
#ifndef TEST_HAS_NO_FILESYSTEM
#include <filesystem>
#endif
#include <forward_list>
@ -61,7 +61,7 @@ static_assert(std::__iterator_traits_detail::__cpp17_random_access_iterator<std:
static_assert(std::__iterator_traits_detail::__cpp17_random_access_iterator<std::deque<int>::const_reverse_iterator>);
// <filesystem>
#ifndef TEST_HAS_NO_FILESYSTEM_LIBRARY
#ifndef TEST_HAS_NO_FILESYSTEM
static_assert(!std::__iterator_traits_detail::__cpp17_random_access_iterator<std::filesystem::directory_iterator>);
static_assert(!std::__iterator_traits_detail::__cpp17_random_access_iterator<std::filesystem::recursive_directory_iterator>);
#endif

View File

@ -2,5 +2,5 @@
if "no-localization" in config.available_features:
config.unsupported = True
if "no-fstream" in config.available_features:
if "no-filesystem" in config.available_features:
config.unsupported = True

View File

@ -17,7 +17,7 @@
// basic_streambuf, but I can't seem to reproduce without going through one
// of its derived classes.
// UNSUPPORTED: no-fstream
// UNSUPPORTED: no-filesystem
#include <cassert>
#include <cstddef>

View File

@ -40,7 +40,7 @@
# include <istream>
#endif
#ifndef TEST_HAS_NO_FILESYSTEM_LIBRARY
#ifndef TEST_HAS_NO_FILESYSTEM
# include <filesystem>
#endif
@ -156,7 +156,7 @@ static_assert(testConst<std::cregex_iterator, std::forward_iterator_tag, std::cm
static_assert(testConst<std::cregex_token_iterator, std::forward_iterator_tag, std::csub_match>());
#endif // !TEST_HAS_NO_LOCALIZATION
#ifndef TEST_HAS_NO_FILESYSTEM_LIBRARY
#ifndef TEST_HAS_NO_FILESYSTEM
static_assert(test<std::filesystem::directory_iterator, std::input_iterator_tag, std::filesystem::directory_entry,
std::ptrdiff_t, const std::filesystem::directory_entry&, const std::filesystem::directory_entry*>());
static_assert(test<std::filesystem::recursive_directory_iterator, std::input_iterator_tag,

View File

@ -88,7 +88,7 @@ int main(int, char**)
}
}
// TODO: Move this to std::stringstream once https://llvm.org/PR59083 has been resolved
#ifndef TEST_HAS_NO_FSTREAM
#ifndef TEST_HAS_NO_FILESYSTEM
{
{
std::ofstream bs("overflow.dat");
@ -113,7 +113,7 @@ int main(int, char**)
}
std::remove("overflow.dat");
}
#endif // TEST_HAS_NO_FSTREAM
#endif // TEST_HAS_NO_FILESYSTEM
return 0;
}

View File

@ -22,7 +22,7 @@
// XFAIL: no-wide-characters
// TODO: Avoid using <fstream> in this test.
// XFAIL: no-fstream
// XFAIL: no-filesystem
#include <locale>
#include <codecvt>

View File

@ -42,7 +42,7 @@
#include "test_macros.h"
#include "min_allocator.h"
#ifndef TEST_HAS_NO_FILESYSTEM_LIBRARY
#ifndef TEST_HAS_NO_FILESYSTEM
# include <filesystem>
#endif
#ifndef TEST_HAS_NO_LOCALIZATION
@ -182,7 +182,7 @@ void test_P1636() {
assert_is_not_formattable<std::bitset<42>, CharT>();
assert_is_not_formattable<std::complex<double>, CharT>();
assert_is_not_formattable<std::error_code, CharT>();
#ifndef TEST_HAS_NO_FILESYSTEM_LIBRARY
#ifndef TEST_HAS_NO_FILESYSTEM
assert_is_not_formattable<std::filesystem::path, CharT>();
#endif
assert_is_not_formattable<std::shared_ptr<int>, CharT>();

View File

@ -35,7 +35,7 @@
#include "test_macros.h"
#ifndef TEST_HAS_NO_FILESYSTEM_LIBRARY
#ifndef TEST_HAS_NO_FILESYSTEM
# include <filesystem>
#endif
@ -67,7 +67,7 @@ struct recursive_range {
static_assert(std::ranges::input_range<recursive_range>, "format_kind requires an input range");
static_assert(std::format_kind<recursive_range> == std::range_format::disabled);
#ifndef TEST_HAS_NO_FILESYSTEM_LIBRARY
#ifndef TEST_HAS_NO_FILESYSTEM
static_assert(std::format_kind<std::filesystem::path> == std::range_format::disabled);
#endif

View File

@ -386,12 +386,8 @@ inline void DoNotOptimize(Tp const& value) {
# define TEST_HAS_NO_THREADS
#endif
#if defined(_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY)
# define TEST_HAS_NO_FILESYSTEM_LIBRARY
#endif
#if defined(_LIBCPP_HAS_NO_FSTREAM)
# define TEST_HAS_NO_FSTREAM
#if defined(_LIBCPP_HAS_NO_FILESYSTEM)
# define TEST_HAS_NO_FILESYSTEM
#endif
#if defined(_LIBCPP_HAS_NO_FGETPOS_FSETPOS)

View File

@ -575,24 +575,6 @@ steps:
limit: 2
timeout_in_minutes: 120
- label: "No fstream"
command: "libcxx/utils/ci/run-buildbot generic-no-fstream"
artifact_paths:
- "**/test-results.xml"
- "**/*.abilist"
env:
CC: "clang-${LLVM_HEAD_VERSION}"
CXX: "clang++-${LLVM_HEAD_VERSION}"
ENABLE_CLANG_TIDY: "On"
agents:
queue: "libcxx-builders"
os: "linux"
retry:
automatic:
- exit_status: -1 # Agent was lost
limit: 2
timeout_in_minutes: 120
- label: "No locale"
command: "libcxx/utils/ci/run-buildbot generic-no-localization"
artifact_paths:

View File

@ -409,11 +409,6 @@ generic-no-random_device)
generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-random_device.cmake"
check-runtimes
;;
generic-no-fstream)
clean
generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-fstream.cmake"
check-runtimes
;;
generic-no-localization)
clean
generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-localization.cmake"

View File

@ -333,10 +333,9 @@ macros = {
"_LIBCPP_HAS_THREAD_API_PTHREAD": "libcpp-has-thread-api-pthread",
"_LIBCPP_NO_VCRUNTIME": "libcpp-no-vcruntime",
"_LIBCPP_ABI_VERSION": "libcpp-abi-version",
"_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY": "no-filesystem",
"_LIBCPP_HAS_NO_FILESYSTEM": "no-filesystem",
"_LIBCPP_HAS_NO_RANDOM_DEVICE": "no-random-device",
"_LIBCPP_HAS_NO_LOCALIZATION": "no-localization",
"_LIBCPP_HAS_NO_FSTREAM": "no-fstream",
"_LIBCPP_HAS_NO_WIDE_CHARACTERS": "no-wide-characters",
"_LIBCPP_HAS_NO_UNICODE": "libcpp-has-no-unicode",
"_LIBCPP_ENABLE_DEBUG_MODE": "libcpp-has-debug-mode",

View File

@ -36,7 +36,7 @@ lit_header_restrictions = {
"experimental/utility": "// UNSUPPORTED: c++03",
"experimental/vector": "// UNSUPPORTED: c++03",
"filesystem": "// UNSUPPORTED: no-filesystem, c++03, c++11, c++14",
"fstream": "// UNSUPPORTED: no-localization, no-fstream",
"fstream": "// UNSUPPORTED: no-localization, no-filesystem",
"future": "// UNSUPPORTED: no-threads, c++03",
"iomanip": "// UNSUPPORTED: no-localization",
"ios": "// UNSUPPORTED: no-localization",