Index: libcxx/trunk/benchmarks/filesystem.bench.cpp =================================================================== --- libcxx/trunk/benchmarks/filesystem.bench.cpp +++ libcxx/trunk/benchmarks/filesystem.bench.cpp @@ -1,7 +1,7 @@ #include "benchmark/benchmark.h" #include "GenerateInput.hpp" #include "test_iterators.h" -#include "filesystem_include.hpp" +#include "filesystem_include.h" static const size_t TestNumInputs = 1024; Index: libcxx/trunk/test/libcxx/algorithms/half_positive.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/algorithms/half_positive.pass.cpp +++ libcxx/trunk/test/libcxx/algorithms/half_positive.pass.cpp @@ -17,7 +17,7 @@ #include #include "test_macros.h" -#include "user_defined_integral.hpp" +#include "user_defined_integral.h" namespace { Index: libcxx/trunk/test/libcxx/containers/gnu_cxx/hash_map.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/containers/gnu_cxx/hash_map.pass.cpp +++ libcxx/trunk/test/libcxx/containers/gnu_cxx/hash_map.pass.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" void test_default_does_not_allocate() { DisableAllocationGuard g; Index: libcxx/trunk/test/libcxx/containers/gnu_cxx/hash_set.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/containers/gnu_cxx/hash_set.pass.cpp +++ libcxx/trunk/test/libcxx/containers/gnu_cxx/hash_set.pass.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" void test_default_does_not_allocate() { DisableAllocationGuard g; Index: libcxx/trunk/test/libcxx/containers/sequences/deque/spare_block_handling.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/containers/sequences/deque/spare_block_handling.pass.cpp +++ libcxx/trunk/test/libcxx/containers/sequences/deque/spare_block_handling.pass.cpp @@ -21,7 +21,7 @@ #include #include "min_allocator.h" -#include "rapid-cxx-test.hpp" +#include "rapid-cxx-test.h" template struct ContainerAdaptor : public Adaptor { Index: libcxx/trunk/test/libcxx/debug/containers/db_associative_container_tests.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/debug/containers/db_associative_container_tests.pass.cpp +++ libcxx/trunk/test/libcxx/debug/containers/db_associative_container_tests.pass.cpp @@ -22,7 +22,7 @@ #include #include #include -#include "container_debug_tests.hpp" +#include "container_debug_tests.h" #include "test_macros.h" #include "debug_mode_helper.h" Index: libcxx/trunk/test/libcxx/debug/containers/db_sequence_container_iterators.multithread.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/debug/containers/db_sequence_container_iterators.multithread.pass.cpp +++ libcxx/trunk/test/libcxx/debug/containers/db_sequence_container_iterators.multithread.pass.cpp @@ -24,7 +24,7 @@ #include #include #include -#include "container_debug_tests.hpp" +#include "container_debug_tests.h" #include "test_macros.h" Index: libcxx/trunk/test/libcxx/debug/containers/db_sequence_container_iterators.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/debug/containers/db_sequence_container_iterators.pass.cpp +++ libcxx/trunk/test/libcxx/debug/containers/db_sequence_container_iterators.pass.cpp @@ -22,7 +22,7 @@ #include #include #include -#include "container_debug_tests.hpp" +#include "container_debug_tests.h" #include "test_macros.h" #include "debug_mode_helper.h" Index: libcxx/trunk/test/libcxx/debug/containers/db_string.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/debug/containers/db_string.pass.cpp +++ libcxx/trunk/test/libcxx/debug/containers/db_string.pass.cpp @@ -21,7 +21,7 @@ #include #include "test_macros.h" -#include "container_debug_tests.hpp" +#include "container_debug_tests.h" #include "debug_mode_helper.h" using namespace IteratorDebugChecks; Index: libcxx/trunk/test/libcxx/debug/containers/db_unord_container_tests.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/debug/containers/db_unord_container_tests.pass.cpp +++ libcxx/trunk/test/libcxx/debug/containers/db_unord_container_tests.pass.cpp @@ -21,7 +21,7 @@ #include #include #include -#include "container_debug_tests.hpp" +#include "container_debug_tests.h" #include "test_macros.h" #include "debug_mode_helper.h" Index: libcxx/trunk/test/libcxx/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair.pass.cpp +++ libcxx/trunk/test/libcxx/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair.pass.cpp @@ -45,7 +45,7 @@ #include #include #include -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" #include "test_macros.h" Index: libcxx/trunk/test/libcxx/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/db_deallocate.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/db_deallocate.pass.cpp +++ libcxx/trunk/test/libcxx/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/db_deallocate.pass.cpp @@ -22,7 +22,7 @@ #include #include -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" #include "test_macros.h" Index: libcxx/trunk/test/libcxx/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/db_deallocate.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/db_deallocate.pass.cpp +++ libcxx/trunk/test/libcxx/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/db_deallocate.pass.cpp @@ -22,7 +22,7 @@ #include #include -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" #include "test_macros.h" Index: libcxx/trunk/test/libcxx/input.output/filesystems/class.directory_entry/directory_entry.mods/last_write_time.sh.cpp =================================================================== --- libcxx/trunk/test/libcxx/input.output/filesystems/class.directory_entry/directory_entry.mods/last_write_time.sh.cpp +++ libcxx/trunk/test/libcxx/input.output/filesystems/class.directory_entry/directory_entry.mods/last_write_time.sh.cpp @@ -15,13 +15,13 @@ // RUN: %build -I%libcxx_src_root/src/filesystem // RUN: %run -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" #include "filesystem_common.h" Index: libcxx/trunk/test/libcxx/input.output/filesystems/class.path/path.itr/iterator_db.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/input.output/filesystems/class.path/path.itr/iterator_db.pass.cpp +++ libcxx/trunk/test/libcxx/input.output/filesystems/class.path/path.itr/iterator_db.pass.cpp @@ -16,13 +16,13 @@ // class path #define _LIBCPP_DEBUG 0 -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "filesystem_test_helper.hpp" +#include "filesystem_test_helper.h" #include "debug_mode_helper.h" int main(int, char**) { Index: libcxx/trunk/test/libcxx/input.output/filesystems/class.path/path.itr/reverse_iterator_produces_diagnostic.fail.cpp =================================================================== --- libcxx/trunk/test/libcxx/input.output/filesystems/class.path/path.itr/reverse_iterator_produces_diagnostic.fail.cpp +++ libcxx/trunk/test/libcxx/input.output/filesystems/class.path/path.itr/reverse_iterator_produces_diagnostic.fail.cpp @@ -12,7 +12,7 @@ // class path -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include Index: libcxx/trunk/test/libcxx/input.output/filesystems/class.path/path.req/is_pathable.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/input.output/filesystems/class.path/path.req/is_pathable.pass.cpp +++ libcxx/trunk/test/libcxx/input.output/filesystems/class.path/path.req/is_pathable.pass.cpp @@ -20,14 +20,14 @@ // * A character array, which points to a NTCTS after array-to-pointer decay. -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" #include "test_iterators.h" #include "min_allocator.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" using fs::__is_pathable; Index: libcxx/trunk/test/libcxx/type_traits/convert_to_integral.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/type_traits/convert_to_integral.pass.cpp +++ libcxx/trunk/test/libcxx/type_traits/convert_to_integral.pass.cpp @@ -21,7 +21,7 @@ #include #include -#include "user_defined_integral.hpp" +#include "user_defined_integral.h" #include "test_macros.h" Index: libcxx/trunk/test/libcxx/utilities/optional/optional.object/triviality.abi.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/utilities/optional/optional.object/triviality.abi.pass.cpp +++ libcxx/trunk/test/libcxx/utilities/optional/optional.object/triviality.abi.pass.cpp @@ -24,7 +24,7 @@ #include #include -#include "archetypes.hpp" +#include "archetypes.h" #include "test_macros.h" Index: libcxx/trunk/test/libcxx/utilities/tuple/tuple.tuple/tuple.cnstr/disable_reduced_arity_initialization_extension.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/utilities/tuple/tuple.tuple/tuple.cnstr/disable_reduced_arity_initialization_extension.pass.cpp +++ libcxx/trunk/test/libcxx/utilities/tuple/tuple.tuple/tuple.cnstr/disable_reduced_arity_initialization_extension.pass.cpp @@ -22,7 +22,7 @@ #include #include "test_macros.h" -#include "test_convertible.hpp" +#include "test_convertible.h" #include "MoveOnly.h" #if defined(_LIBCPP_ENABLE_TUPLE_IMPLICIT_REDUCED_ARITY_EXTENSION) Index: libcxx/trunk/test/libcxx/utilities/tuple/tuple.tuple/tuple.cnstr/enable_reduced_arity_initialization_extension.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/utilities/tuple/tuple.tuple/tuple.cnstr/enable_reduced_arity_initialization_extension.pass.cpp +++ libcxx/trunk/test/libcxx/utilities/tuple/tuple.tuple/tuple.cnstr/enable_reduced_arity_initialization_extension.pass.cpp @@ -24,7 +24,7 @@ #include #include "test_macros.h" -#include "test_convertible.hpp" +#include "test_convertible.h" #include "MoveOnly.h" Index: libcxx/trunk/test/libcxx/utilities/utility/pairs/pairs.pair/assign_tuple_like.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/utilities/utility/pairs/pairs.pair/assign_tuple_like.pass.cpp +++ libcxx/trunk/test/libcxx/utilities/utility/pairs/pairs.pair/assign_tuple_like.pass.cpp @@ -20,7 +20,7 @@ #include #include -#include "archetypes.hpp" +#include "archetypes.h" #include "test_macros.h" Index: libcxx/trunk/test/libcxx/utilities/utility/pairs/pairs.pair/piecewise.pass.cpp =================================================================== --- libcxx/trunk/test/libcxx/utilities/utility/pairs/pairs.pair/piecewise.pass.cpp +++ libcxx/trunk/test/libcxx/utilities/utility/pairs/pairs.pair/piecewise.pass.cpp @@ -20,7 +20,7 @@ #include #include -#include "archetypes.hpp" +#include "archetypes.h" #include "test_macros.h" Index: libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp =================================================================== --- libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp +++ libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "test_iterators.h" -#include "user_defined_integral.hpp" +#include "user_defined_integral.h" // #if TEST_STD_VER > 17 // TEST_CONSTEXPR bool test_constexpr() { Index: libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp =================================================================== --- libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp +++ libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" #include "test_iterators.h" -#include "user_defined_integral.hpp" +#include "user_defined_integral.h" // #if TEST_STD_VER > 17 // TEST_CONSTEXPR bool test_constexpr() { Index: libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp =================================================================== --- libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp +++ libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "test_iterators.h" -#include "user_defined_integral.hpp" +#include "user_defined_integral.h" #if TEST_STD_VER > 17 TEST_CONSTEXPR bool test_constexpr() { Index: libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.generate/generate_n.pass.cpp =================================================================== --- libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.generate/generate_n.pass.cpp +++ libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.generate/generate_n.pass.cpp @@ -24,7 +24,7 @@ #include #include "test_iterators.h" -#include "user_defined_integral.hpp" +#include "user_defined_integral.h" struct gen_test { Index: libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.partitions/is_partitioned.pass.cpp =================================================================== --- libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.partitions/is_partitioned.pass.cpp +++ libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.partitions/is_partitioned.pass.cpp @@ -19,7 +19,7 @@ #include "test_macros.h" #include "test_iterators.h" -#include "counting_predicates.hpp" +#include "counting_predicates.h" struct is_odd { TEST_CONSTEXPR bool operator()(const int &i) const { return i & 1; } Index: libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.remove/remove_if.pass.cpp =================================================================== --- libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.remove/remove_if.pass.cpp +++ libcxx/trunk/test/std/algorithms/alg.modifying.operations/alg.remove/remove_if.pass.cpp @@ -21,7 +21,7 @@ #include "test_macros.h" #include "test_iterators.h" -#include "counting_predicates.hpp" +#include "counting_predicates.h" TEST_CONSTEXPR bool equal2 ( int i ) { return i == 2; } Index: libcxx/trunk/test/std/algorithms/alg.nonmodifying/alg.search/search_n.pass.cpp =================================================================== --- libcxx/trunk/test/std/algorithms/alg.nonmodifying/alg.search/search_n.pass.cpp +++ libcxx/trunk/test/std/algorithms/alg.nonmodifying/alg.search/search_n.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "test_iterators.h" -#include "user_defined_integral.hpp" +#include "user_defined_integral.h" #if TEST_STD_VER > 17 TEST_CONSTEXPR bool test_constexpr() { Index: libcxx/trunk/test/std/algorithms/alg.nonmodifying/alg.search/search_n_pred.pass.cpp =================================================================== --- libcxx/trunk/test/std/algorithms/alg.nonmodifying/alg.search/search_n_pred.pass.cpp +++ libcxx/trunk/test/std/algorithms/alg.nonmodifying/alg.search/search_n_pred.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "test_iterators.h" -#include "user_defined_integral.hpp" +#include "user_defined_integral.h" #if TEST_STD_VER > 17 TEST_CONSTEXPR bool eq(int a, int b) { return a == b; } Index: libcxx/trunk/test/std/algorithms/alg.nonmodifying/mismatch/mismatch_pred.pass.cpp =================================================================== --- libcxx/trunk/test/std/algorithms/alg.nonmodifying/mismatch/mismatch_pred.pass.cpp +++ libcxx/trunk/test/std/algorithms/alg.nonmodifying/mismatch/mismatch_pred.pass.cpp @@ -24,7 +24,7 @@ #include "test_macros.h" #include "test_iterators.h" -#include "counting_predicates.hpp" +#include "counting_predicates.h" #if TEST_STD_VER > 17 TEST_CONSTEXPR bool eq(int a, int b) { return a == b; } Index: libcxx/trunk/test/std/algorithms/alg.sorting/alg.heap.operations/make.heap/make_heap_comp.pass.cpp =================================================================== --- libcxx/trunk/test/std/algorithms/alg.sorting/alg.heap.operations/make.heap/make_heap_comp.pass.cpp +++ libcxx/trunk/test/std/algorithms/alg.sorting/alg.heap.operations/make.heap/make_heap_comp.pass.cpp @@ -20,7 +20,7 @@ #include #include "test_macros.h" -#include "counting_predicates.hpp" +#include "counting_predicates.h" #include "test_iterators.h" struct indirect_less Index: libcxx/trunk/test/std/algorithms/alg.sorting/alg.merge/inplace_merge_comp.pass.cpp =================================================================== --- libcxx/trunk/test/std/algorithms/alg.sorting/alg.merge/inplace_merge_comp.pass.cpp +++ libcxx/trunk/test/std/algorithms/alg.sorting/alg.merge/inplace_merge_comp.pass.cpp @@ -56,7 +56,7 @@ #endif // TEST_STD_VER >= 11 #include "test_iterators.h" -#include "counting_predicates.hpp" +#include "counting_predicates.h" std::mt19937 randomness; Index: libcxx/trunk/test/std/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp =================================================================== --- libcxx/trunk/test/std/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp +++ libcxx/trunk/test/std/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp @@ -26,7 +26,7 @@ #include "test_macros.h" #include "test_iterators.h" -#include "counting_predicates.hpp" +#include "counting_predicates.h" // #if TEST_STD_VER > 17 // TEST_CONSTEXPR bool test_constexpr() { Index: libcxx/trunk/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp =================================================================== --- libcxx/trunk/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp +++ libcxx/trunk/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp @@ -21,7 +21,7 @@ #include #include "test_macros.h" -#include "counting_predicates.hpp" +#include "counting_predicates.h" bool all_equal(int, int) { return false; } // everything is equal Index: libcxx/trunk/test/std/containers/associative/map/map.access/index_key.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/map/map.access/index_key.pass.cpp +++ libcxx/trunk/test/std/containers/associative/map/map.access/index_key.pass.cpp @@ -16,9 +16,9 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #if TEST_STD_VER >= 11 #include "container_test_types.h" #endif Index: libcxx/trunk/test/std/containers/associative/map/map.access/index_rv_key.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/map/map.access/index_rv_key.pass.cpp +++ libcxx/trunk/test/std/containers/associative/map/map.access/index_rv_key.pass.cpp @@ -18,7 +18,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" #include "MoveOnly.h" #include "min_allocator.h" #include "container_test_types.h" Index: libcxx/trunk/test/std/containers/associative/map/map.ops/count.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/map/map.ops/count.pass.cpp +++ libcxx/trunk/test/std/containers/associative/map/map.ops/count.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #include "is_transparent.h" int main(int, char**) Index: libcxx/trunk/test/std/containers/associative/map/map.ops/count_transparent.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/map/map.ops/count_transparent.pass.cpp +++ libcxx/trunk/test/std/containers/associative/map/map.ops/count_transparent.pass.cpp @@ -20,7 +20,7 @@ #include #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #include "test_macros.h" struct Comp { Index: libcxx/trunk/test/std/containers/associative/map/map.ops/equal_range.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/map/map.ops/equal_range.pass.cpp +++ libcxx/trunk/test/std/containers/associative/map/map.ops/equal_range.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #include "is_transparent.h" int main(int, char**) Index: libcxx/trunk/test/std/containers/associative/map/map.ops/equal_range_transparent.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/map/map.ops/equal_range_transparent.pass.cpp +++ libcxx/trunk/test/std/containers/associative/map/map.ops/equal_range_transparent.pass.cpp @@ -23,7 +23,7 @@ #include #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #include "test_macros.h" struct Comp { Index: libcxx/trunk/test/std/containers/associative/map/map.ops/find.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/map/map.ops/find.pass.cpp +++ libcxx/trunk/test/std/containers/associative/map/map.ops/find.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #include "is_transparent.h" int main(int, char**) Index: libcxx/trunk/test/std/containers/associative/map/map.ops/lower_bound.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/map/map.ops/lower_bound.pass.cpp +++ libcxx/trunk/test/std/containers/associative/map/map.ops/lower_bound.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #include "is_transparent.h" int main(int, char**) Index: libcxx/trunk/test/std/containers/associative/map/map.ops/upper_bound.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/map/map.ops/upper_bound.pass.cpp +++ libcxx/trunk/test/std/containers/associative/map/map.ops/upper_bound.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" int main(int, char**) { Index: libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/count.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/count.pass.cpp +++ libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/count.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #include "is_transparent.h" int main(int, char**) Index: libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/count_transparent.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/count_transparent.pass.cpp +++ libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/count_transparent.pass.cpp @@ -20,7 +20,7 @@ #include #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #include "test_macros.h" struct Comp { Index: libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/equal_range.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/equal_range.pass.cpp +++ libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/equal_range.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #include "is_transparent.h" int main(int, char**) Index: libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/equal_range_transparent.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/equal_range_transparent.pass.cpp +++ libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/equal_range_transparent.pass.cpp @@ -23,7 +23,7 @@ #include #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #include "test_macros.h" struct Comp { Index: libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/find.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/find.pass.cpp +++ libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/find.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #include "is_transparent.h" int main(int, char**) Index: libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/lower_bound.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/lower_bound.pass.cpp +++ libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/lower_bound.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #include "is_transparent.h" int main(int, char**) Index: libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/upper_bound.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/upper_bound.pass.cpp +++ libcxx/trunk/test/std/containers/associative/multimap/multimap.ops/upper_bound.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #include "is_transparent.h" int main(int, char**) Index: libcxx/trunk/test/std/containers/associative/multiset/count.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/multiset/count.pass.cpp +++ libcxx/trunk/test/std/containers/associative/multiset/count.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" int main(int, char**) { Index: libcxx/trunk/test/std/containers/associative/multiset/count_transparent.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/multiset/count_transparent.pass.cpp +++ libcxx/trunk/test/std/containers/associative/multiset/count_transparent.pass.cpp @@ -22,7 +22,7 @@ #include #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #include "test_macros.h" struct Comp { Index: libcxx/trunk/test/std/containers/associative/multiset/equal_range.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/multiset/equal_range.pass.cpp +++ libcxx/trunk/test/std/containers/associative/multiset/equal_range.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" int main(int, char**) { Index: libcxx/trunk/test/std/containers/associative/multiset/equal_range_transparent.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/multiset/equal_range_transparent.pass.cpp +++ libcxx/trunk/test/std/containers/associative/multiset/equal_range_transparent.pass.cpp @@ -24,7 +24,7 @@ #include #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #include "test_macros.h" struct Comp { Index: libcxx/trunk/test/std/containers/associative/multiset/find.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/multiset/find.pass.cpp +++ libcxx/trunk/test/std/containers/associative/multiset/find.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" int main(int, char**) { Index: libcxx/trunk/test/std/containers/associative/multiset/lower_bound.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/multiset/lower_bound.pass.cpp +++ libcxx/trunk/test/std/containers/associative/multiset/lower_bound.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" int main(int, char**) { Index: libcxx/trunk/test/std/containers/associative/multiset/upper_bound.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/multiset/upper_bound.pass.cpp +++ libcxx/trunk/test/std/containers/associative/multiset/upper_bound.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" int main(int, char**) { Index: libcxx/trunk/test/std/containers/associative/set/count.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/set/count.pass.cpp +++ libcxx/trunk/test/std/containers/associative/set/count.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" int main(int, char**) { Index: libcxx/trunk/test/std/containers/associative/set/count_transparent.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/set/count_transparent.pass.cpp +++ libcxx/trunk/test/std/containers/associative/set/count_transparent.pass.cpp @@ -22,7 +22,7 @@ #include #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #include "test_macros.h" struct Comp { Index: libcxx/trunk/test/std/containers/associative/set/equal_range.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/set/equal_range.pass.cpp +++ libcxx/trunk/test/std/containers/associative/set/equal_range.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" int main(int, char**) { Index: libcxx/trunk/test/std/containers/associative/set/equal_range_transparent.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/set/equal_range_transparent.pass.cpp +++ libcxx/trunk/test/std/containers/associative/set/equal_range_transparent.pass.cpp @@ -24,7 +24,7 @@ #include #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" #include "test_macros.h" struct Comp { Index: libcxx/trunk/test/std/containers/associative/set/find.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/set/find.pass.cpp +++ libcxx/trunk/test/std/containers/associative/set/find.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" int main(int, char**) { Index: libcxx/trunk/test/std/containers/associative/set/lower_bound.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/set/lower_bound.pass.cpp +++ libcxx/trunk/test/std/containers/associative/set/lower_bound.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" int main(int, char**) { Index: libcxx/trunk/test/std/containers/associative/set/upper_bound.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/associative/set/upper_bound.pass.cpp +++ libcxx/trunk/test/std/containers/associative/set/upper_bound.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "private_constructor.hpp" +#include "private_constructor.h" int main(int, char**) { Index: libcxx/trunk/test/std/containers/map_allocator_requirement_test_templates.h =================================================================== --- libcxx/trunk/test/std/containers/map_allocator_requirement_test_templates.h +++ libcxx/trunk/test/std/containers/map_allocator_requirement_test_templates.h @@ -23,7 +23,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" #include "container_test_types.h" #include "assert_checkpoint.h" Index: libcxx/trunk/test/std/containers/sequences/forwardlist/forwardlist.ops/remove_if.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/sequences/forwardlist/forwardlist.ops/remove_if.pass.cpp +++ libcxx/trunk/test/std/containers/sequences/forwardlist/forwardlist.ops/remove_if.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "counting_predicates.hpp" +#include "counting_predicates.h" template Index: libcxx/trunk/test/std/containers/sequences/list/list.modifiers/insert_iter_iter_iter.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/sequences/list/list.modifiers/insert_iter_iter_iter.pass.cpp +++ libcxx/trunk/test/std/containers/sequences/list/list.modifiers/insert_iter_iter_iter.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "test_iterators.h" #include "min_allocator.h" -#include "count_new.hpp" +#include "count_new.h" template void test() { Index: libcxx/trunk/test/std/containers/sequences/list/list.modifiers/insert_iter_size_value.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/sequences/list/list.modifiers/insert_iter_size_value.pass.cpp +++ libcxx/trunk/test/std/containers/sequences/list/list.modifiers/insert_iter_size_value.pass.cpp @@ -17,7 +17,7 @@ #include #include "min_allocator.h" -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" template Index: libcxx/trunk/test/std/containers/sequences/list/list.modifiers/insert_iter_value.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/sequences/list/list.modifiers/insert_iter_value.pass.cpp +++ libcxx/trunk/test/std/containers/sequences/list/list.modifiers/insert_iter_value.pass.cpp @@ -16,7 +16,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "count_new.hpp" +#include "count_new.h" template void test() Index: libcxx/trunk/test/std/containers/sequences/list/list.ops/remove_if.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/sequences/list/list.ops/remove_if.pass.cpp +++ libcxx/trunk/test/std/containers/sequences/list/list.ops/remove_if.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "counting_predicates.hpp" +#include "counting_predicates.h" bool even(int i) { Index: libcxx/trunk/test/std/containers/sequences/vector.bool/enabled_hash.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/sequences/vector.bool/enabled_hash.pass.cpp +++ libcxx/trunk/test/std/containers/sequences/vector.bool/enabled_hash.pass.cpp @@ -15,7 +15,7 @@ #include -#include "poisoned_hash_helper.hpp" +#include "poisoned_hash_helper.h" #include "test_macros.h" #include "min_allocator.h" Index: libcxx/trunk/test/std/containers/set_allocator_requirement_test_templates.h =================================================================== --- libcxx/trunk/test/std/containers/set_allocator_requirement_test_templates.h +++ libcxx/trunk/test/std/containers/set_allocator_requirement_test_templates.h @@ -22,7 +22,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" #include "container_test_types.h" #include "assert_checkpoint.h" Index: libcxx/trunk/test/std/containers/unord/unord.map/unord.map.elem/index.pass.cpp =================================================================== --- libcxx/trunk/test/std/containers/unord/unord.map/unord.map.elem/index.pass.cpp +++ libcxx/trunk/test/std/containers/unord/unord.map/unord.map.elem/index.pass.cpp @@ -22,7 +22,7 @@ #include "test_macros.h" #include "MoveOnly.h" #include "min_allocator.h" -#include "count_new.hpp" +#include "count_new.h" #if TEST_STD_VER >= 11 #include "container_test_types.h" Index: libcxx/trunk/test/std/diagnostics/syserr/syserr.hash/enabled_hash.pass.cpp =================================================================== --- libcxx/trunk/test/std/diagnostics/syserr/syserr.hash/enabled_hash.pass.cpp +++ libcxx/trunk/test/std/diagnostics/syserr/syserr.hash/enabled_hash.pass.cpp @@ -15,7 +15,7 @@ #include -#include "poisoned_hash_helper.hpp" +#include "poisoned_hash_helper.h" #include "test_macros.h" Index: libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/default.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/default.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/default.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" #include "test_macros.h" Index: libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/memory_resource_convert.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/memory_resource_convert.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/memory_resource_convert.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" #include "test_macros.h" Index: libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/equal.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/equal.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/equal.pass.cpp @@ -21,7 +21,7 @@ #include #include -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" #include "test_macros.h" Index: libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/not_equal.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/not_equal.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/not_equal.pass.cpp @@ -21,7 +21,7 @@ #include #include -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" #include "test_macros.h" Index: libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/allocate.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/allocate.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/allocate.pass.cpp @@ -22,7 +22,7 @@ #include #include "test_macros.h" -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" namespace ex = std::experimental::pmr; Index: libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair.pass.cpp @@ -21,7 +21,7 @@ #include #include #include -#include "uses_alloc_types.hpp" +#include "uses_alloc_types.h" #include "test_macros.h" Index: libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_const_lvalue_pair.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_const_lvalue_pair.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_const_lvalue_pair.pass.cpp @@ -23,9 +23,9 @@ #include #include "test_macros.h" -#include "test_memory_resource.hpp" -#include "uses_alloc_types.hpp" -#include "controlled_allocators.hpp" +#include "test_memory_resource.h" +#include "uses_alloc_types.h" +#include "controlled_allocators.h" #include "test_allocator.h" namespace ex = std::experimental::pmr; Index: libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_rvalue.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_rvalue.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_rvalue.pass.cpp @@ -23,9 +23,9 @@ #include #include "test_macros.h" -#include "test_memory_resource.hpp" -#include "uses_alloc_types.hpp" -#include "controlled_allocators.hpp" +#include "test_memory_resource.h" +#include "uses_alloc_types.h" +#include "controlled_allocators.h" #include "test_allocator.h" namespace ex = std::experimental::pmr; Index: libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_values.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_values.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_values.pass.cpp @@ -23,9 +23,9 @@ #include #include "test_macros.h" -#include "test_memory_resource.hpp" -#include "uses_alloc_types.hpp" -#include "controlled_allocators.hpp" +#include "test_memory_resource.h" +#include "uses_alloc_types.h" +#include "controlled_allocators.h" #include "test_allocator.h" namespace ex = std::experimental::pmr; Index: libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair.pass.cpp @@ -24,9 +24,9 @@ #include #include "test_macros.h" -#include "test_memory_resource.hpp" -#include "uses_alloc_types.hpp" -#include "controlled_allocators.hpp" +#include "test_memory_resource.h" +#include "uses_alloc_types.h" +#include "controlled_allocators.h" #include "test_allocator.h" namespace ex = std::experimental::pmr; Index: libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_types.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_types.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_types.pass.cpp @@ -21,9 +21,9 @@ #include #include "test_macros.h" -#include "test_memory_resource.hpp" -#include "uses_alloc_types.hpp" -#include "controlled_allocators.hpp" +#include "test_memory_resource.h" +#include "uses_alloc_types.h" +#include "controlled_allocators.h" #include "test_allocator.h" namespace ex = std::experimental::pmr; Index: libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/deallocate.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/deallocate.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/deallocate.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" #include "test_macros.h" Index: libcxx/trunk/test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.ctor/alloc_copy.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.ctor/alloc_copy.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.ctor/alloc_copy.pass.cpp @@ -17,7 +17,7 @@ #include #include -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" #include "test_macros.h" Index: libcxx/trunk/test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.ctor/alloc_move.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.ctor/alloc_move.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.ctor/alloc_move.pass.cpp @@ -17,7 +17,7 @@ #include #include -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" #include "test_macros.h" Index: libcxx/trunk/test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.ctor/default.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.ctor/default.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.ctor/default.pass.cpp @@ -19,7 +19,7 @@ #include #include -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" #include "test_macros.h" Index: libcxx/trunk/test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/do_allocate_and_deallocate.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/do_allocate_and_deallocate.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/do_allocate_and_deallocate.pass.cpp @@ -27,7 +27,7 @@ #include #include "test_macros.h" -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" namespace ex = std::experimental::pmr; Index: libcxx/trunk/test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/do_is_equal.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/do_is_equal.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/do_is_equal.pass.cpp @@ -18,7 +18,7 @@ #include #include #include -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" #include "test_macros.h" Index: libcxx/trunk/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp @@ -28,7 +28,7 @@ #include #include -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" #include "test_macros.h" Index: libcxx/trunk/test/std/experimental/memory/memory.resource.global/default_resource.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.resource.global/default_resource.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.resource.global/default_resource.pass.cpp @@ -31,7 +31,7 @@ #include #include -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" #include "test_macros.h" Index: libcxx/trunk/test/std/experimental/memory/memory.resource.global/new_delete_resource.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.resource.global/new_delete_resource.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.resource.global/new_delete_resource.pass.cpp @@ -16,7 +16,7 @@ #include #include -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" Index: libcxx/trunk/test/std/experimental/memory/memory.resource.global/null_memory_resource.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.resource.global/null_memory_resource.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.resource.global/null_memory_resource.pass.cpp @@ -18,7 +18,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" namespace ex = std::experimental::pmr; Index: libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.eq/equal.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.eq/equal.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.eq/equal.pass.cpp @@ -17,7 +17,7 @@ #include #include "test_macros.h" -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" namespace ex = std::experimental::pmr; Index: libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.eq/not_equal.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.eq/not_equal.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.eq/not_equal.pass.cpp @@ -16,7 +16,7 @@ #include #include -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" #include "test_macros.h" Index: libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.public/allocate.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.public/allocate.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.public/allocate.pass.cpp @@ -27,7 +27,7 @@ #include #include "test_macros.h" -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" using std::experimental::pmr::memory_resource; Index: libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.public/deallocate.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.public/deallocate.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.public/deallocate.pass.cpp @@ -26,7 +26,7 @@ #include #include -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" #include "test_macros.h" Index: libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.public/dtor.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.public/dtor.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.public/dtor.pass.cpp @@ -22,7 +22,7 @@ #include #include -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" #include "test_macros.h" Index: libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.public/is_equal.pass.cpp =================================================================== --- libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.public/is_equal.pass.cpp +++ libcxx/trunk/test/std/experimental/memory/memory.resource/memory.resource.public/is_equal.pass.cpp @@ -24,7 +24,7 @@ #include #include #include -#include "test_memory_resource.hpp" +#include "test_memory_resource.h" #include "test_macros.h" Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/copy.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/copy.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/copy.pass.cpp @@ -14,14 +14,14 @@ // directory_entry(const directory_entry&) = default; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" -#include "test_convertible.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" +#include "test_convertible.h" TEST_SUITE(directory_entry_path_ctor_suite) Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/copy_assign.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/copy_assign.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/copy_assign.pass.cpp @@ -17,13 +17,13 @@ // void assign(path const&); // void replace_filename(path const&); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" TEST_SUITE(directory_entry_ctor_suite) Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/default.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/default.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/default.pass.cpp @@ -14,7 +14,7 @@ // directory_entry() noexcept = default; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/default_const.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/default_const.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/default_const.pass.cpp @@ -15,7 +15,7 @@ // directory_entry() noexcept = default; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/move.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/move.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/move.pass.cpp @@ -14,14 +14,14 @@ // directory_entry(directory_entry&&) noexcept = default; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" -#include "test_convertible.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" +#include "test_convertible.h" TEST_SUITE(directory_entry_path_ctor_suite) Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/move_assign.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/move_assign.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/move_assign.pass.cpp @@ -17,13 +17,13 @@ // void assign(path const&); // void replace_filename(path const&); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" TEST_SUITE(directory_entry_ctor_suite) Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/path.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/path.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/path.pass.cpp @@ -15,14 +15,14 @@ // explicit directory_entry(const path); // directory_entry(const path&, error_code& ec); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" -#include "test_convertible.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" +#include "test_convertible.h" TEST_SUITE(directory_entry_path_ctor_suite) Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/assign.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/assign.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/assign.pass.cpp @@ -17,13 +17,13 @@ // void assign(path const&); // void replace_filename(path const&); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" TEST_SUITE(directory_entry_mods_suite) Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/refresh.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/refresh.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/refresh.pass.cpp @@ -17,13 +17,13 @@ // void assign(path const&); // void replace_filename(path const&); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" TEST_SUITE(directory_entry_mods_suite) Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/replace_filename.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/replace_filename.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/replace_filename.pass.cpp @@ -17,13 +17,13 @@ // void assign(path const&); // void replace_filename(path const&); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" TEST_SUITE(directory_entry_mods_suite) Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/comparisons.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/comparisons.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/comparisons.pass.cpp @@ -20,7 +20,7 @@ // bool operator>=(directory_entry const&) const noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_size.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_size.pass.cpp @@ -15,12 +15,12 @@ // uintmax_t file_size() const; // uintmax_t file_size(error_code const&) const noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include -#include "filesystem_test_helper.hpp" -#include "rapid-cxx-test.hpp" +#include "filesystem_test_helper.h" +#include "rapid-cxx-test.h" #include Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_type_obs.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_type_obs.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_type_obs.pass.cpp @@ -15,12 +15,12 @@ // file_status status() const; // file_status status(error_code const&) const noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include -#include "filesystem_test_helper.hpp" -#include "rapid-cxx-test.hpp" +#include "filesystem_test_helper.h" +#include "rapid-cxx-test.h" #include "test_macros.h" Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/hard_link_count.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/hard_link_count.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/hard_link_count.pass.cpp @@ -15,12 +15,12 @@ // uintmax_t hard_link_count() const; // uintmax_t hard_link_count(error_code const&) const noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include -#include "filesystem_test_helper.hpp" -#include "rapid-cxx-test.hpp" +#include "filesystem_test_helper.h" +#include "rapid-cxx-test.h" #include "test_macros.h" Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/last_write_time.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/last_write_time.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/last_write_time.pass.cpp @@ -15,12 +15,12 @@ // file_time_type last_write_time() const; // file_time_type last_write_time(error_code const&) const noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include -#include "filesystem_test_helper.hpp" -#include "rapid-cxx-test.hpp" +#include "filesystem_test_helper.h" +#include "rapid-cxx-test.h" #include "test_macros.h" Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/path.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/path.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/path.pass.cpp @@ -15,7 +15,7 @@ // const path& path() const noexcept; // operator const path&() const noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/status.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/status.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/status.pass.cpp @@ -15,12 +15,12 @@ // file_status status() const; // file_status status(error_code const&) const noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include -#include "filesystem_test_helper.hpp" -#include "rapid-cxx-test.hpp" +#include "filesystem_test_helper.h" +#include "rapid-cxx-test.h" #include "test_macros.h" Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/symlink_status.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/symlink_status.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/symlink_status.pass.cpp @@ -15,12 +15,12 @@ // file_status symlink_status() const; // file_status symlink_status(error_code&) const noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include -#include "filesystem_test_helper.hpp" -#include "rapid-cxx-test.hpp" +#include "filesystem_test_helper.h" +#include "rapid-cxx-test.h" #include "test_macros.h" Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/copy.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/copy.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/copy.pass.cpp @@ -14,14 +14,14 @@ // directory_iterator(directory_iterator const&); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/copy_assign.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/copy_assign.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/copy_assign.pass.cpp @@ -14,14 +14,14 @@ // directory_iterator& operator=(directory_iterator const&); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/ctor.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/ctor.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/ctor.pass.cpp @@ -17,14 +17,14 @@ // directory_iterator(const path& p, error_code& ec); // directory_iterator(const path& p, directory_options options, error_code& ec); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/default_ctor.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/default_ctor.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/default_ctor.pass.cpp @@ -15,7 +15,7 @@ // directory_iterator::directory_iterator() noexcept -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/increment.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/increment.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/increment.pass.cpp @@ -15,14 +15,14 @@ // directory_iterator& operator++(); // directory_iterator& increment(error_code& ec); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" #include using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/move.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/move.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/move.pass.cpp @@ -14,14 +14,14 @@ // directory_iterator(directory_iterator&&) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/move_assign.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/move_assign.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/move_assign.pass.cpp @@ -14,14 +14,14 @@ // directory_iterator& operator=(directory_iterator const&); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" // The filesystem specification explicitly allows for self-move on // the directory iterators. Turn off this warning so we can test it. Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.nonmembers/begin_end.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.nonmembers/begin_end.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.nonmembers/begin_end.pass.cpp @@ -15,14 +15,14 @@ // directory_iterator begin(directory_iterator iter) noexcept; // directory_iterator end(directory_iterator iter) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" #include using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/types.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/types.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.directory_iterator/types.pass.cpp @@ -18,7 +18,7 @@ // typedef ... reference; // typedef ... iterator_category -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/class.file_status/file_status.cons.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.file_status/file_status.cons.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.file_status/file_status.cons.pass.cpp @@ -15,11 +15,11 @@ // explicit file_status() noexcept; // explicit file_status(file_type, perms prms = perms::unknown) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include -#include "test_convertible.hpp" +#include "test_convertible.h" #include "test_macros.h" Index: libcxx/trunk/test/std/input.output/filesystems/class.file_status/file_status.mods.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.file_status/file_status.mods.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.file_status/file_status.mods.pass.cpp @@ -15,7 +15,7 @@ // void type(file_type) noexcept; // void permissions(perms) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/class.file_status/file_status.obs.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.file_status/file_status.obs.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.file_status/file_status.obs.pass.cpp @@ -15,7 +15,7 @@ // file_type type() const noexcept; // perms permissions(p) const noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/class.filesystem_error/filesystem_error.members.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.filesystem_error/filesystem_error.members.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.filesystem_error/filesystem_error.members.pass.cpp @@ -20,7 +20,7 @@ // const path& path1() const noexcept; // const path& path2() const noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.itr/iterator.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.itr/iterator.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.itr/iterator.pass.cpp @@ -18,13 +18,13 @@ // path(InputIterator first, InputIterator last); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "filesystem_test_helper.hpp" +#include "filesystem_test_helper.h" Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp @@ -21,15 +21,15 @@ // path& append(InputIterator first, InputIterator last); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" #include "verbose_assert.h" Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.assign/braced_init.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.assign/braced_init.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.assign/braced_init.pass.cpp @@ -14,12 +14,12 @@ // path& operator=(path const&); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" int main(int, char**) { Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.assign/copy.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.assign/copy.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.assign/copy.pass.cpp @@ -14,7 +14,7 @@ // path& operator=(path const&); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.assign/move.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.assign/move.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.assign/move.pass.cpp @@ -14,12 +14,12 @@ // path& operator=(path&&) noexcept -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" int main(int, char**) { Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp @@ -21,15 +21,15 @@ // path& assign(InputIterator first, InputIterator last); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" #include Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.compare.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.compare.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.compare.pass.cpp @@ -26,15 +26,15 @@ // size_t hash_value(path const&) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" #include "verbose_assert.h" struct PathCompareTest { Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp @@ -27,7 +27,7 @@ // path& concat(InputIterator first, InputIterator last); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include @@ -35,8 +35,8 @@ #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" struct ConcatOperatorTestcase { Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.construct/copy.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.construct/copy.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.construct/copy.pass.cpp @@ -14,7 +14,7 @@ // path(path const&) -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.construct/default.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.construct/default.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.construct/default.pass.cpp @@ -14,7 +14,7 @@ // path() noexcept -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.construct/move.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.construct/move.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.construct/move.pass.cpp @@ -14,12 +14,12 @@ // path(path&&) noexcept -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" int main(int, char**) { Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp @@ -18,14 +18,14 @@ // path(InputIterator first, InputIterator last); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" #include "test_iterators.h" #include "min_allocator.h" -#include "filesystem_test_helper.hpp" +#include "filesystem_test_helper.h" template Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.decompose/empty.fail.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.decompose/empty.fail.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.decompose/empty.fail.cpp @@ -16,7 +16,7 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14, c++17 // UNSUPPORTED: clang-3.3, clang-3.4, clang-3.5, clang-3.6, clang-3.7, clang-3.8 -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include "test_macros.h" Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.decompose/path.decompose.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.decompose/path.decompose.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.decompose/path.decompose.pass.cpp @@ -43,15 +43,15 @@ // iterator end() const; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" #include "assert_checkpoint.h" #include "verbose_assert.h" Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.gen/lexically_normal.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.gen/lexically_normal.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.gen/lexically_normal.pass.cpp @@ -14,7 +14,7 @@ // path lexically_normal() const; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include @@ -22,8 +22,8 @@ #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" int main(int, char**) { Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.gen/lexically_relative_and_proximate.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.gen/lexically_relative_and_proximate.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.gen/lexically_relative_and_proximate.pass.cpp @@ -15,7 +15,7 @@ // path lexically_relative(const path& p) const; // path lexically_proximate(const path& p) const; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include @@ -23,8 +23,8 @@ #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" int main(int, char**) { Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/generic_string_alloc.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/generic_string_alloc.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/generic_string_alloc.pass.cpp @@ -17,15 +17,15 @@ // basic_string // generic_string(const Allocator& a = Allocator()) const; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" +#include "count_new.h" #include "min_allocator.h" -#include "filesystem_test_helper.hpp" +#include "filesystem_test_helper.h" MultiStringType longString = MKSTR("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/123456789/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"); Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/named_overloads.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/named_overloads.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/named_overloads.pass.cpp @@ -19,15 +19,15 @@ // std::u32string generic_u32string() const; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" +#include "count_new.h" #include "min_allocator.h" -#include "filesystem_test_helper.hpp" +#include "filesystem_test_helper.h" MultiStringType longString = MKSTR("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/123456789/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"); Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/clear.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/clear.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/clear.pass.cpp @@ -14,14 +14,14 @@ // void clear() noexcept -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" int main(int, char**) { Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/make_preferred.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/make_preferred.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/make_preferred.pass.cpp @@ -14,14 +14,14 @@ // path& make_preferred() -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" struct MakePreferredTestcase { Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/remove_filename.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/remove_filename.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/remove_filename.pass.cpp @@ -14,14 +14,14 @@ // path& remove_filename() -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" #include "verbose_assert.h" struct RemoveFilenameTestcase { Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/replace_extension.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/replace_extension.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/replace_extension.pass.cpp @@ -14,14 +14,14 @@ // path& replace_extension(path const& p = path()) -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" struct ReplaceExtensionTestcase { Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/replace_filename.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/replace_filename.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/replace_filename.pass.cpp @@ -14,14 +14,14 @@ // path& replace_filename() -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" #include "assert_checkpoint.h" #include "verbose_assert.h" Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/swap.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/swap.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.modifiers/swap.pass.cpp @@ -14,14 +14,14 @@ // void swap(path& rhs) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" struct SwapTestcase { Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.native.obs/c_str.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.native.obs/c_str.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.native.obs/c_str.pass.cpp @@ -15,12 +15,12 @@ // const value_type* c_str() const noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "filesystem_test_helper.hpp" +#include "filesystem_test_helper.h" int main(int, char**) Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.native.obs/named_overloads.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.native.obs/named_overloads.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.native.obs/named_overloads.pass.cpp @@ -19,15 +19,15 @@ // std::u32string u32string() const; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" +#include "count_new.h" #include "min_allocator.h" -#include "filesystem_test_helper.hpp" +#include "filesystem_test_helper.h" MultiStringType longString = MKSTR("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/123456789/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"); Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.native.obs/native.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.native.obs/native.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.native.obs/native.pass.cpp @@ -14,12 +14,12 @@ // const string_type& native() const noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "filesystem_test_helper.hpp" +#include "filesystem_test_helper.h" int main(int, char**) Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.native.obs/operator_string.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.native.obs/operator_string.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.native.obs/operator_string.pass.cpp @@ -15,12 +15,12 @@ // operator string_type() const; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "filesystem_test_helper.hpp" +#include "filesystem_test_helper.h" int main(int, char**) Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.native.obs/string_alloc.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.native.obs/string_alloc.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.member/path.native.obs/string_alloc.pass.cpp @@ -17,15 +17,15 @@ // basic_string // string(const Allocator& a = Allocator()) const; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" +#include "count_new.h" #include "min_allocator.h" -#include "filesystem_test_helper.hpp" +#include "filesystem_test_helper.h" // the SSO is always triggered for strings of size 2. Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/append_op.fail.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/append_op.fail.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/append_op.fail.cpp @@ -10,7 +10,7 @@ // -#include "filesystem_include.hpp" +#include "filesystem_include.h" using namespace fs; @@ -25,4 +25,4 @@ (void)(LHS / RHS); // expected-error {{invalid operands to binary expression}} return 0; -} \ No newline at end of file +} Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/append_op.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/append_op.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/append_op.pass.cpp @@ -12,12 +12,12 @@ // path operator/(path const&, path const&); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "filesystem_test_helper.hpp" +#include "filesystem_test_helper.h" // This is mainly tested via the member append functions. int main(int, char**) Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/comparison_ops.fail.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/comparison_ops.fail.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/comparison_ops.fail.cpp @@ -11,7 +11,7 @@ // -#include "filesystem_include.hpp" +#include "filesystem_include.h" using namespace fs; @@ -31,4 +31,4 @@ (void)(LHS >= RHS); // expected-error {{invalid operands to binary expression}} return 0; -} \ No newline at end of file +} Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/path.factory.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/path.factory.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/path.factory.pass.cpp @@ -15,14 +15,14 @@ // template // path u8path(InputIter, InputIter); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" int main(int, char**) Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/path.io.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/path.io.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/path.io.pass.cpp @@ -21,7 +21,7 @@ // operator>>(basic_istream& is, path& p) // -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include @@ -29,8 +29,8 @@ #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" MultiStringType InStr = MKSTR("abcdefg/\"hijklmnop\"/qrstuvwxyz/123456789"); MultiStringType OutStr = MKSTR("\"abcdefg/\\\"hijklmnop\\\"/qrstuvwxyz/123456789\""); Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/path.io.unicode_bug.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/path.io.unicode_bug.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/path.io.unicode_bug.pass.cpp @@ -26,15 +26,15 @@ // passes. // XFAIL: * -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" MultiStringType InStr = MKSTR("abcdefg/\"hijklmnop\"/qrstuvwxyz/123456789"); MultiStringType OutStr = MKSTR("\"abcdefg/\\\"hijklmnop\\\"/qrstuvwxyz/123456789\""); Index: libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/swap.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/swap.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/path.nonmember/swap.pass.cpp @@ -12,13 +12,13 @@ // void swap(path& lhs, path& rhs) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" // NOTE: this is tested in path.members/path.modifiers via the member swap. Index: libcxx/trunk/test/std/input.output/filesystems/class.path/synop.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.path/synop.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.path/synop.pass.cpp @@ -16,7 +16,7 @@ // typedef basic_string string_type; // static constexpr value_type preferred_separator = ...; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/copy.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/copy.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/copy.pass.cpp @@ -14,14 +14,14 @@ // recursive_recursive_directory_iterator(recursive_recursive_directory_iterator const&); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/copy_assign.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/copy_assign.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/copy_assign.pass.cpp @@ -14,14 +14,14 @@ // recursive_directory_iterator& operator=(recursive_directory_iterator const&); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/ctor.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/ctor.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/ctor.pass.cpp @@ -19,14 +19,14 @@ // recursive_directory_iterator(const path& p, directory_options options, error_code& ec); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/depth.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/depth.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/depth.pass.cpp @@ -14,14 +14,14 @@ // int depth() const -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/disable_recursion_pending.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/disable_recursion_pending.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/disable_recursion_pending.pass.cpp @@ -14,14 +14,14 @@ // void disable_recursion_pending(); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp @@ -15,14 +15,14 @@ // recursive_directory_iterator& operator++(); // recursive_directory_iterator& increment(error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/move.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/move.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/move.pass.cpp @@ -14,14 +14,14 @@ // recursive_directory_iterator(recursive_directory_iterator&&) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/move_assign.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/move_assign.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/move_assign.pass.cpp @@ -14,14 +14,14 @@ // recursive_directory_iterator& operator=(recursive_directory_iterator const&); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" // The filesystem specification explicitly allows for self-move on // the directory iterators. Turn off this warning so we can test it. Index: libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/pop.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/pop.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/pop.pass.cpp @@ -15,13 +15,13 @@ // void pop(); // void pop(error_code& ec); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/recursion_pending.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/recursion_pending.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/recursion_pending.pass.cpp @@ -14,14 +14,14 @@ // bool recursion_pending() const; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.nonmembers/begin_end.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.nonmembers/begin_end.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.nonmembers/begin_end.pass.cpp @@ -15,14 +15,14 @@ // recursive_directory_iterator begin(recursive_directory_iterator iter) noexcept; // recursive_directory_iterator end(recursive_directory_iterator iter) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" #include using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.copy_options.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.copy_options.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.copy_options.pass.cpp @@ -12,7 +12,7 @@ // enum class copy_options; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.directory_options.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.directory_options.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.directory_options.pass.cpp @@ -12,7 +12,7 @@ // enum class directory_options; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include Index: libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.file_type.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.file_type.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.file_type.pass.cpp @@ -12,7 +12,7 @@ // enum class file_type; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.path.format.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.path.format.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.path.format.pass.cpp @@ -13,7 +13,7 @@ // class path; // enum class format; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.perm_options.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.perm_options.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.perm_options.pass.cpp @@ -12,7 +12,7 @@ // enum class perm_options; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include Index: libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.perms.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.perms.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.enum/enum.perms.pass.cpp @@ -12,7 +12,7 @@ // enum class perms; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include Index: libcxx/trunk/test/std/input.output/filesystems/fs.filesystem.synopsis/file_time_type.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.filesystem.synopsis/file_time_type.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.filesystem.synopsis/file_time_type.pass.cpp @@ -12,7 +12,7 @@ // typedef TrivialClock file_time_type; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.hard_lk_ct/hard_link_count.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.hard_lk_ct/hard_link_count.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.hard_lk_ct/hard_link_count.pass.cpp @@ -13,13 +13,13 @@ // uintmax_t hard_link_count(const path& p); // uintmax_t hard_link_count(const path& p, std::error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.absolute/absolute.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.absolute/absolute.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.absolute/absolute.pass.cpp @@ -12,13 +12,13 @@ // path absolute(const path& p, const path& base=current_path()); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.canonical/canonical.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.canonical/canonical.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.canonical/canonical.pass.cpp @@ -13,13 +13,13 @@ // path canonical(const path& p); // path canonical(const path& p, error_code& ec); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy/copy.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy/copy.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy/copy.pass.cpp @@ -16,14 +16,14 @@ // void copy(const path& from, const path& to, copy_options options, // error_code& ec); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy_file/copy_file.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy_file/copy_file.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy_file/copy_file.pass.cpp @@ -16,14 +16,14 @@ // bool copy_file(const path& from, const path& to, copy_options options, // error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" #include Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy_file/copy_file_large.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy_file/copy_file_large.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy_file/copy_file_large.pass.cpp @@ -17,14 +17,14 @@ // bool copy_file(const path& from, const path& to, copy_options options, // error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy_symlink/copy_symlink.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy_symlink/copy_symlink.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy_symlink/copy_symlink.pass.cpp @@ -14,13 +14,13 @@ // void copy_symlink(const path& existing_symlink, const path& new_symlink, // error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directories/create_directories.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directories/create_directories.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directories/create_directories.pass.cpp @@ -13,13 +13,13 @@ // bool create_directories(const path& p); // bool create_directories(const path& p, error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directory/create_directory.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directory/create_directory.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directory/create_directory.pass.cpp @@ -15,13 +15,13 @@ // bool create_directory(const path& p, const path& attr); // bool create_directory(const path& p, const path& attr, error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directory/create_directory_with_attributes.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directory/create_directory_with_attributes.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directory/create_directory_with_attributes.pass.cpp @@ -13,13 +13,13 @@ // bool create_directory(const path& p, const path& attr); // bool create_directory(const path& p, const path& attr, error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directory_symlink/create_directory_symlink.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directory_symlink/create_directory_symlink.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directory_symlink/create_directory_symlink.pass.cpp @@ -14,12 +14,12 @@ // void create_directory_symlink(const path& existing_symlink, const path& new_symlink, // error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_hard_link/create_hard_link.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_hard_link/create_hard_link.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_hard_link/create_hard_link.pass.cpp @@ -14,11 +14,11 @@ // void create_hard_link(const path& existing_symlink, const path& new_symlink, // error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_symlink/create_symlink.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_symlink/create_symlink.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_symlink/create_symlink.pass.cpp @@ -14,12 +14,12 @@ // void create_symlink(const path& existing_symlink, const path& new_symlink, // error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.current_path/current_path.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.current_path/current_path.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.current_path/current_path.pass.cpp @@ -15,13 +15,13 @@ // void current_path(path const&); // void current_path(path const&, std::error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.equivalent/equivalent.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.equivalent/equivalent.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.equivalent/equivalent.pass.cpp @@ -13,13 +13,13 @@ // bool equivalent(path const& lhs, path const& rhs); // bool equivalent(path const& lhs, path const& rhs, std::error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.exists/exists.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.exists/exists.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.exists/exists.pass.cpp @@ -14,13 +14,13 @@ // bool exists(path const& p); // bool exists(path const& p, std::error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.file_size/file_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.file_size/file_size.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.file_size/file_size.pass.cpp @@ -13,13 +13,13 @@ // uintmax_t file_size(const path& p); // uintmax_t file_size(const path& p, std::error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_block_file/is_block_file.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_block_file/is_block_file.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_block_file/is_block_file.pass.cpp @@ -14,13 +14,13 @@ // bool is_block_file(path const& p); // bool is_block_file(path const& p, std::error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_char_file/is_character_file.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_char_file/is_character_file.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_char_file/is_character_file.pass.cpp @@ -14,13 +14,13 @@ // bool is_character_file(path const& p); // bool is_character_file(path const& p, std::error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_directory/is_directory.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_directory/is_directory.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_directory/is_directory.pass.cpp @@ -14,13 +14,13 @@ // bool is_directory(path const& p); // bool is_directory(path const& p, std::error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_empty/is_empty.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_empty/is_empty.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_empty/is_empty.pass.cpp @@ -13,13 +13,13 @@ // bool is_empty(path const& p); // bool is_empty(path const& p, std::error_code& ec); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_fifo/is_fifo.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_fifo/is_fifo.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_fifo/is_fifo.pass.cpp @@ -14,13 +14,13 @@ // bool is_fifo(path const& p); // bool is_fifo(path const& p, std::error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_other/is_other.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_other/is_other.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_other/is_other.pass.cpp @@ -14,13 +14,13 @@ // bool is_other(path const& p); // bool is_other(path const& p, std::error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_regular_file/is_regular_file.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_regular_file/is_regular_file.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_regular_file/is_regular_file.pass.cpp @@ -14,13 +14,13 @@ // bool is_regular_file(path const& p); // bool is_regular_file(path const& p, std::error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_socket/is_socket.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_socket/is_socket.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_socket/is_socket.pass.cpp @@ -14,13 +14,13 @@ // bool is_socket(path const& p); // bool is_socket(path const& p, std::error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_symlink/is_symlink.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_symlink/is_symlink.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_symlink/is_symlink.pass.cpp @@ -14,13 +14,13 @@ // bool is_symlink(path const& p); // bool is_symlink(path const& p, std::error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp @@ -16,15 +16,15 @@ // void last_write_time(const path& p, file_time_type new_type, // std::error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" #include #include Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.permissions/permissions.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.permissions/permissions.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.permissions/permissions.pass.cpp @@ -17,11 +17,11 @@ -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.proximate/proximate.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.proximate/proximate.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.proximate/proximate.pass.cpp @@ -14,7 +14,7 @@ // path proximate(const path& p, const path& base = current_path()) // path proximate(const path& p, const path& base, error_code& ec); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include @@ -22,9 +22,9 @@ #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" static int count_path_elems(const fs::path& p) { Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.read_symlink/read_symlink.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.read_symlink/read_symlink.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.read_symlink/read_symlink.pass.cpp @@ -13,11 +13,11 @@ // path read_symlink(const path& p); // path read_symlink(const path& p, error_code& ec); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.relative/relative.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.relative/relative.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.relative/relative.pass.cpp @@ -14,16 +14,16 @@ // path proximate(const path& p, const path& base = current_path()) // path proximate(const path& p, const path& base, error_code& ec); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" TEST_SUITE(filesystem_proximate_path_test_suite) Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove/remove.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove/remove.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove/remove.pass.cpp @@ -13,11 +13,11 @@ // bool remove(const path& p); // bool remove(const path& p, error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove_all/remove_all.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove_all/remove_all.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove_all/remove_all.pass.cpp @@ -13,11 +13,11 @@ // uintmax_t remove_all(const path& p); // uintmax_t remove_all(const path& p, error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.rename/rename.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.rename/rename.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.rename/rename.pass.cpp @@ -13,11 +13,11 @@ // void rename(const path& old_p, const path& new_p); // void rename(const path& old_p, const path& new_p, error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.resize_file/resize_file.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.resize_file/resize_file.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.resize_file/resize_file.pass.cpp @@ -13,11 +13,11 @@ // void resize_file(const path& p, uintmax_t new_size); // void resize_file(const path& p, uintmax_t new_size, error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.space/space.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.space/space.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.space/space.pass.cpp @@ -13,12 +13,12 @@ // space_info space(const path& p); // space_info space(const path& p, error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.status/status.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.status/status.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.status/status.pass.cpp @@ -13,11 +13,11 @@ // file_status status(const path& p); // file_status status(const path& p, error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.status_known/status_known.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.status_known/status_known.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.status_known/status_known.pass.cpp @@ -12,13 +12,13 @@ // bool status_known(file_status s) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.symlink_status/symlink_status.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.symlink_status/symlink_status.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.symlink_status/symlink_status.pass.cpp @@ -13,11 +13,11 @@ // file_status symlink_status(const path& p); // file_status symlink_status(const path& p, error_code& ec) noexcept; -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.temp_dir_path/temp_directory_path.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.temp_dir_path/temp_directory_path.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.temp_dir_path/temp_directory_path.pass.cpp @@ -13,15 +13,15 @@ // path temp_directory_path(); // path temp_directory_path(error_code& ec); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include #include #include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "filesystem_test_helper.hpp" +#include "rapid-cxx-test.h" +#include "filesystem_test_helper.h" using namespace fs; Index: libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.weakly_canonical/weakly_canonical.pass.cpp =================================================================== --- libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.weakly_canonical/weakly_canonical.pass.cpp +++ libcxx/trunk/test/std/input.output/filesystems/fs.op.funcs/fs.op.weakly_canonical/weakly_canonical.pass.cpp @@ -13,7 +13,7 @@ // path weakly_canonical(const path& p); // path weakly_canonical(const path& p, error_code& ec); -#include "filesystem_include.hpp" +#include "filesystem_include.h" #include #include #include @@ -21,8 +21,8 @@ #include "test_macros.h" #include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" +#include "count_new.h" +#include "filesystem_test_helper.h" int main(int, char**) { Index: libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.cons/container.pass.cpp =================================================================== --- libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.cons/container.pass.cpp +++ libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.cons/container.pass.cpp @@ -14,7 +14,7 @@ #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op++/post.pass.cpp =================================================================== --- libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op++/post.pass.cpp +++ libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op++/post.pass.cpp @@ -15,7 +15,7 @@ #include #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op++/pre.pass.cpp =================================================================== --- libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op++/pre.pass.cpp +++ libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op++/pre.pass.cpp @@ -15,7 +15,7 @@ #include #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op_astrk/test.pass.cpp =================================================================== --- libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op_astrk/test.pass.cpp +++ libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op_astrk/test.pass.cpp @@ -15,7 +15,7 @@ #include #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.inserter/test.pass.cpp =================================================================== --- libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.inserter/test.pass.cpp +++ libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.inserter/test.pass.cpp @@ -15,7 +15,7 @@ #include #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.cons/container.pass.cpp =================================================================== --- libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.cons/container.pass.cpp +++ libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.cons/container.pass.cpp @@ -14,7 +14,7 @@ #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op++/post.pass.cpp =================================================================== --- libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op++/post.pass.cpp +++ libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op++/post.pass.cpp @@ -15,7 +15,7 @@ #include #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op++/pre.pass.cpp =================================================================== --- libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op++/pre.pass.cpp +++ libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op++/pre.pass.cpp @@ -15,7 +15,7 @@ #include #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op=/lv_value.pass.cpp =================================================================== --- libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op=/lv_value.pass.cpp +++ libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op=/lv_value.pass.cpp @@ -16,7 +16,7 @@ #include #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op_astrk/test.pass.cpp =================================================================== --- libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op_astrk/test.pass.cpp +++ libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op_astrk/test.pass.cpp @@ -15,7 +15,7 @@ #include #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.inserter/test.pass.cpp =================================================================== --- libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.inserter/test.pass.cpp +++ libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.inserter/test.pass.cpp @@ -15,7 +15,7 @@ #include #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.cons/test.pass.cpp =================================================================== --- libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.cons/test.pass.cpp +++ libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.cons/test.pass.cpp @@ -14,7 +14,7 @@ #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op++/post.pass.cpp =================================================================== --- libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op++/post.pass.cpp +++ libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op++/post.pass.cpp @@ -15,7 +15,7 @@ #include #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op++/pre.pass.cpp =================================================================== --- libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op++/pre.pass.cpp +++ libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op++/pre.pass.cpp @@ -15,7 +15,7 @@ #include #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op=/lv_value.pass.cpp =================================================================== --- libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op=/lv_value.pass.cpp +++ libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op=/lv_value.pass.cpp @@ -17,7 +17,7 @@ #include #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op_astrk/test.pass.cpp =================================================================== --- libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op_astrk/test.pass.cpp +++ libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op_astrk/test.pass.cpp @@ -15,7 +15,7 @@ #include #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/inserter/test.pass.cpp =================================================================== --- libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/inserter/test.pass.cpp +++ libcxx/trunk/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/inserter/test.pass.cpp @@ -15,7 +15,7 @@ #include #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/language.support/support.dynamic/destroying_delete_t_declaration.pass.cpp =================================================================== --- libcxx/trunk/test/std/language.support/support.dynamic/destroying_delete_t_declaration.pass.cpp +++ libcxx/trunk/test/std/language.support/support.dynamic/destroying_delete_t_declaration.pass.cpp @@ -24,7 +24,7 @@ #include #include "test_macros.h" -#include "test_convertible.hpp" +#include "test_convertible.h" #ifdef __cpp_impl_destroying_delete # ifndef __cpp_lib_destroying_delete Index: libcxx/trunk/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.dtor/dtor.pass.cpp =================================================================== --- libcxx/trunk/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.dtor/dtor.pass.cpp +++ libcxx/trunk/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.dtor/dtor.pass.cpp @@ -15,7 +15,7 @@ #include #include -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" Index: libcxx/trunk/test/std/localization/locale.stdcvt/codecvt_utf16.pass.cpp =================================================================== --- libcxx/trunk/test/std/localization/locale.stdcvt/codecvt_utf16.pass.cpp +++ libcxx/trunk/test/std/localization/locale.stdcvt/codecvt_utf16.pass.cpp @@ -22,7 +22,7 @@ #include #include -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" Index: libcxx/trunk/test/std/localization/locale.stdcvt/codecvt_utf8.pass.cpp =================================================================== --- libcxx/trunk/test/std/localization/locale.stdcvt/codecvt_utf8.pass.cpp +++ libcxx/trunk/test/std/localization/locale.stdcvt/codecvt_utf8.pass.cpp @@ -22,7 +22,7 @@ #include #include -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" Index: libcxx/trunk/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/ctor.pass.cpp =================================================================== --- libcxx/trunk/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/ctor.pass.cpp +++ libcxx/trunk/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/ctor.pass.cpp @@ -19,7 +19,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" int main(int, char**) { Index: libcxx/trunk/test/std/localization/locales/locale/locale.cons/assign.pass.cpp =================================================================== --- libcxx/trunk/test/std/localization/locales/locale/locale.cons/assign.pass.cpp +++ libcxx/trunk/test/std/localization/locales/locale/locale.cons/assign.pass.cpp @@ -16,7 +16,7 @@ #include #include -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" #include "platform_support.h" // locale name macros Index: libcxx/trunk/test/std/localization/locales/locale/locale.cons/char_pointer.pass.cpp =================================================================== --- libcxx/trunk/test/std/localization/locales/locale/locale.cons/char_pointer.pass.cpp +++ libcxx/trunk/test/std/localization/locales/locale/locale.cons/char_pointer.pass.cpp @@ -20,7 +20,7 @@ #include #include -#include "count_new.hpp" +#include "count_new.h" #include "platform_support.h" // locale name macros #include "test_macros.h" Index: libcxx/trunk/test/std/localization/locales/locale/locale.cons/copy.pass.cpp =================================================================== --- libcxx/trunk/test/std/localization/locales/locale/locale.cons/copy.pass.cpp +++ libcxx/trunk/test/std/localization/locales/locale/locale.cons/copy.pass.cpp @@ -16,7 +16,7 @@ #include #include -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" #include "platform_support.h" // locale name macros Index: libcxx/trunk/test/std/localization/locales/locale/locale.cons/default.pass.cpp =================================================================== --- libcxx/trunk/test/std/localization/locales/locale/locale.cons/default.pass.cpp +++ libcxx/trunk/test/std/localization/locales/locale/locale.cons/default.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" #include "platform_support.h" // locale name macros -#include "count_new.hpp" +#include "count_new.h" void check(const std::locale& loc) { Index: libcxx/trunk/test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp =================================================================== --- libcxx/trunk/test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp +++ libcxx/trunk/test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp @@ -21,7 +21,7 @@ #include #include -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" #include "platform_support.h" // locale name macros Index: libcxx/trunk/test/std/localization/locales/locale/locale.cons/locale_facetptr.pass.cpp =================================================================== --- libcxx/trunk/test/std/localization/locales/locale/locale.cons/locale_facetptr.pass.cpp +++ libcxx/trunk/test/std/localization/locales/locale/locale.cons/locale_facetptr.pass.cpp @@ -16,7 +16,7 @@ #include #include -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" #include "platform_support.h" // locale name macros Index: libcxx/trunk/test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp =================================================================== --- libcxx/trunk/test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp +++ libcxx/trunk/test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp @@ -21,7 +21,7 @@ #include #include -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" #include "platform_support.h" // locale name macros Index: libcxx/trunk/test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp =================================================================== --- libcxx/trunk/test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp +++ libcxx/trunk/test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp @@ -21,7 +21,7 @@ #include #include -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" #include "platform_support.h" // locale name macros Index: libcxx/trunk/test/std/localization/locales/locale/locale.cons/string.pass.cpp =================================================================== --- libcxx/trunk/test/std/localization/locales/locale/locale.cons/string.pass.cpp +++ libcxx/trunk/test/std/localization/locales/locale/locale.cons/string.pass.cpp @@ -17,7 +17,7 @@ #include #include -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" #include "platform_support.h" // locale name macros Index: libcxx/trunk/test/std/localization/locales/locale/locale.members/combine.pass.cpp =================================================================== --- libcxx/trunk/test/std/localization/locales/locale/locale.members/combine.pass.cpp +++ libcxx/trunk/test/std/localization/locales/locale/locale.members/combine.pass.cpp @@ -14,7 +14,7 @@ #include #include -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" Index: libcxx/trunk/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp +++ libcxx/trunk/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp @@ -15,7 +15,7 @@ #include -#include "poisoned_hash_helper.hpp" +#include "poisoned_hash_helper.h" #include "test_macros.h" Index: libcxx/trunk/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp +++ libcxx/trunk/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp @@ -21,7 +21,7 @@ #include "test_macros.h" #include "test_allocator.h" #include "test_iterators.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template > using BStr = std::basic_string, Alloc>; Index: libcxx/trunk/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp @@ -15,7 +15,7 @@ #include -#include "poisoned_hash_helper.hpp" +#include "poisoned_hash_helper.h" #include "test_macros.h" Index: libcxx/trunk/test/std/strings/string.view/string.view.comparison/opeq.string_view.pointer.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.comparison/opeq.string_view.pointer.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.comparison/opeq.string_view.pointer.pass.cpp @@ -17,7 +17,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.comparison/opeq.string_view.string_view.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.comparison/opeq.string_view.string_view.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.comparison/opeq.string_view.string_view.pass.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.comparison/opge.string_view.pointer.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.comparison/opge.string_view.pointer.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.comparison/opge.string_view.pointer.pass.cpp @@ -17,7 +17,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.comparison/opge.string_view.string_view.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.comparison/opge.string_view.string_view.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.comparison/opge.string_view.string_view.pass.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.comparison/opgt.string_view.pointer.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.comparison/opgt.string_view.pointer.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.comparison/opgt.string_view.pointer.pass.cpp @@ -17,7 +17,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.comparison/opgt.string_view.string_view.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.comparison/opgt.string_view.string_view.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.comparison/opgt.string_view.string_view.pass.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.comparison/ople.string_view.pointer.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.comparison/ople.string_view.pointer.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.comparison/ople.string_view.pointer.pass.cpp @@ -17,7 +17,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.comparison/ople.string_view.string_view.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.comparison/ople.string_view.string_view.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.comparison/ople.string_view.string_view.pass.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.comparison/oplt.string_view.pointer.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.comparison/oplt.string_view.pointer.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.comparison/oplt.string_view.pointer.pass.cpp @@ -17,7 +17,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.comparison/oplt.string_view.string_view.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.comparison/oplt.string_view.string_view.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.comparison/oplt.string_view.string_view.pass.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.comparison/opne.string_view.pointer.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.comparison/opne.string_view.pointer.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.comparison/opne.string_view.pointer.pass.cpp @@ -17,7 +17,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.comparison/opne.string_view.string_view.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.comparison/opne.string_view.string_view.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.comparison/opne.string_view.string_view.pass.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.cons/from_literal.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.cons/from_literal.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.cons/from_literal.pass.cpp @@ -18,7 +18,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template size_t StrLen ( const CharT *s ) { Index: libcxx/trunk/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp @@ -18,7 +18,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" // Overloads // --------------- Index: libcxx/trunk/test/std/strings/string.view/string.view.find/find_char_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/find_char_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/find_char_size.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_not_of_char_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_not_of_char_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_not_of_char_size.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size_size.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_of_char_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_of_char_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_of_char_size.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_of_pointer_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_of_pointer_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_of_pointer_size.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_of_pointer_size_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_of_pointer_size_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/find_first_of_pointer_size_size.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_not_of_char_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_not_of_char_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_not_of_char_size.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size_size.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_of_char_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_of_char_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_of_char_size.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_of_pointer_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_of_pointer_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_of_pointer_size.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_of_pointer_size_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_of_pointer_size_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/find_last_of_pointer_size_size.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/find_pointer_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/find_pointer_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/find_pointer_size.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/find_pointer_size_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/find_pointer_size_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/find_pointer_size_size.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/find_string_view_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/find_string_view_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/find_string_view_size.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/rfind_char_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/rfind_char_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/rfind_char_size.pass.cpp @@ -13,7 +13,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/rfind_pointer_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/rfind_pointer_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/rfind_pointer_size.pass.cpp @@ -13,7 +13,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/rfind_pointer_size_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/rfind_pointer_size_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/rfind_pointer_size_size.pass.cpp @@ -13,7 +13,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.find/rfind_string_view_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.find/rfind_string_view_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.find/rfind_string_view_size.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" template void Index: libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.pointer.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.pointer.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.pointer.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); } Index: libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp @@ -15,7 +15,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); } Index: libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.size_size_sv.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.size_size_sv.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.size_size_sv.pass.cpp @@ -15,7 +15,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); } Index: libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); } Index: libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); } Index: libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.sv.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.sv.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.ops/compare.sv.pass.cpp @@ -14,7 +14,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); } Index: libcxx/trunk/test/std/strings/string.view/string.view.template/ends_with.char.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.template/ends_with.char.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.template/ends_with.char.pass.cpp @@ -15,7 +15,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" int main(int, char**) { Index: libcxx/trunk/test/std/strings/string.view/string.view.template/ends_with.ptr.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.template/ends_with.ptr.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.template/ends_with.ptr.pass.cpp @@ -15,7 +15,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" int main(int, char**) { Index: libcxx/trunk/test/std/strings/string.view/string.view.template/ends_with.string_view.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.template/ends_with.string_view.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.template/ends_with.string_view.pass.cpp @@ -15,7 +15,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" int main(int, char**) { Index: libcxx/trunk/test/std/strings/string.view/string.view.template/starts_with.char.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.template/starts_with.char.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.template/starts_with.char.pass.cpp @@ -15,7 +15,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" int main(int, char**) { Index: libcxx/trunk/test/std/strings/string.view/string.view.template/starts_with.ptr.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.template/starts_with.ptr.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.template/starts_with.ptr.pass.cpp @@ -15,7 +15,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" int main(int, char**) { Index: libcxx/trunk/test/std/strings/string.view/string.view.template/starts_with.string_view.pass.cpp =================================================================== --- libcxx/trunk/test/std/strings/string.view/string.view.template/starts_with.string_view.pass.cpp +++ libcxx/trunk/test/std/strings/string.view/string.view.template/starts_with.string_view.pass.cpp @@ -15,7 +15,7 @@ #include #include "test_macros.h" -#include "constexpr_char_traits.hpp" +#include "constexpr_char_traits.h" int main(int, char**) { Index: libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_assign.pass.cpp =================================================================== --- libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_assign.pass.cpp +++ libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_assign.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_ctor.pass.cpp =================================================================== --- libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_ctor.pass.cpp +++ libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_ctor.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_adopt_lock.pass.cpp =================================================================== --- libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_adopt_lock.pass.cpp +++ libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_adopt_lock.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_defer_lock.pass.cpp =================================================================== --- libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_defer_lock.pass.cpp +++ libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_defer_lock.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_assign.pass.cpp =================================================================== --- libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_assign.pass.cpp +++ libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_assign.pass.cpp @@ -16,7 +16,7 @@ #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_ctor.pass.cpp =================================================================== --- libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_ctor.pass.cpp +++ libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_ctor.pass.cpp @@ -16,7 +16,7 @@ #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_adopt_lock.pass.cpp =================================================================== --- libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_adopt_lock.pass.cpp +++ libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_adopt_lock.pass.cpp @@ -16,7 +16,7 @@ #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_defer_lock.pass.cpp =================================================================== --- libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_defer_lock.pass.cpp +++ libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_defer_lock.pass.cpp @@ -16,7 +16,7 @@ #include #include -#include "nasty_containers.hpp" +#include "nasty_containers.h" #include "test_macros.h" Index: libcxx/trunk/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/enabled_hashes.pass.cpp =================================================================== --- libcxx/trunk/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/enabled_hashes.pass.cpp +++ libcxx/trunk/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/enabled_hashes.pass.cpp @@ -16,7 +16,7 @@ #include -#include "poisoned_hash_helper.hpp" +#include "poisoned_hash_helper.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair.pass.cpp +++ libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair.pass.cpp @@ -22,8 +22,8 @@ #include #include #include -#include "uses_alloc_types.hpp" -#include "controlled_allocators.hpp" +#include "uses_alloc_types.h" +#include "controlled_allocators.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair_const_lvalue_pair.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair_const_lvalue_pair.pass.cpp +++ libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair_const_lvalue_pair.pass.cpp @@ -22,8 +22,8 @@ #include #include #include -#include "uses_alloc_types.hpp" -#include "controlled_allocators.hpp" +#include "uses_alloc_types.h" +#include "controlled_allocators.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair_piecewise.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair_piecewise.pass.cpp +++ libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair_piecewise.pass.cpp @@ -23,8 +23,8 @@ #include #include #include -#include "uses_alloc_types.hpp" -#include "controlled_allocators.hpp" +#include "uses_alloc_types.h" +#include "controlled_allocators.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair_rvalue.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair_rvalue.pass.cpp +++ libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair_rvalue.pass.cpp @@ -22,8 +22,8 @@ #include #include #include -#include "uses_alloc_types.hpp" -#include "controlled_allocators.hpp" +#include "uses_alloc_types.h" +#include "controlled_allocators.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair_values.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair_values.pass.cpp +++ libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair_values.pass.cpp @@ -22,8 +22,8 @@ #include #include #include -#include "uses_alloc_types.hpp" -#include "controlled_allocators.hpp" +#include "uses_alloc_types.h" +#include "controlled_allocators.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_type.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_type.pass.cpp +++ libcxx/trunk/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_type.pass.cpp @@ -22,8 +22,8 @@ #include #include #include -#include "uses_alloc_types.hpp" -#include "controlled_allocators.hpp" +#include "uses_alloc_types.h" +#include "controlled_allocators.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/any/any.class/any.assign/copy.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/any/any.class/any.assign/copy.pass.cpp +++ libcxx/trunk/test/std/utilities/any/any.class/any.assign/copy.pass.cpp @@ -20,7 +20,7 @@ #include #include "any_helpers.h" -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" using std::any; Index: libcxx/trunk/test/std/utilities/any/any.class/any.assign/value.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/any/any.class/any.assign/value.pass.cpp +++ libcxx/trunk/test/std/utilities/any/any.class/any.assign/value.pass.cpp @@ -21,7 +21,7 @@ #include #include "any_helpers.h" -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" using std::any; Index: libcxx/trunk/test/std/utilities/any/any.class/any.cons/copy.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/any/any.class/any.cons/copy.pass.cpp +++ libcxx/trunk/test/std/utilities/any/any.class/any.cons/copy.pass.cpp @@ -18,7 +18,7 @@ #include #include "any_helpers.h" -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" using std::any; Index: libcxx/trunk/test/std/utilities/any/any.class/any.cons/default.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/any/any.class/any.cons/default.pass.cpp +++ libcxx/trunk/test/std/utilities/any/any.class/any.cons/default.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" #include "any_helpers.h" -#include "count_new.hpp" +#include "count_new.h" int main(int, char**) { Index: libcxx/trunk/test/std/utilities/any/any.class/any.cons/in_place_type.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/any/any.class/any.cons/in_place_type.pass.cpp +++ libcxx/trunk/test/std/utilities/any/any.class/any.cons/in_place_type.pass.cpp @@ -27,9 +27,9 @@ #include #include "any_helpers.h" -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" -#include "test_convertible.hpp" +#include "test_convertible.h" using std::any; using std::any_cast; Index: libcxx/trunk/test/std/utilities/any/any.class/any.cons/move.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/any/any.class/any.cons/move.pass.cpp +++ libcxx/trunk/test/std/utilities/any/any.class/any.cons/move.pass.cpp @@ -20,7 +20,7 @@ #include #include "any_helpers.h" -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" using std::any; Index: libcxx/trunk/test/std/utilities/any/any.class/any.cons/value.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/any/any.class/any.cons/value.pass.cpp +++ libcxx/trunk/test/std/utilities/any/any.class/any.cons/value.pass.cpp @@ -25,7 +25,7 @@ #include #include "any_helpers.h" -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" using std::any; Index: libcxx/trunk/test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp +++ libcxx/trunk/test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp @@ -20,7 +20,7 @@ #include #include "any_helpers.h" -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" using std::any; Index: libcxx/trunk/test/std/utilities/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp +++ libcxx/trunk/test/std/utilities/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp @@ -26,7 +26,7 @@ #include #include "any_helpers.h" -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" using std::any; Index: libcxx/trunk/test/std/utilities/any/any.nonmembers/make_any.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/any/any.nonmembers/make_any.pass.cpp +++ libcxx/trunk/test/std/utilities/any/any.nonmembers/make_any.pass.cpp @@ -20,7 +20,7 @@ #include #include "any_helpers.h" -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" using std::any; Index: libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp +++ libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp @@ -19,7 +19,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" class A { Index: libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp +++ libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" class A { Index: libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp +++ libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp @@ -19,7 +19,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" class A { Index: libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.pass.cpp +++ libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.pass.cpp @@ -19,7 +19,7 @@ #include "test_macros.h" #include "min_allocator.h" #include "test_allocator.h" -#include "count_new.hpp" +#include "count_new.h" #include "../function_types.h" Index: libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.pass.cpp +++ libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.pass.cpp @@ -20,7 +20,7 @@ #include "test_macros.h" #include "min_allocator.h" #include "test_allocator.h" -#include "count_new.hpp" +#include "count_new.h" #include "../function_types.h" class DummyClass {}; Index: libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.pass.cpp +++ libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.pass.cpp @@ -23,7 +23,7 @@ #include "test_macros.h" #include "min_allocator.h" -#include "count_new.hpp" +#include "count_new.h" class A { Index: libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp +++ libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" class A { int data_[10]; Index: libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp +++ libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp @@ -19,7 +19,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" class A { Index: libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp +++ libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp @@ -15,7 +15,7 @@ #include #include -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp +++ libcxx/trunk/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp @@ -15,7 +15,7 @@ #include #include -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/function.objects/refwrap/refwrap.helpers/ref_2.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/function.objects/refwrap/refwrap.helpers/ref_2.pass.cpp +++ libcxx/trunk/test/std/utilities/function.objects/refwrap/refwrap.helpers/ref_2.pass.cpp @@ -15,7 +15,7 @@ #include #include -#include "counting_predicates.hpp" +#include "counting_predicates.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/function.objects/unord.hash/enabled_hashes.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/function.objects/unord.hash/enabled_hashes.pass.cpp +++ libcxx/trunk/test/std/utilities/function.objects/unord.hash/enabled_hashes.pass.cpp @@ -15,7 +15,7 @@ #include -#include "poisoned_hash_helper.hpp" +#include "poisoned_hash_helper.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/memory/default.allocator/allocator.members/allocate.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/memory/default.allocator/allocator.members/allocate.pass.cpp +++ libcxx/trunk/test/std/utilities/memory/default.allocator/allocator.members/allocate.pass.cpp @@ -16,7 +16,7 @@ #include // for std::max_align_t #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" #ifdef TEST_HAS_NO_ALIGNED_ALLOCATION Index: libcxx/trunk/test/std/utilities/memory/default.allocator/allocator.members/construct.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/memory/default.allocator/allocator.members/construct.pass.cpp +++ libcxx/trunk/test/std/utilities/memory/default.allocator/allocator.members/construct.pass.cpp @@ -15,7 +15,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" int A_constructed = 0; Index: libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.hash/enabled_hash.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.hash/enabled_hash.pass.cpp +++ libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.hash/enabled_hash.pass.cpp @@ -15,7 +15,7 @@ #include -#include "poisoned_hash_helper.hpp" +#include "poisoned_hash_helper.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.hash/hash_shared_ptr.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.hash/hash_shared_ptr.pass.cpp +++ libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.hash/hash_shared_ptr.pass.cpp @@ -20,7 +20,7 @@ #include #if TEST_STD_VER >= 11 -#include "poisoned_hash_helper.hpp" +#include "poisoned_hash_helper.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.hash/hash_unique_ptr.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.hash/hash_unique_ptr.pass.cpp +++ libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.hash/hash_unique_ptr.pass.cpp @@ -22,7 +22,7 @@ #include "test_macros.h" #if TEST_STD_VER >= 11 -#include "poisoned_hash_helper.hpp" +#include "poisoned_hash_helper.h" #include "deleter_types.h" #include "min_allocator.h" Index: libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.enab/enable_shared_from_this.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.enab/enable_shared_from_this.pass.cpp +++ libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.enab/enable_shared_from_this.pass.cpp @@ -25,7 +25,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" struct T : public std::enable_shared_from_this Index: libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/auto_ptr.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/auto_ptr.pass.cpp +++ libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/auto_ptr.pass.cpp @@ -19,7 +19,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" struct B { Index: libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter_throw.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter_throw.pass.cpp +++ libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter_throw.pass.cpp @@ -21,7 +21,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" #include "deleter_types.h" Index: libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter_throw.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter_throw.pass.cpp +++ libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter_throw.pass.cpp @@ -20,7 +20,7 @@ #include #include -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" #include "deleter_types.h" Index: libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_throw.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_throw.pass.cpp +++ libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_throw.pass.cpp @@ -19,7 +19,7 @@ #include #include -#include "count_new.hpp" +#include "count_new.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/unique_ptr.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/unique_ptr.pass.cpp +++ libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/unique_ptr.pass.cpp @@ -18,7 +18,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" struct B { Index: libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/make_shared.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/make_shared.pass.cpp +++ libcxx/trunk/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/make_shared.pass.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "count_new.hpp" +#include "count_new.h" #if TEST_STD_VER >= 11 #define DELETE_FUNCTION = delete Index: libcxx/trunk/test/std/utilities/optional/optional.hash/enabled_hash.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.hash/enabled_hash.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.hash/enabled_hash.pass.cpp @@ -15,7 +15,7 @@ #include -#include "poisoned_hash_helper.hpp" +#include "poisoned_hash_helper.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/optional/optional.hash/hash.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.hash/hash.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.hash/hash.pass.cpp @@ -16,7 +16,7 @@ #include #include -#include "poisoned_hash_helper.hpp" +#include "poisoned_hash_helper.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/assign_value.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/assign_value.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/assign_value.pass.cpp @@ -17,7 +17,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" using std::optional; Index: libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/const_optional_U.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/const_optional_U.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/const_optional_U.pass.cpp @@ -18,7 +18,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" using std::optional; Index: libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/copy.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/copy.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/copy.pass.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" using std::optional; Index: libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/emplace.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/emplace.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/emplace.pass.cpp @@ -17,7 +17,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" using std::optional; Index: libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/move.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/move.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/move.pass.cpp @@ -19,7 +19,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" using std::optional; Index: libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/nullopt_t.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/nullopt_t.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/nullopt_t.pass.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" using std::optional; using std::nullopt_t; Index: libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/optional_U.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/optional_U.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.assign/optional_U.pass.cpp @@ -19,7 +19,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" using std::optional; Index: libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp @@ -20,8 +20,8 @@ #include #include "test_macros.h" -#include "archetypes.hpp" -#include "test_convertible.hpp" +#include "archetypes.h" +#include "test_convertible.h" using std::optional; Index: libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/const_T.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/const_T.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/const_T.pass.cpp @@ -19,7 +19,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" using std::optional; Index: libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/copy.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/copy.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/copy.pass.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" using std::optional; Index: libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/default.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/default.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/default.pass.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" using std::optional; Index: libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/empty_in_place_t_does_not_clobber.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/empty_in_place_t_does_not_clobber.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/empty_in_place_t_does_not_clobber.pass.cpp @@ -20,7 +20,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" using std::optional; Index: libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp @@ -19,7 +19,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" using std::optional; Index: libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/nullopt_t.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/nullopt_t.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/nullopt_t.pass.cpp @@ -15,7 +15,7 @@ #include #include -#include "archetypes.hpp" +#include "archetypes.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp @@ -19,7 +19,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" using std::optional; Index: libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.swap/swap.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.swap/swap.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/optional.object.swap/swap.pass.cpp @@ -18,7 +18,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" using std::optional; Index: libcxx/trunk/test/std/utilities/optional/optional.object/special_members.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/special_members.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/special_members.pass.cpp @@ -16,7 +16,7 @@ #include #include -#include "archetypes.hpp" +#include "archetypes.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/optional/optional.object/triviality.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.object/triviality.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.object/triviality.pass.cpp @@ -22,7 +22,7 @@ #include #include -#include "archetypes.hpp" +#include "archetypes.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/optional/optional.specalg/swap.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.specalg/swap.pass.cpp +++ libcxx/trunk/test/std/utilities/optional/optional.specalg/swap.pass.cpp @@ -17,7 +17,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" using std::optional; Index: libcxx/trunk/test/std/utilities/template.bitset/bitset.hash/enabled_hash.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/template.bitset/bitset.hash/enabled_hash.pass.cpp +++ libcxx/trunk/test/std/utilities/template.bitset/bitset.hash/enabled_hash.pass.cpp @@ -15,7 +15,7 @@ #include -#include "poisoned_hash_helper.hpp" +#include "poisoned_hash_helper.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/UTypes.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/UTypes.pass.cpp +++ libcxx/trunk/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/UTypes.pass.cpp @@ -20,7 +20,7 @@ #include #include "test_macros.h" -#include "test_convertible.hpp" +#include "test_convertible.h" #include "MoveOnly.h" #if TEST_STD_VER > 11 Index: libcxx/trunk/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/deduct.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/deduct.pass.cpp +++ libcxx/trunk/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/deduct.pass.cpp @@ -26,7 +26,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" // Overloads Index: libcxx/trunk/test/std/utilities/type.index/type.index.hash/enabled_hash.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/type.index/type.index.hash/enabled_hash.pass.cpp +++ libcxx/trunk/test/std/utilities/type.index/type.index.hash/enabled_hash.pass.cpp @@ -15,7 +15,7 @@ #include -#include "poisoned_hash_helper.hpp" +#include "poisoned_hash_helper.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/type.index/type.index.synopsis/hash_type_index.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/type.index/type.index.synopsis/hash_type_index.pass.cpp +++ libcxx/trunk/test/std/utilities/type.index/type.index.synopsis/hash_type_index.pass.cpp @@ -19,7 +19,7 @@ #include "test_macros.h" #if TEST_STD_VER >= 11 -#include "poisoned_hash_helper.hpp" +#include "poisoned_hash_helper.h" #endif int main(int, char**) Index: libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/U_V.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/U_V.pass.cpp +++ libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/U_V.pass.cpp @@ -19,8 +19,8 @@ #include #include -#include "archetypes.hpp" -#include "test_convertible.hpp" +#include "archetypes.h" +#include "test_convertible.h" #include "test_macros.h" using namespace ImplicitTypes; // Get implicitly archetypes Index: libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/assign_const_pair_U_V.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/assign_const_pair_U_V.pass.cpp +++ libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/assign_const_pair_U_V.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" #if TEST_STD_VER >= 11 -#include "archetypes.hpp" +#include "archetypes.h" #endif int main(int, char**) Index: libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/assign_rv_pair_U_V.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/assign_rv_pair_U_V.pass.cpp +++ libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/assign_rv_pair_U_V.pass.cpp @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/const_first_const_second.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/const_first_const_second.pass.cpp +++ libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/const_first_const_second.pass.cpp @@ -17,8 +17,8 @@ #include #include -#include "archetypes.hpp" -#include "test_convertible.hpp" +#include "archetypes.h" +#include "test_convertible.h" #include "test_macros.h" using namespace ImplicitTypes; // Get implicitly archetypes Index: libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/const_pair_U_V.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/const_pair_U_V.pass.cpp +++ libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/const_pair_U_V.pass.cpp @@ -17,8 +17,8 @@ #include #include -#include "archetypes.hpp" -#include "test_convertible.hpp" +#include "archetypes.h" +#include "test_convertible.h" #include "test_macros.h" using namespace ImplicitTypes; // Get implicitly archetypes Index: libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/default.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/default.pass.cpp +++ libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/default.pass.cpp @@ -26,7 +26,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" int main(int, char**) { Index: libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/implicit_deduction_guides.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/implicit_deduction_guides.pass.cpp +++ libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/implicit_deduction_guides.pass.cpp @@ -26,7 +26,7 @@ #include #include "test_macros.h" -#include "archetypes.hpp" +#include "archetypes.h" // Overloads Index: libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/rv_pair_U_V.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/rv_pair_U_V.pass.cpp +++ libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/rv_pair_U_V.pass.cpp @@ -18,8 +18,8 @@ #include #include -#include "archetypes.hpp" -#include "test_convertible.hpp" +#include "archetypes.h" +#include "test_convertible.h" #include "test_macros.h" using namespace ImplicitTypes; // Get implicitly archetypes Index: libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/special_member_generation_test.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/special_member_generation_test.pass.cpp +++ libcxx/trunk/test/std/utilities/utility/pairs/pairs.pair/special_member_generation_test.pass.cpp @@ -24,7 +24,7 @@ #include #include -#include "archetypes.hpp" +#include "archetypes.h" #include "test_macros.h" using namespace ImplicitTypes; // Get implicitly archetypes Index: libcxx/trunk/test/std/utilities/variant/variant.hash/enabled_hash.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.hash/enabled_hash.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.hash/enabled_hash.pass.cpp @@ -15,7 +15,7 @@ #include -#include "poisoned_hash_helper.hpp" +#include "poisoned_hash_helper.h" #include "test_macros.h" Index: libcxx/trunk/test/std/utilities/variant/variant.hash/hash.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.hash/hash.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.hash/hash.pass.cpp @@ -19,8 +19,8 @@ #include #include "test_macros.h" -#include "variant_test_helpers.hpp" -#include "poisoned_hash_helper.hpp" +#include "variant_test_helpers.h" +#include "poisoned_hash_helper.h" #ifndef TEST_HAS_NO_EXCEPTIONS namespace std { Index: libcxx/trunk/test/std/utilities/variant/variant.helpers/variant_alternative.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.helpers/variant_alternative.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.helpers/variant_alternative.pass.cpp @@ -26,7 +26,7 @@ #include #include "test_macros.h" -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" template void test() { static_assert( Index: libcxx/trunk/test/std/utilities/variant/variant.get/get_if_index.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.get/get_if_index.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.get/get_if_index.pass.cpp @@ -19,7 +19,7 @@ // get_if(const variant* v) noexcept; #include "test_macros.h" -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" #include #include #include Index: libcxx/trunk/test/std/utilities/variant/variant.get/get_if_type.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.get/get_if_type.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.get/get_if_type.pass.cpp @@ -18,7 +18,7 @@ // noexcept; #include "test_macros.h" -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" #include #include Index: libcxx/trunk/test/std/utilities/variant/variant.get/get_index.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.get/get_index.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.get/get_index.pass.cpp @@ -28,7 +28,7 @@ #include "test_macros.h" #include "test_workarounds.h" -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" #include #include #include Index: libcxx/trunk/test/std/utilities/variant/variant.get/get_type.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.get/get_type.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.get/get_type.pass.cpp @@ -22,7 +22,7 @@ #include "test_macros.h" #include "test_workarounds.h" -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" #include #include #include Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp @@ -25,7 +25,7 @@ #include #include "test_macros.h" -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" namespace MetaHelpers { Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant.assign/conv.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant.assign/conv.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant.assign/conv.pass.cpp @@ -20,7 +20,7 @@ #include #include -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" int main(int, char**) { Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp @@ -29,7 +29,7 @@ #include #include "test_macros.h" -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" struct NoCopy { NoCopy(const NoCopy &) = delete; Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/T.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/T.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/T.pass.cpp @@ -23,7 +23,7 @@ #include #include "test_macros.h" -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" struct Dummy { Dummy() = default; Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/conv.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/conv.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/conv.pass.cpp @@ -19,7 +19,7 @@ #include #include -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" int main(int, char**) { Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp @@ -22,7 +22,7 @@ #include #include "test_macros.h" -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" struct NonDefaultConstructible { constexpr NonDefaultConstructible(int) {} Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp @@ -23,7 +23,7 @@ #include #include -#include "test_convertible.hpp" +#include "test_convertible.h" #include "test_macros.h" void test_ctor_sfinae() { Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_init_list_args.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_init_list_args.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_init_list_args.pass.cpp @@ -23,7 +23,7 @@ #include #include -#include "test_convertible.hpp" +#include "test_convertible.h" #include "test_macros.h" struct InitList { Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp @@ -22,7 +22,7 @@ #include #include -#include "test_convertible.hpp" +#include "test_convertible.h" #include "test_macros.h" void test_ctor_sfinae() { Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_init_list_args.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_init_list_args.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_init_list_args.pass.cpp @@ -23,7 +23,7 @@ #include #include -#include "test_convertible.hpp" +#include "test_convertible.h" #include "test_macros.h" struct InitList { Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp @@ -23,10 +23,10 @@ #include #include -#include "archetypes.hpp" -#include "test_convertible.hpp" +#include "archetypes.h" +#include "test_convertible.h" #include "test_macros.h" -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" template constexpr auto test_emplace_exists_imp(int) -> decltype( Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp @@ -23,8 +23,8 @@ #include #include -#include "archetypes.hpp" -#include "test_convertible.hpp" +#include "archetypes.h" +#include "test_convertible.h" #include "test_macros.h" struct InitList { Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp @@ -22,10 +22,10 @@ #include #include -#include "archetypes.hpp" -#include "test_convertible.hpp" +#include "archetypes.h" +#include "test_convertible.h" #include "test_macros.h" -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" template constexpr auto test_emplace_exists_imp(int) -> decltype( Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp @@ -23,8 +23,8 @@ #include #include -#include "archetypes.hpp" -#include "test_convertible.hpp" +#include "archetypes.h" +#include "test_convertible.h" #include "test_macros.h" struct InitList { Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant.status/index.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant.status/index.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant.status/index.pass.cpp @@ -20,9 +20,9 @@ #include #include -#include "archetypes.hpp" +#include "archetypes.h" #include "test_macros.h" -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" int main(int, char**) { Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant.status/valueless_by_exception.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant.status/valueless_by_exception.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant.status/valueless_by_exception.pass.cpp @@ -20,9 +20,9 @@ #include #include -#include "archetypes.hpp" +#include "archetypes.h" #include "test_macros.h" -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" int main(int, char**) { Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp @@ -22,9 +22,9 @@ #include #include -#include "test_convertible.hpp" +#include "test_convertible.h" #include "test_macros.h" -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" struct NotSwappable {}; void swap(NotSwappable &, NotSwappable &) = delete; Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant_array.fail.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant_array.fail.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant_array.fail.cpp @@ -20,8 +20,8 @@ #include #include "test_macros.h" -#include "variant_test_helpers.hpp" -#include "test_convertible.hpp" +#include "variant_test_helpers.h" +#include "test_convertible.h" int main(int, char**) { Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant_empty.fail.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant_empty.fail.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant_empty.fail.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" int main(int, char**) { Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant_reference.fail.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant_reference.fail.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant_reference.fail.cpp @@ -16,7 +16,7 @@ #include #include "test_macros.h" -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" int main(int, char**) { Index: libcxx/trunk/test/std/utilities/variant/variant.variant/variant_void.fail.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.variant/variant_void.fail.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.variant/variant_void.fail.cpp @@ -20,8 +20,8 @@ #include #include "test_macros.h" -#include "variant_test_helpers.hpp" -#include "test_convertible.hpp" +#include "variant_test_helpers.h" +#include "test_convertible.h" int main(int, char**) { Index: libcxx/trunk/test/std/utilities/variant/variant.visit/visit.pass.cpp =================================================================== --- libcxx/trunk/test/std/utilities/variant/variant.visit/visit.pass.cpp +++ libcxx/trunk/test/std/utilities/variant/variant.visit/visit.pass.cpp @@ -24,7 +24,7 @@ #include "test_macros.h" #include "type_id.h" -#include "variant_test_helpers.hpp" +#include "variant_test_helpers.h" enum CallType : unsigned { CT_None, Index: libcxx/trunk/test/support/archetypes.h =================================================================== --- libcxx/trunk/test/support/archetypes.h +++ libcxx/trunk/test/support/archetypes.h @@ -0,0 +1,393 @@ +#ifndef TEST_SUPPORT_ARCHETYPES_H +#define TEST_SUPPORT_ARCHETYPES_H + +#include +#include + +#include "test_macros.h" +#include "test_workarounds.h" + +#if TEST_STD_VER >= 11 + +namespace ArchetypeBases { + +template +struct DepType : T {}; + +struct NullBase { +#ifndef TEST_WORKAROUND_C1XX_BROKEN_ZA_CTOR_CHECK +protected: +#endif // !TEST_WORKAROUND_C1XX_BROKEN_ZA_CTOR_CHECK + NullBase() = default; + NullBase(NullBase const&) = default; + NullBase& operator=(NullBase const&) = default; + NullBase(NullBase &&) = default; + NullBase& operator=(NullBase &&) = default; +}; + +template +struct TestBase { + static int alive; + static int constructed; + static int value_constructed; + static int default_constructed; + static int copy_constructed; + static int move_constructed; + static int assigned; + static int value_assigned; + static int copy_assigned; + static int move_assigned; + static int destroyed; + + static void reset() { + assert(alive == 0); + alive = 0; + reset_constructors(); + } + + static void reset_constructors() { + constructed = value_constructed = default_constructed = + copy_constructed = move_constructed = 0; + assigned = value_assigned = copy_assigned = move_assigned = destroyed = 0; + } + + TestBase() noexcept : value(0) { + ++alive; ++constructed; ++default_constructed; + } + template ::type = true> + explicit TestBase(int x) noexcept : value(x) { + ++alive; ++constructed; ++value_constructed; + } + template ::type = true> + TestBase(int x) noexcept : value(x) { + ++alive; ++constructed; ++value_constructed; + } + template ::type = true> + explicit TestBase(int, int y) noexcept : value(y) { + ++alive; ++constructed; ++value_constructed; + } + template ::type = true> + TestBase(int, int y) noexcept : value(y) { + ++alive; ++constructed; ++value_constructed; + } + template ::type = true> + explicit TestBase(std::initializer_list& il, int = 0) noexcept + : value(static_cast(il.size())) { + ++alive; ++constructed; ++value_constructed; + } + template ::type = true> + explicit TestBase(std::initializer_list& il, int = 0) noexcept : value(static_cast(il.size())) { + ++alive; ++constructed; ++value_constructed; + } + TestBase& operator=(int xvalue) noexcept { + value = xvalue; + ++assigned; ++value_assigned; + return *this; + } +#ifndef TEST_WORKAROUND_C1XX_BROKEN_ZA_CTOR_CHECK +protected: +#endif // !TEST_WORKAROUND_C1XX_BROKEN_ZA_CTOR_CHECK + ~TestBase() { + assert(value != -999); assert(alive > 0); + --alive; ++destroyed; value = -999; + } + explicit TestBase(TestBase const& o) noexcept : value(o.value) { + assert(o.value != -1); assert(o.value != -999); + ++alive; ++constructed; ++copy_constructed; + } + explicit TestBase(TestBase && o) noexcept : value(o.value) { + assert(o.value != -1); assert(o.value != -999); + ++alive; ++constructed; ++move_constructed; + o.value = -1; + } + TestBase& operator=(TestBase const& o) noexcept { + assert(o.value != -1); assert(o.value != -999); + ++assigned; ++copy_assigned; + value = o.value; + return *this; + } + TestBase& operator=(TestBase&& o) noexcept { + assert(o.value != -1); assert(o.value != -999); + ++assigned; ++move_assigned; + value = o.value; + o.value = -1; + return *this; + } +public: + int value; +}; + +template int TestBase::alive = 0; +template int TestBase::constructed = 0; +template int TestBase::value_constructed = 0; +template int TestBase::default_constructed = 0; +template int TestBase::copy_constructed = 0; +template int TestBase::move_constructed = 0; +template int TestBase::assigned = 0; +template int TestBase::value_assigned = 0; +template int TestBase::copy_assigned = 0; +template int TestBase::move_assigned = 0; +template int TestBase::destroyed = 0; + +template +struct ValueBase { + template ::type = true> + explicit constexpr ValueBase(int x) : value(x) {} + template ::type = true> + constexpr ValueBase(int x) : value(x) {} + template ::type = true> + explicit constexpr ValueBase(int, int y) : value(y) {} + template ::type = true> + constexpr ValueBase(int, int y) : value(y) {} + template ::type = true> + explicit constexpr ValueBase(std::initializer_list& il, int = 0) : value(static_cast(il.size())) {} + template ::type = true> + constexpr ValueBase(std::initializer_list& il, int = 0) : value(static_cast(il.size())) {} + TEST_CONSTEXPR_CXX14 ValueBase& operator=(int xvalue) noexcept { + value = xvalue; + return *this; + } + //~ValueBase() { assert(value != -999); value = -999; } + int value; +#ifndef TEST_WORKAROUND_C1XX_BROKEN_ZA_CTOR_CHECK +protected: +#endif // !TEST_WORKAROUND_C1XX_BROKEN_ZA_CTOR_CHECK + constexpr static int check_value(int const& val) { +#if TEST_STD_VER < 14 + return val == -1 || val == 999 ? (TEST_THROW(42), 0) : val; +#else + assert(val != -1); assert(val != 999); + return val; +#endif + } + constexpr static int check_value(int& val, int val_cp = 0) { +#if TEST_STD_VER < 14 + return val_cp = val, val = -1, (val_cp == -1 || val_cp == 999 ? (TEST_THROW(42), 0) : val_cp); +#else + assert(val != -1); assert(val != 999); + val_cp = val; + val = -1; + return val_cp; +#endif + } + constexpr ValueBase() noexcept : value(0) {} + constexpr ValueBase(ValueBase const& o) noexcept : value(check_value(o.value)) { + } + constexpr ValueBase(ValueBase && o) noexcept : value(check_value(o.value)) { + } + TEST_CONSTEXPR_CXX14 ValueBase& operator=(ValueBase const& o) noexcept { + assert(o.value != -1); assert(o.value != -999); + value = o.value; + return *this; + } + TEST_CONSTEXPR_CXX14 ValueBase& operator=(ValueBase&& o) noexcept { + assert(o.value != -1); assert(o.value != -999); + value = o.value; + o.value = -1; + return *this; + } +}; + + +template +struct TrivialValueBase { + template ::type = true> + explicit constexpr TrivialValueBase(int x) : value(x) {} + template ::type = true> + constexpr TrivialValueBase(int x) : value(x) {} + template ::type = true> + explicit constexpr TrivialValueBase(int, int y) : value(y) {} + template ::type = true> + constexpr TrivialValueBase(int, int y) : value(y) {} + template ::type = true> + explicit constexpr TrivialValueBase(std::initializer_list& il, int = 0) : value(static_cast(il.size())) {} + template ::type = true> + constexpr TrivialValueBase(std::initializer_list& il, int = 0) : value(static_cast(il.size())) {} + int value; +#ifndef TEST_WORKAROUND_C1XX_BROKEN_ZA_CTOR_CHECK +protected: +#endif // !TEST_WORKAROUND_C1XX_BROKEN_ZA_CTOR_CHECK + constexpr TrivialValueBase() noexcept : value(0) {} +}; + +} + +//============================================================================// +// Trivial Implicit Test Types +namespace ImplicitTypes { +#include "archetypes.ipp" +} + +//============================================================================// +// Trivial Explicit Test Types +namespace ExplicitTypes { +#define DEFINE_EXPLICIT explicit +#include "archetypes.ipp" +} + +//============================================================================// +// +namespace NonConstexprTypes { +#define DEFINE_CONSTEXPR +#include "archetypes.ipp" +} + +//============================================================================// +// Non-literal implicit test types +namespace NonLiteralTypes { +#define DEFINE_ASSIGN_CONSTEXPR +#define DEFINE_DTOR(Name) ~Name() {} +#include "archetypes.ipp" +} + +//============================================================================// +// Non-throwing implicit test types +namespace NonThrowingTypes { +#define DEFINE_NOEXCEPT noexcept +#include "archetypes.ipp" +} + +//============================================================================// +// Non-Trivially Copyable Implicit Test Types +namespace NonTrivialTypes { +#define DEFINE_CTOR {} +#define DEFINE_ASSIGN { return *this; } +#include "archetypes.ipp" +} + +//============================================================================// +// Implicit counting types +namespace TestTypes { +#define DEFINE_CONSTEXPR +#define DEFINE_BASE(Name) ::ArchetypeBases::TestBase +#include "archetypes.ipp" + +using TestType = AllCtors; + +// Add equality operators +template +constexpr bool operator==(Tp const& L, Tp const& R) noexcept { + return L.value == R.value; +} + +template +constexpr bool operator!=(Tp const& L, Tp const& R) noexcept { + return L.value != R.value; +} + +} + +//============================================================================// +// Implicit counting types +namespace ExplicitTestTypes { +#define DEFINE_CONSTEXPR +#define DEFINE_EXPLICIT explicit +#define DEFINE_BASE(Name) ::ArchetypeBases::TestBase +#include "archetypes.ipp" + +using TestType = AllCtors; + +// Add equality operators +template +constexpr bool operator==(Tp const& L, Tp const& R) noexcept { + return L.value == R.value; +} + +template +constexpr bool operator!=(Tp const& L, Tp const& R) noexcept { + return L.value != R.value; +} + +} + +//============================================================================// +// Implicit value types +namespace ConstexprTestTypes { +#define DEFINE_BASE(Name) ::ArchetypeBases::ValueBase<> +#include "archetypes.ipp" + +using TestType = AllCtors; + +// Add equality operators +template +constexpr bool operator==(Tp const& L, Tp const& R) noexcept { + return L.value == R.value; +} + +template +constexpr bool operator!=(Tp const& L, Tp const& R) noexcept { + return L.value != R.value; +} + +} // end namespace ConstexprTestTypes + + +//============================================================================// +// +namespace ExplicitConstexprTestTypes { +#define DEFINE_EXPLICIT explicit +#define DEFINE_BASE(Name) ::ArchetypeBases::ValueBase +#include "archetypes.ipp" + +using TestType = AllCtors; + +// Add equality operators +template +constexpr bool operator==(Tp const& L, Tp const& R) noexcept { + return L.value == R.value; +} + +template +constexpr bool operator!=(Tp const& L, Tp const& R) noexcept { + return L.value != R.value; +} + +} // end namespace ExplicitConstexprTestTypes + + +//============================================================================// +// +namespace TrivialTestTypes { +#define DEFINE_BASE(Name) ::ArchetypeBases::TrivialValueBase +#include "archetypes.ipp" + +using TestType = AllCtors; + +// Add equality operators +template +constexpr bool operator==(Tp const& L, Tp const& R) noexcept { + return L.value == R.value; +} + +template +constexpr bool operator!=(Tp const& L, Tp const& R) noexcept { + return L.value != R.value; +} + +} // end namespace TrivialTestTypes + +//============================================================================// +// +namespace ExplicitTrivialTestTypes { +#define DEFINE_EXPLICIT explicit +#define DEFINE_BASE(Name) ::ArchetypeBases::TrivialValueBase +#include "archetypes.ipp" + +using TestType = AllCtors; + +// Add equality operators +template +constexpr bool operator==(Tp const& L, Tp const& R) noexcept { + return L.value == R.value; +} + +template +constexpr bool operator!=(Tp const& L, Tp const& R) noexcept { + return L.value != R.value; +} + +} // end namespace ExplicitTrivialTestTypes + +#endif // TEST_STD_VER >= 11 + +#endif // TEST_SUPPORT_ARCHETYPES_H Index: libcxx/trunk/test/support/archetypes.hpp =================================================================== --- libcxx/trunk/test/support/archetypes.hpp +++ libcxx/trunk/test/support/archetypes.hpp @@ -1,393 +0,0 @@ -#ifndef TEST_SUPPORT_ARCHETYPES_HPP -#define TEST_SUPPORT_ARCHETYPES_HPP - -#include -#include - -#include "test_macros.h" -#include "test_workarounds.h" - -#if TEST_STD_VER >= 11 - -namespace ArchetypeBases { - -template -struct DepType : T {}; - -struct NullBase { -#ifndef TEST_WORKAROUND_C1XX_BROKEN_ZA_CTOR_CHECK -protected: -#endif // !TEST_WORKAROUND_C1XX_BROKEN_ZA_CTOR_CHECK - NullBase() = default; - NullBase(NullBase const&) = default; - NullBase& operator=(NullBase const&) = default; - NullBase(NullBase &&) = default; - NullBase& operator=(NullBase &&) = default; -}; - -template -struct TestBase { - static int alive; - static int constructed; - static int value_constructed; - static int default_constructed; - static int copy_constructed; - static int move_constructed; - static int assigned; - static int value_assigned; - static int copy_assigned; - static int move_assigned; - static int destroyed; - - static void reset() { - assert(alive == 0); - alive = 0; - reset_constructors(); - } - - static void reset_constructors() { - constructed = value_constructed = default_constructed = - copy_constructed = move_constructed = 0; - assigned = value_assigned = copy_assigned = move_assigned = destroyed = 0; - } - - TestBase() noexcept : value(0) { - ++alive; ++constructed; ++default_constructed; - } - template ::type = true> - explicit TestBase(int x) noexcept : value(x) { - ++alive; ++constructed; ++value_constructed; - } - template ::type = true> - TestBase(int x) noexcept : value(x) { - ++alive; ++constructed; ++value_constructed; - } - template ::type = true> - explicit TestBase(int, int y) noexcept : value(y) { - ++alive; ++constructed; ++value_constructed; - } - template ::type = true> - TestBase(int, int y) noexcept : value(y) { - ++alive; ++constructed; ++value_constructed; - } - template ::type = true> - explicit TestBase(std::initializer_list& il, int = 0) noexcept - : value(static_cast(il.size())) { - ++alive; ++constructed; ++value_constructed; - } - template ::type = true> - explicit TestBase(std::initializer_list& il, int = 0) noexcept : value(static_cast(il.size())) { - ++alive; ++constructed; ++value_constructed; - } - TestBase& operator=(int xvalue) noexcept { - value = xvalue; - ++assigned; ++value_assigned; - return *this; - } -#ifndef TEST_WORKAROUND_C1XX_BROKEN_ZA_CTOR_CHECK -protected: -#endif // !TEST_WORKAROUND_C1XX_BROKEN_ZA_CTOR_CHECK - ~TestBase() { - assert(value != -999); assert(alive > 0); - --alive; ++destroyed; value = -999; - } - explicit TestBase(TestBase const& o) noexcept : value(o.value) { - assert(o.value != -1); assert(o.value != -999); - ++alive; ++constructed; ++copy_constructed; - } - explicit TestBase(TestBase && o) noexcept : value(o.value) { - assert(o.value != -1); assert(o.value != -999); - ++alive; ++constructed; ++move_constructed; - o.value = -1; - } - TestBase& operator=(TestBase const& o) noexcept { - assert(o.value != -1); assert(o.value != -999); - ++assigned; ++copy_assigned; - value = o.value; - return *this; - } - TestBase& operator=(TestBase&& o) noexcept { - assert(o.value != -1); assert(o.value != -999); - ++assigned; ++move_assigned; - value = o.value; - o.value = -1; - return *this; - } -public: - int value; -}; - -template int TestBase::alive = 0; -template int TestBase::constructed = 0; -template int TestBase::value_constructed = 0; -template int TestBase::default_constructed = 0; -template int TestBase::copy_constructed = 0; -template int TestBase::move_constructed = 0; -template int TestBase::assigned = 0; -template int TestBase::value_assigned = 0; -template int TestBase::copy_assigned = 0; -template int TestBase::move_assigned = 0; -template int TestBase::destroyed = 0; - -template -struct ValueBase { - template ::type = true> - explicit constexpr ValueBase(int x) : value(x) {} - template ::type = true> - constexpr ValueBase(int x) : value(x) {} - template ::type = true> - explicit constexpr ValueBase(int, int y) : value(y) {} - template ::type = true> - constexpr ValueBase(int, int y) : value(y) {} - template ::type = true> - explicit constexpr ValueBase(std::initializer_list& il, int = 0) : value(static_cast(il.size())) {} - template ::type = true> - constexpr ValueBase(std::initializer_list& il, int = 0) : value(static_cast(il.size())) {} - TEST_CONSTEXPR_CXX14 ValueBase& operator=(int xvalue) noexcept { - value = xvalue; - return *this; - } - //~ValueBase() { assert(value != -999); value = -999; } - int value; -#ifndef TEST_WORKAROUND_C1XX_BROKEN_ZA_CTOR_CHECK -protected: -#endif // !TEST_WORKAROUND_C1XX_BROKEN_ZA_CTOR_CHECK - constexpr static int check_value(int const& val) { -#if TEST_STD_VER < 14 - return val == -1 || val == 999 ? (TEST_THROW(42), 0) : val; -#else - assert(val != -1); assert(val != 999); - return val; -#endif - } - constexpr static int check_value(int& val, int val_cp = 0) { -#if TEST_STD_VER < 14 - return val_cp = val, val = -1, (val_cp == -1 || val_cp == 999 ? (TEST_THROW(42), 0) : val_cp); -#else - assert(val != -1); assert(val != 999); - val_cp = val; - val = -1; - return val_cp; -#endif - } - constexpr ValueBase() noexcept : value(0) {} - constexpr ValueBase(ValueBase const& o) noexcept : value(check_value(o.value)) { - } - constexpr ValueBase(ValueBase && o) noexcept : value(check_value(o.value)) { - } - TEST_CONSTEXPR_CXX14 ValueBase& operator=(ValueBase const& o) noexcept { - assert(o.value != -1); assert(o.value != -999); - value = o.value; - return *this; - } - TEST_CONSTEXPR_CXX14 ValueBase& operator=(ValueBase&& o) noexcept { - assert(o.value != -1); assert(o.value != -999); - value = o.value; - o.value = -1; - return *this; - } -}; - - -template -struct TrivialValueBase { - template ::type = true> - explicit constexpr TrivialValueBase(int x) : value(x) {} - template ::type = true> - constexpr TrivialValueBase(int x) : value(x) {} - template ::type = true> - explicit constexpr TrivialValueBase(int, int y) : value(y) {} - template ::type = true> - constexpr TrivialValueBase(int, int y) : value(y) {} - template ::type = true> - explicit constexpr TrivialValueBase(std::initializer_list& il, int = 0) : value(static_cast(il.size())) {} - template ::type = true> - constexpr TrivialValueBase(std::initializer_list& il, int = 0) : value(static_cast(il.size())) {} - int value; -#ifndef TEST_WORKAROUND_C1XX_BROKEN_ZA_CTOR_CHECK -protected: -#endif // !TEST_WORKAROUND_C1XX_BROKEN_ZA_CTOR_CHECK - constexpr TrivialValueBase() noexcept : value(0) {} -}; - -} - -//============================================================================// -// Trivial Implicit Test Types -namespace ImplicitTypes { -#include "archetypes.ipp" -} - -//============================================================================// -// Trivial Explicit Test Types -namespace ExplicitTypes { -#define DEFINE_EXPLICIT explicit -#include "archetypes.ipp" -} - -//============================================================================// -// -namespace NonConstexprTypes { -#define DEFINE_CONSTEXPR -#include "archetypes.ipp" -} - -//============================================================================// -// Non-literal implicit test types -namespace NonLiteralTypes { -#define DEFINE_ASSIGN_CONSTEXPR -#define DEFINE_DTOR(Name) ~Name() {} -#include "archetypes.ipp" -} - -//============================================================================// -// Non-throwing implicit test types -namespace NonThrowingTypes { -#define DEFINE_NOEXCEPT noexcept -#include "archetypes.ipp" -} - -//============================================================================// -// Non-Trivially Copyable Implicit Test Types -namespace NonTrivialTypes { -#define DEFINE_CTOR {} -#define DEFINE_ASSIGN { return *this; } -#include "archetypes.ipp" -} - -//============================================================================// -// Implicit counting types -namespace TestTypes { -#define DEFINE_CONSTEXPR -#define DEFINE_BASE(Name) ::ArchetypeBases::TestBase -#include "archetypes.ipp" - -using TestType = AllCtors; - -// Add equality operators -template -constexpr bool operator==(Tp const& L, Tp const& R) noexcept { - return L.value == R.value; -} - -template -constexpr bool operator!=(Tp const& L, Tp const& R) noexcept { - return L.value != R.value; -} - -} - -//============================================================================// -// Implicit counting types -namespace ExplicitTestTypes { -#define DEFINE_CONSTEXPR -#define DEFINE_EXPLICIT explicit -#define DEFINE_BASE(Name) ::ArchetypeBases::TestBase -#include "archetypes.ipp" - -using TestType = AllCtors; - -// Add equality operators -template -constexpr bool operator==(Tp const& L, Tp const& R) noexcept { - return L.value == R.value; -} - -template -constexpr bool operator!=(Tp const& L, Tp const& R) noexcept { - return L.value != R.value; -} - -} - -//============================================================================// -// Implicit value types -namespace ConstexprTestTypes { -#define DEFINE_BASE(Name) ::ArchetypeBases::ValueBase<> -#include "archetypes.ipp" - -using TestType = AllCtors; - -// Add equality operators -template -constexpr bool operator==(Tp const& L, Tp const& R) noexcept { - return L.value == R.value; -} - -template -constexpr bool operator!=(Tp const& L, Tp const& R) noexcept { - return L.value != R.value; -} - -} // end namespace ConstexprTestTypes - - -//============================================================================// -// -namespace ExplicitConstexprTestTypes { -#define DEFINE_EXPLICIT explicit -#define DEFINE_BASE(Name) ::ArchetypeBases::ValueBase -#include "archetypes.ipp" - -using TestType = AllCtors; - -// Add equality operators -template -constexpr bool operator==(Tp const& L, Tp const& R) noexcept { - return L.value == R.value; -} - -template -constexpr bool operator!=(Tp const& L, Tp const& R) noexcept { - return L.value != R.value; -} - -} // end namespace ExplicitConstexprTestTypes - - -//============================================================================// -// -namespace TrivialTestTypes { -#define DEFINE_BASE(Name) ::ArchetypeBases::TrivialValueBase -#include "archetypes.ipp" - -using TestType = AllCtors; - -// Add equality operators -template -constexpr bool operator==(Tp const& L, Tp const& R) noexcept { - return L.value == R.value; -} - -template -constexpr bool operator!=(Tp const& L, Tp const& R) noexcept { - return L.value != R.value; -} - -} // end namespace TrivialTestTypes - -//============================================================================// -// -namespace ExplicitTrivialTestTypes { -#define DEFINE_EXPLICIT explicit -#define DEFINE_BASE(Name) ::ArchetypeBases::TrivialValueBase -#include "archetypes.ipp" - -using TestType = AllCtors; - -// Add equality operators -template -constexpr bool operator==(Tp const& L, Tp const& R) noexcept { - return L.value == R.value; -} - -template -constexpr bool operator!=(Tp const& L, Tp const& R) noexcept { - return L.value != R.value; -} - -} // end namespace ExplicitTrivialTestTypes - -#endif // TEST_STD_VER >= 11 - -#endif // TEST_SUPPORT_ARCHETYPES_HPP Index: libcxx/trunk/test/support/constexpr_char_traits.h =================================================================== --- libcxx/trunk/test/support/constexpr_char_traits.h +++ libcxx/trunk/test/support/constexpr_char_traits.h @@ -0,0 +1,138 @@ +// -*- C++ -*- +//===-------------------- constexpr_char_traits ---------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _CONSTEXPR_CHAR_TRAITS +#define _CONSTEXPR_CHAR_TRAITS + +#include +#include + +#include "test_macros.h" + +template +struct constexpr_char_traits +{ + typedef _CharT char_type; + typedef int int_type; + typedef std::streamoff off_type; + typedef std::streampos pos_type; + typedef std::mbstate_t state_type; + + static TEST_CONSTEXPR_CXX14 void assign(char_type& __c1, const char_type& __c2) TEST_NOEXCEPT + {__c1 = __c2;} + + static TEST_CONSTEXPR bool eq(char_type __c1, char_type __c2) TEST_NOEXCEPT + {return __c1 == __c2;} + + static TEST_CONSTEXPR bool lt(char_type __c1, char_type __c2) TEST_NOEXCEPT + {return __c1 < __c2;} + + static TEST_CONSTEXPR_CXX14 int compare(const char_type* __s1, const char_type* __s2, size_t __n); + static TEST_CONSTEXPR_CXX14 size_t length(const char_type* __s); + static TEST_CONSTEXPR_CXX14 const char_type* find(const char_type* __s, size_t __n, const char_type& __a); + static TEST_CONSTEXPR_CXX14 char_type* move(char_type* __s1, const char_type* __s2, size_t __n); + static TEST_CONSTEXPR_CXX14 char_type* copy(char_type* __s1, const char_type* __s2, size_t __n); + static TEST_CONSTEXPR_CXX14 char_type* assign(char_type* __s, size_t __n, char_type __a); + + static TEST_CONSTEXPR int_type not_eof(int_type __c) TEST_NOEXCEPT + {return eq_int_type(__c, eof()) ? ~eof() : __c;} + + static TEST_CONSTEXPR char_type to_char_type(int_type __c) TEST_NOEXCEPT + {return char_type(__c);} + + static TEST_CONSTEXPR int_type to_int_type(char_type __c) TEST_NOEXCEPT + {return int_type(__c);} + + static TEST_CONSTEXPR bool eq_int_type(int_type __c1, int_type __c2) TEST_NOEXCEPT + {return __c1 == __c2;} + + static TEST_CONSTEXPR int_type eof() TEST_NOEXCEPT + {return int_type(EOF);} +}; + + +template +TEST_CONSTEXPR_CXX14 int +constexpr_char_traits<_CharT>::compare(const char_type* __s1, const char_type* __s2, size_t __n) +{ + for (; __n; --__n, ++__s1, ++__s2) + { + if (lt(*__s1, *__s2)) + return -1; + if (lt(*__s2, *__s1)) + return 1; + } + return 0; +} + +template +TEST_CONSTEXPR_CXX14 size_t +constexpr_char_traits<_CharT>::length(const char_type* __s) +{ + size_t __len = 0; + for (; !eq(*__s, char_type(0)); ++__s) + ++__len; + return __len; +} + +template +TEST_CONSTEXPR_CXX14 const _CharT* +constexpr_char_traits<_CharT>::find(const char_type* __s, size_t __n, const char_type& __a) +{ + for (; __n; --__n) + { + if (eq(*__s, __a)) + return __s; + ++__s; + } + return 0; +} + +template +TEST_CONSTEXPR_CXX14 _CharT* +constexpr_char_traits<_CharT>::move(char_type* __s1, const char_type* __s2, size_t __n) +{ + char_type* __r = __s1; + if (__s1 < __s2) + { + for (; __n; --__n, ++__s1, ++__s2) + assign(*__s1, *__s2); + } + else if (__s2 < __s1) + { + __s1 += __n; + __s2 += __n; + for (; __n; --__n) + assign(*--__s1, *--__s2); + } + return __r; +} + +template +TEST_CONSTEXPR_CXX14 _CharT* +constexpr_char_traits<_CharT>::copy(char_type* __s1, const char_type* __s2, size_t __n) +{ + assert(__s2 < __s1 || __s2 >= __s1+__n); + char_type* __r = __s1; + for (; __n; --__n, ++__s1, ++__s2) + assign(*__s1, *__s2); + return __r; +} + +template +TEST_CONSTEXPR_CXX14 _CharT* +constexpr_char_traits<_CharT>::assign(char_type* __s, size_t __n, char_type __a) +{ + char_type* __r = __s; + for (; __n; --__n, ++__s) + assign(*__s, __a); + return __r; +} + +#endif // _CONSTEXPR_CHAR_TRAITS Index: libcxx/trunk/test/support/constexpr_char_traits.hpp =================================================================== --- libcxx/trunk/test/support/constexpr_char_traits.hpp +++ libcxx/trunk/test/support/constexpr_char_traits.hpp @@ -1,138 +0,0 @@ -// -*- C++ -*- -//===-------------------- constexpr_char_traits ---------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef _CONSTEXPR_CHAR_TRAITS -#define _CONSTEXPR_CHAR_TRAITS - -#include -#include - -#include "test_macros.h" - -template -struct constexpr_char_traits -{ - typedef _CharT char_type; - typedef int int_type; - typedef std::streamoff off_type; - typedef std::streampos pos_type; - typedef std::mbstate_t state_type; - - static TEST_CONSTEXPR_CXX14 void assign(char_type& __c1, const char_type& __c2) TEST_NOEXCEPT - {__c1 = __c2;} - - static TEST_CONSTEXPR bool eq(char_type __c1, char_type __c2) TEST_NOEXCEPT - {return __c1 == __c2;} - - static TEST_CONSTEXPR bool lt(char_type __c1, char_type __c2) TEST_NOEXCEPT - {return __c1 < __c2;} - - static TEST_CONSTEXPR_CXX14 int compare(const char_type* __s1, const char_type* __s2, size_t __n); - static TEST_CONSTEXPR_CXX14 size_t length(const char_type* __s); - static TEST_CONSTEXPR_CXX14 const char_type* find(const char_type* __s, size_t __n, const char_type& __a); - static TEST_CONSTEXPR_CXX14 char_type* move(char_type* __s1, const char_type* __s2, size_t __n); - static TEST_CONSTEXPR_CXX14 char_type* copy(char_type* __s1, const char_type* __s2, size_t __n); - static TEST_CONSTEXPR_CXX14 char_type* assign(char_type* __s, size_t __n, char_type __a); - - static TEST_CONSTEXPR int_type not_eof(int_type __c) TEST_NOEXCEPT - {return eq_int_type(__c, eof()) ? ~eof() : __c;} - - static TEST_CONSTEXPR char_type to_char_type(int_type __c) TEST_NOEXCEPT - {return char_type(__c);} - - static TEST_CONSTEXPR int_type to_int_type(char_type __c) TEST_NOEXCEPT - {return int_type(__c);} - - static TEST_CONSTEXPR bool eq_int_type(int_type __c1, int_type __c2) TEST_NOEXCEPT - {return __c1 == __c2;} - - static TEST_CONSTEXPR int_type eof() TEST_NOEXCEPT - {return int_type(EOF);} -}; - - -template -TEST_CONSTEXPR_CXX14 int -constexpr_char_traits<_CharT>::compare(const char_type* __s1, const char_type* __s2, size_t __n) -{ - for (; __n; --__n, ++__s1, ++__s2) - { - if (lt(*__s1, *__s2)) - return -1; - if (lt(*__s2, *__s1)) - return 1; - } - return 0; -} - -template -TEST_CONSTEXPR_CXX14 size_t -constexpr_char_traits<_CharT>::length(const char_type* __s) -{ - size_t __len = 0; - for (; !eq(*__s, char_type(0)); ++__s) - ++__len; - return __len; -} - -template -TEST_CONSTEXPR_CXX14 const _CharT* -constexpr_char_traits<_CharT>::find(const char_type* __s, size_t __n, const char_type& __a) -{ - for (; __n; --__n) - { - if (eq(*__s, __a)) - return __s; - ++__s; - } - return 0; -} - -template -TEST_CONSTEXPR_CXX14 _CharT* -constexpr_char_traits<_CharT>::move(char_type* __s1, const char_type* __s2, size_t __n) -{ - char_type* __r = __s1; - if (__s1 < __s2) - { - for (; __n; --__n, ++__s1, ++__s2) - assign(*__s1, *__s2); - } - else if (__s2 < __s1) - { - __s1 += __n; - __s2 += __n; - for (; __n; --__n) - assign(*--__s1, *--__s2); - } - return __r; -} - -template -TEST_CONSTEXPR_CXX14 _CharT* -constexpr_char_traits<_CharT>::copy(char_type* __s1, const char_type* __s2, size_t __n) -{ - assert(__s2 < __s1 || __s2 >= __s1+__n); - char_type* __r = __s1; - for (; __n; --__n, ++__s1, ++__s2) - assign(*__s1, *__s2); - return __r; -} - -template -TEST_CONSTEXPR_CXX14 _CharT* -constexpr_char_traits<_CharT>::assign(char_type* __s, size_t __n, char_type __a) -{ - char_type* __r = __s; - for (; __n; --__n, ++__s) - assign(*__s, __a); - return __r; -} - -#endif // _CONSTEXPR_CHAR_TRAITS Index: libcxx/trunk/test/support/container_debug_tests.h =================================================================== --- libcxx/trunk/test/support/container_debug_tests.h +++ libcxx/trunk/test/support/container_debug_tests.h @@ -0,0 +1,359 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef TEST_SUPPORT_CONTAINER_DEBUG_TESTS_H +#define TEST_SUPPORT_CONTAINER_DEBUG_TESTS_H + +#include +#ifndef _LIBCPP_VERSION +#error This header may only be used for libc++ tests" +#endif + +#ifndef _LIBCPP_DEBUG +#error _LIBCPP_DEBUG must be defined before including this header +#endif + +#include <__debug> +#include +#include +#include +#include +#include +#include +#include + +#include "test_macros.h" +#include "debug_mode_helper.h" +#include "assert_checkpoint.h" +#include "test_allocator.h" + +// These test make use of 'if constexpr'. +#if TEST_STD_VER <= 14 +#error This header may only be used in C++17 and greater +#endif + +#ifndef __cpp_if_constexpr +#error These tests require if constexpr +#endif + + +namespace IteratorDebugChecks { + +enum ContainerType { + CT_None, + CT_String, + CT_Vector, + CT_VectorBool, + CT_List, + CT_Deque, + CT_ForwardList, + CT_Map, + CT_Set, + CT_MultiMap, + CT_MultiSet, + CT_UnorderedMap, + CT_UnorderedSet, + CT_UnorderedMultiMap, + CT_UnorderedMultiSet +}; + +constexpr bool isSequential(ContainerType CT) { + return CT_Vector >= CT && CT_ForwardList <= CT; +} + +constexpr bool isAssociative(ContainerType CT) { + return CT_Map >= CT && CT_MultiSet <= CT; +} + +constexpr bool isUnordered(ContainerType CT) { + return CT_UnorderedMap >= CT && CT_UnorderedMultiSet <= CT; +} + +constexpr bool isSet(ContainerType CT) { + return CT == CT_Set + || CT == CT_MultiSet + || CT == CT_UnorderedSet + || CT == CT_UnorderedMultiSet; +} + +constexpr bool isMap(ContainerType CT) { + return CT == CT_Map + || CT == CT_MultiMap + || CT == CT_UnorderedMap + || CT == CT_UnorderedMultiMap; +} + +constexpr bool isMulti(ContainerType CT) { + return CT == CT_MultiMap + || CT == CT_MultiSet + || CT == CT_UnorderedMultiMap + || CT == CT_UnorderedMultiSet; +} + +template +struct ContainerDebugHelper { + static_assert(std::is_constructible::value, + "must be constructible from int"); + + static ValueType makeValueType(int val = 0, int = 0) { + return ValueType(val); + } +}; + +template +struct ContainerDebugHelper { + static char makeValueType(int = 0, int = 0) { + return 'A'; + } +}; + +template +struct ContainerDebugHelper > { + using ValueType = std::pair; + static_assert(std::is_constructible::value, + "must be constructible from int"); + static_assert(std::is_constructible::value, + "must be constructible from int"); + + static ValueType makeValueType(int key = 0, int val = 0) { + return ValueType(key, val); + } +}; + +template > +struct BasicContainerChecks { + using value_type = typename Container::value_type; + using iterator = typename Container::iterator; + using const_iterator = typename Container::const_iterator; + using allocator_type = typename Container::allocator_type; + using traits = std::iterator_traits; + using category = typename traits::iterator_category; + + static_assert(std::is_same, allocator_type>::value, + "the container must use a test allocator"); + + static constexpr bool IsBiDir = + std::is_convertible::value; + + public: + static void run() { + run_iterator_tests(); + run_container_tests(); + run_allocator_aware_tests(); + } + + static void run_iterator_tests() { + TestNullIterators(); + TestNullIterators(); + if constexpr (IsBiDir) { DecrementBegin(); } + IncrementEnd(); + DerefEndIterator(); + } + + static void run_container_tests() { + CopyInvalidatesIterators(); + MoveInvalidatesIterators(); + if constexpr (CT != CT_ForwardList) { + EraseIter(); + EraseIterIter(); + } + } + + static void run_allocator_aware_tests() { + SwapNonEqualAllocators(); + if constexpr (CT != CT_ForwardList ) { + // FIXME: This should work for both forward_list and string + SwapInvalidatesIterators(); + } + } + + static Container makeContainer(int size, allocator_type A = allocator_type()) { + Container C(A); + if constexpr (CT == CT_ForwardList) { + for (int i = 0; i < size; ++i) + C.insert_after(C.before_begin(), Helper::makeValueType(i)); + } else { + for (int i = 0; i < size; ++i) + C.insert(C.end(), Helper::makeValueType(i)); + assert(C.size() == static_cast(size)); + } + return C; + } + + static value_type makeValueType(int value) { + return Helper::makeValueType(value); + } + + private: + // Iterator tests + template + static void TestNullIterators() { + CHECKPOINT("testing null iterator"); + Iter it; + EXPECT_DEATH( ++it ); + EXPECT_DEATH( it++ ); + EXPECT_DEATH( *it ); + if constexpr (CT != CT_VectorBool) { + EXPECT_DEATH( it.operator->() ); + } + if constexpr (IsBiDir) { + EXPECT_DEATH( --it ); + EXPECT_DEATH( it-- ); + } + } + + static void DecrementBegin() { + CHECKPOINT("testing decrement on begin"); + Container C = makeContainer(1); + iterator i = C.end(); + const_iterator ci = C.cend(); + --i; + --ci; + assert(i == C.begin()); + EXPECT_DEATH( --i ); + EXPECT_DEATH( i-- ); + EXPECT_DEATH( --ci ); + EXPECT_DEATH( ci-- ); + } + + static void IncrementEnd() { + CHECKPOINT("testing increment on end"); + Container C = makeContainer(1); + iterator i = C.begin(); + const_iterator ci = C.begin(); + ++i; + ++ci; + assert(i == C.end()); + EXPECT_DEATH( ++i ); + EXPECT_DEATH( i++ ); + EXPECT_DEATH( ++ci ); + EXPECT_DEATH( ci++ ); + } + + static void DerefEndIterator() { + CHECKPOINT("testing deref end iterator"); + Container C = makeContainer(1); + iterator i = C.begin(); + const_iterator ci = C.cbegin(); + (void)*i; (void)*ci; + if constexpr (CT != CT_VectorBool) { + i.operator->(); + ci.operator->(); + } + ++i; ++ci; + assert(i == C.end()); + EXPECT_DEATH( *i ); + EXPECT_DEATH( *ci ); + if constexpr (CT != CT_VectorBool) { + EXPECT_DEATH( i.operator->() ); + EXPECT_DEATH( ci.operator->() ); + } + } + + // Container tests + static void CopyInvalidatesIterators() { + CHECKPOINT("copy invalidates iterators"); + Container C1 = makeContainer(3); + iterator i = C1.begin(); + Container C2 = C1; + if constexpr (CT == CT_ForwardList) { + iterator i_next = i; + ++i_next; + (void)*i_next; + EXPECT_DEATH( C2.erase_after(i) ); + C1.erase_after(i); + EXPECT_DEATH( *i_next ); + } else { + EXPECT_DEATH( C2.erase(i) ); + (void)*i; + C1.erase(i); + EXPECT_DEATH( *i ); + } + } + + static void MoveInvalidatesIterators() { + CHECKPOINT("copy move invalidates iterators"); + Container C1 = makeContainer(3); + iterator i = C1.begin(); + Container C2 = std::move(C1); + (void) *i; + if constexpr (CT == CT_ForwardList) { + EXPECT_DEATH( C1.erase_after(i) ); + C2.erase_after(i); + } else { + EXPECT_DEATH( C1.erase(i) ); + C2.erase(i); + EXPECT_DEATH(*i); + } + } + + static void EraseIter() { + CHECKPOINT("testing erase invalidation"); + Container C1 = makeContainer(2); + iterator it1 = C1.begin(); + iterator it1_next = it1; + ++it1_next; + Container C2 = C1; + EXPECT_DEATH( C2.erase(it1) ); // wrong container + EXPECT_DEATH( C2.erase(C2.end()) ); // erase with end + C1.erase(it1_next); + EXPECT_DEATH( C1.erase(it1_next) ); // invalidated iterator + C1.erase(it1); + EXPECT_DEATH( C1.erase(it1) ); // invalidated iterator + } + + static void EraseIterIter() { + CHECKPOINT("testing erase iter iter invalidation"); + Container C1 = makeContainer(2); + iterator it1 = C1.begin(); + iterator it1_next = it1; + ++it1_next; + Container C2 = C1; + iterator it2 = C2.begin(); + iterator it2_next = it2; + ++it2_next; + EXPECT_DEATH( C2.erase(it1, it1_next) ); // begin from wrong container + EXPECT_DEATH( C2.erase(it1, it2_next) ); // end from wrong container + EXPECT_DEATH( C2.erase(it2, it1_next) ); // both from wrong container + C2.erase(it2, it2_next); + } + + // Allocator aware tests + static void SwapInvalidatesIterators() { + CHECKPOINT("testing swap invalidates iterators"); + Container C1 = makeContainer(3); + Container C2 = makeContainer(3); + iterator it1 = C1.begin(); + iterator it2 = C2.begin(); + swap(C1, C2); + EXPECT_DEATH( C1.erase(it1) ); + if (CT == CT_String) { + EXPECT_DEATH(C1.erase(it2)); + } else + C1.erase(it2); + //C2.erase(it1); + EXPECT_DEATH( C1.erase(it1) ); + } + + static void SwapNonEqualAllocators() { + CHECKPOINT("testing swap with non-equal allocators"); + Container C1 = makeContainer(3, allocator_type(1)); + Container C2 = makeContainer(1, allocator_type(2)); + Container C3 = makeContainer(2, allocator_type(2)); + swap(C2, C3); + EXPECT_DEATH( swap(C1, C2) ); + } + + private: + BasicContainerChecks() = delete; +}; + +} // namespace IteratorDebugChecks + +#endif // TEST_SUPPORT_CONTAINER_DEBUG_TESTS_H Index: libcxx/trunk/test/support/container_debug_tests.hpp =================================================================== --- libcxx/trunk/test/support/container_debug_tests.hpp +++ libcxx/trunk/test/support/container_debug_tests.hpp @@ -1,359 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef TEST_SUPPORT_CONTAINER_DEBUG_TESTS_H -#define TEST_SUPPORT_CONTAINER_DEBUG_TESTS_H - -#include -#ifndef _LIBCPP_VERSION -#error This header may only be used for libc++ tests" -#endif - -#ifndef _LIBCPP_DEBUG -#error _LIBCPP_DEBUG must be defined before including this header -#endif - -#include <__debug> -#include -#include -#include -#include -#include -#include -#include - -#include "test_macros.h" -#include "debug_mode_helper.h" -#include "assert_checkpoint.h" -#include "test_allocator.h" - -// These test make use of 'if constexpr'. -#if TEST_STD_VER <= 14 -#error This header may only be used in C++17 and greater -#endif - -#ifndef __cpp_if_constexpr -#error These tests require if constexpr -#endif - - -namespace IteratorDebugChecks { - -enum ContainerType { - CT_None, - CT_String, - CT_Vector, - CT_VectorBool, - CT_List, - CT_Deque, - CT_ForwardList, - CT_Map, - CT_Set, - CT_MultiMap, - CT_MultiSet, - CT_UnorderedMap, - CT_UnorderedSet, - CT_UnorderedMultiMap, - CT_UnorderedMultiSet -}; - -constexpr bool isSequential(ContainerType CT) { - return CT_Vector >= CT && CT_ForwardList <= CT; -} - -constexpr bool isAssociative(ContainerType CT) { - return CT_Map >= CT && CT_MultiSet <= CT; -} - -constexpr bool isUnordered(ContainerType CT) { - return CT_UnorderedMap >= CT && CT_UnorderedMultiSet <= CT; -} - -constexpr bool isSet(ContainerType CT) { - return CT == CT_Set - || CT == CT_MultiSet - || CT == CT_UnorderedSet - || CT == CT_UnorderedMultiSet; -} - -constexpr bool isMap(ContainerType CT) { - return CT == CT_Map - || CT == CT_MultiMap - || CT == CT_UnorderedMap - || CT == CT_UnorderedMultiMap; -} - -constexpr bool isMulti(ContainerType CT) { - return CT == CT_MultiMap - || CT == CT_MultiSet - || CT == CT_UnorderedMultiMap - || CT == CT_UnorderedMultiSet; -} - -template -struct ContainerDebugHelper { - static_assert(std::is_constructible::value, - "must be constructible from int"); - - static ValueType makeValueType(int val = 0, int = 0) { - return ValueType(val); - } -}; - -template -struct ContainerDebugHelper { - static char makeValueType(int = 0, int = 0) { - return 'A'; - } -}; - -template -struct ContainerDebugHelper > { - using ValueType = std::pair; - static_assert(std::is_constructible::value, - "must be constructible from int"); - static_assert(std::is_constructible::value, - "must be constructible from int"); - - static ValueType makeValueType(int key = 0, int val = 0) { - return ValueType(key, val); - } -}; - -template > -struct BasicContainerChecks { - using value_type = typename Container::value_type; - using iterator = typename Container::iterator; - using const_iterator = typename Container::const_iterator; - using allocator_type = typename Container::allocator_type; - using traits = std::iterator_traits; - using category = typename traits::iterator_category; - - static_assert(std::is_same, allocator_type>::value, - "the container must use a test allocator"); - - static constexpr bool IsBiDir = - std::is_convertible::value; - - public: - static void run() { - run_iterator_tests(); - run_container_tests(); - run_allocator_aware_tests(); - } - - static void run_iterator_tests() { - TestNullIterators(); - TestNullIterators(); - if constexpr (IsBiDir) { DecrementBegin(); } - IncrementEnd(); - DerefEndIterator(); - } - - static void run_container_tests() { - CopyInvalidatesIterators(); - MoveInvalidatesIterators(); - if constexpr (CT != CT_ForwardList) { - EraseIter(); - EraseIterIter(); - } - } - - static void run_allocator_aware_tests() { - SwapNonEqualAllocators(); - if constexpr (CT != CT_ForwardList ) { - // FIXME: This should work for both forward_list and string - SwapInvalidatesIterators(); - } - } - - static Container makeContainer(int size, allocator_type A = allocator_type()) { - Container C(A); - if constexpr (CT == CT_ForwardList) { - for (int i = 0; i < size; ++i) - C.insert_after(C.before_begin(), Helper::makeValueType(i)); - } else { - for (int i = 0; i < size; ++i) - C.insert(C.end(), Helper::makeValueType(i)); - assert(C.size() == static_cast(size)); - } - return C; - } - - static value_type makeValueType(int value) { - return Helper::makeValueType(value); - } - - private: - // Iterator tests - template - static void TestNullIterators() { - CHECKPOINT("testing null iterator"); - Iter it; - EXPECT_DEATH( ++it ); - EXPECT_DEATH( it++ ); - EXPECT_DEATH( *it ); - if constexpr (CT != CT_VectorBool) { - EXPECT_DEATH( it.operator->() ); - } - if constexpr (IsBiDir) { - EXPECT_DEATH( --it ); - EXPECT_DEATH( it-- ); - } - } - - static void DecrementBegin() { - CHECKPOINT("testing decrement on begin"); - Container C = makeContainer(1); - iterator i = C.end(); - const_iterator ci = C.cend(); - --i; - --ci; - assert(i == C.begin()); - EXPECT_DEATH( --i ); - EXPECT_DEATH( i-- ); - EXPECT_DEATH( --ci ); - EXPECT_DEATH( ci-- ); - } - - static void IncrementEnd() { - CHECKPOINT("testing increment on end"); - Container C = makeContainer(1); - iterator i = C.begin(); - const_iterator ci = C.begin(); - ++i; - ++ci; - assert(i == C.end()); - EXPECT_DEATH( ++i ); - EXPECT_DEATH( i++ ); - EXPECT_DEATH( ++ci ); - EXPECT_DEATH( ci++ ); - } - - static void DerefEndIterator() { - CHECKPOINT("testing deref end iterator"); - Container C = makeContainer(1); - iterator i = C.begin(); - const_iterator ci = C.cbegin(); - (void)*i; (void)*ci; - if constexpr (CT != CT_VectorBool) { - i.operator->(); - ci.operator->(); - } - ++i; ++ci; - assert(i == C.end()); - EXPECT_DEATH( *i ); - EXPECT_DEATH( *ci ); - if constexpr (CT != CT_VectorBool) { - EXPECT_DEATH( i.operator->() ); - EXPECT_DEATH( ci.operator->() ); - } - } - - // Container tests - static void CopyInvalidatesIterators() { - CHECKPOINT("copy invalidates iterators"); - Container C1 = makeContainer(3); - iterator i = C1.begin(); - Container C2 = C1; - if constexpr (CT == CT_ForwardList) { - iterator i_next = i; - ++i_next; - (void)*i_next; - EXPECT_DEATH( C2.erase_after(i) ); - C1.erase_after(i); - EXPECT_DEATH( *i_next ); - } else { - EXPECT_DEATH( C2.erase(i) ); - (void)*i; - C1.erase(i); - EXPECT_DEATH( *i ); - } - } - - static void MoveInvalidatesIterators() { - CHECKPOINT("copy move invalidates iterators"); - Container C1 = makeContainer(3); - iterator i = C1.begin(); - Container C2 = std::move(C1); - (void) *i; - if constexpr (CT == CT_ForwardList) { - EXPECT_DEATH( C1.erase_after(i) ); - C2.erase_after(i); - } else { - EXPECT_DEATH( C1.erase(i) ); - C2.erase(i); - EXPECT_DEATH(*i); - } - } - - static void EraseIter() { - CHECKPOINT("testing erase invalidation"); - Container C1 = makeContainer(2); - iterator it1 = C1.begin(); - iterator it1_next = it1; - ++it1_next; - Container C2 = C1; - EXPECT_DEATH( C2.erase(it1) ); // wrong container - EXPECT_DEATH( C2.erase(C2.end()) ); // erase with end - C1.erase(it1_next); - EXPECT_DEATH( C1.erase(it1_next) ); // invalidated iterator - C1.erase(it1); - EXPECT_DEATH( C1.erase(it1) ); // invalidated iterator - } - - static void EraseIterIter() { - CHECKPOINT("testing erase iter iter invalidation"); - Container C1 = makeContainer(2); - iterator it1 = C1.begin(); - iterator it1_next = it1; - ++it1_next; - Container C2 = C1; - iterator it2 = C2.begin(); - iterator it2_next = it2; - ++it2_next; - EXPECT_DEATH( C2.erase(it1, it1_next) ); // begin from wrong container - EXPECT_DEATH( C2.erase(it1, it2_next) ); // end from wrong container - EXPECT_DEATH( C2.erase(it2, it1_next) ); // both from wrong container - C2.erase(it2, it2_next); - } - - // Allocator aware tests - static void SwapInvalidatesIterators() { - CHECKPOINT("testing swap invalidates iterators"); - Container C1 = makeContainer(3); - Container C2 = makeContainer(3); - iterator it1 = C1.begin(); - iterator it2 = C2.begin(); - swap(C1, C2); - EXPECT_DEATH( C1.erase(it1) ); - if (CT == CT_String) { - EXPECT_DEATH(C1.erase(it2)); - } else - C1.erase(it2); - //C2.erase(it1); - EXPECT_DEATH( C1.erase(it1) ); - } - - static void SwapNonEqualAllocators() { - CHECKPOINT("testing swap with non-equal allocators"); - Container C1 = makeContainer(3, allocator_type(1)); - Container C2 = makeContainer(1, allocator_type(2)); - Container C3 = makeContainer(2, allocator_type(2)); - swap(C2, C3); - EXPECT_DEATH( swap(C1, C2) ); - } - - private: - BasicContainerChecks() = delete; -}; - -} // namespace IteratorDebugChecks - -#endif // TEST_SUPPORT_CONTAINER_DEBUG_TESTS_H Index: libcxx/trunk/test/support/controlled_allocators.h =================================================================== --- libcxx/trunk/test/support/controlled_allocators.h +++ libcxx/trunk/test/support/controlled_allocators.h @@ -0,0 +1,501 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef SUPPORT_CONTROLLED_ALLOCATORS_H +#define SUPPORT_CONTROLLED_ALLOCATORS_H + +#include +#include +#include +#include +#include +#include +#include +#include "test_macros.h" +#include "type_id.h" + +#if TEST_STD_VER < 11 +#error This header requires C++11 or greater +#endif + +struct AllocController; + // 'AllocController' is a concrete type that instruments and controls the + // behavior of test allocators. + +template +class CountingAllocator; + // 'CountingAllocator' is an basic implementation of the 'Allocator' + // requirements that use the 'AllocController' interface. + +template +class MinAlignAllocator; + // 'MinAlignAllocator' is an instrumented test type which implements the + // 'Allocator' requirements. 'MinAlignAllocator' ensures that it *never* + // returns a pointer to over-aligned storage. For example + // 'MinAlignPointer{}.allocate(...)' will never a 2-byte aligned + // pointer. + +template +class NullAllocator; + // 'NullAllocator' is an instrumented test type which implements the + // 'Allocator' requirements except that 'allocator' and 'deallocate' are + // nops. + + +#define DISALLOW_COPY(Type) \ + Type(Type const&) = delete; \ + Type& operator=(Type const&) = delete + +constexpr std::size_t MaxAlignV = alignof(std::max_align_t); + +struct TestException {}; + +struct AllocController { + int copy_constructed = 0; + int move_constructed = 0; + + int alive = 0; + int alloc_count = 0; + int dealloc_count = 0; + int is_equal_count = 0; + + std::size_t alive_size; + std::size_t allocated_size; + std::size_t deallocated_size; + + std::size_t last_size = 0; + std::size_t last_align = 0; + void * last_pointer = 0; + + std::size_t last_alloc_size = 0; + std::size_t last_alloc_align = 0; + void * last_alloc_pointer = nullptr; + + std::size_t last_dealloc_size = 0; + std::size_t last_dealloc_align = 0; + void * last_dealloc_pointer = nullptr; + + bool throw_on_alloc = false; + + int construct_called = 0; + void *last_construct_pointer = nullptr; + TypeID const* last_construct_alloc = nullptr; + TypeID const* last_construct_type = nullptr; + TypeID const* last_construct_args = nullptr; + + int destroy_called = 0; + void *last_destroy_pointer = nullptr; + TypeID const* last_destroy_alloc = nullptr; + TypeID const* last_destroy_type = nullptr; + + AllocController() = default; + + void countAlloc(void* p, size_t s, size_t a) { + ++alive; + ++alloc_count; + alive_size += s; + allocated_size += s; + last_pointer = last_alloc_pointer = p; + last_size = last_alloc_size = s; + last_align = last_alloc_align = a; + } + + void countDealloc(void* p, size_t s, size_t a) { + --alive; + ++dealloc_count; + alive_size -= s; + deallocated_size += s; + last_pointer = last_dealloc_pointer = p; + last_size = last_dealloc_size = s; + last_align = last_dealloc_align = a; + } + + template + void countConstruct(Alloc const&, Tp *p) { + ++construct_called; + last_construct_pointer = p; + last_construct_alloc = &makeTypeID(); + last_construct_type = &makeTypeID(); + last_construct_args = &makeArgumentID(); + } + + template + void countDestroy(Alloc const&, Tp *p) { + ++destroy_called; + last_destroy_alloc = &makeTypeID(); + last_destroy_type = &makeTypeID(); + last_destroy_pointer = p; + } + + void reset() { std::memset(this, 0, sizeof(*this)); } + void resetConstructDestroy() { + construct_called = 0; + last_construct_pointer = nullptr; + last_construct_alloc = last_construct_args = last_construct_type = nullptr; + destroy_called = 0; + last_destroy_alloc = nullptr; + last_destroy_pointer = nullptr; + } +public: + bool checkAlloc(void* p, size_t s, size_t a) const { + return p == last_alloc_pointer && + s == last_alloc_size && + a == last_alloc_align; + } + + bool checkAlloc(void* p, size_t s) const { + return p == last_alloc_pointer && + s == last_alloc_size; + } + + bool checkAllocAtLeast(void* p, size_t s, size_t a) const { + return p == last_alloc_pointer && + s <= last_alloc_size && + a <= last_alloc_align; + } + + bool checkAllocAtLeast(void* p, size_t s) const { + return p == last_alloc_pointer && + s <= last_alloc_size; + } + + bool checkDealloc(void* p, size_t s, size_t a) const { + return p == last_dealloc_pointer && + s == last_dealloc_size && + a == last_dealloc_align; + } + + bool checkDealloc(void* p, size_t s) const { + return p == last_dealloc_pointer && + s == last_dealloc_size; + } + + bool checkDeallocMatchesAlloc() const { + return last_dealloc_pointer == last_alloc_pointer && + last_dealloc_size == last_alloc_size && + last_dealloc_align == last_alloc_align; + } + + template + bool checkConstruct(Alloc const&, Tp *p) const { + auto expectAlloc = &makeTypeID(); + auto expectTp = &makeTypeID(); + auto expectArgs = &makeArgumentID(); + return last_construct_pointer == p && + COMPARE_TYPEID(last_construct_alloc, expectAlloc) && + COMPARE_TYPEID(last_construct_type, expectTp) && + COMPARE_TYPEID(last_construct_args, expectArgs); + } + + template + bool checkDestroy(Alloc const&, Tp *p) const { + return last_destroy_pointer == p && + last_destroy_alloc == &makeTypeID() && + last_destroy_type == &makeTypeID(); + } + + bool checkDestroyMatchesConstruct() const { + return last_destroy_pointer == last_construct_pointer && + last_destroy_type == last_construct_type; + } + + void countIsEqual() { + ++is_equal_count; + } + + bool checkIsEqualCalledEq(int n) const { + return is_equal_count == n; + } +private: + DISALLOW_COPY(AllocController); +}; + +template +class CountingAllocator +{ +public: + typedef T value_type; + typedef T* pointer; + + template + struct rebind { using other = CountingAllocator; }; + + CountingAllocator() = delete; + explicit CountingAllocator(AllocController& PP) : P(&PP) {} + + CountingAllocator(CountingAllocator const& other) : P(other.P) { + P->copy_constructed += 1; + } + + CountingAllocator(CountingAllocator&& other) : P(other.P) { + P->move_constructed += 1; + } + + template + CountingAllocator(CountingAllocator const& other) TEST_NOEXCEPT : P(other.P) { + P->copy_constructed += 1; + } + + template + CountingAllocator(CountingAllocator&& other) TEST_NOEXCEPT : P(other.P) { + P->move_constructed += 1; + } + + T* allocate(std::size_t n) + { + void* ret = ::operator new(n*sizeof(T)); + P->countAlloc(ret, n*sizeof(T), alignof(T)); + return static_cast(ret); + } + + void deallocate(T* p, std::size_t n) + { + void* vp = static_cast(p); + P->countDealloc(vp, n*sizeof(T), alignof(T)); + ::operator delete(vp); + } + + template + void construct(U *p, Args&&... args) { + ::new ((void*)p) U(std::forward(args)...); + P->countConstruct(*this, p); + } + + template + void destroy(U* p) { + p->~U(); + P->countDestroy(*this, p); + } + + AllocController& getController() const { return *P; } + +private: + template friend class CountingAllocator; + AllocController *P; +}; + + +template +class CountingAllocator +{ +public: + typedef void* pointer; + typedef const void* const_pointer; + typedef void value_type; + + template + struct rebind { using other = CountingAllocator; }; + + CountingAllocator() = delete; + explicit CountingAllocator(AllocController& PP) : P(&PP) {} + + CountingAllocator(CountingAllocator const& other) : P(other.P) { + P->copy_constructed += 1; + } + + CountingAllocator(CountingAllocator&& other) : P(other.P) { + P->move_constructed += 1; + } + + template + CountingAllocator(CountingAllocator const& other) TEST_NOEXCEPT : P(other.P) { + P->copy_constructed += 1; + } + + template + CountingAllocator(CountingAllocator&& other) TEST_NOEXCEPT : P(other.P) { + P->move_constructed += 1; + } + + void construct(...) = delete; + void destroy(void*) = delete; + + AllocController& getController() const { return *P; } + +private: + template friend class CountingAllocator; + AllocController *P; +}; + +template +inline bool operator==(CountingAllocator const& x, + CountingAllocator const& y) { + return &x.getController() == &y.getController(); +} + +template +inline bool operator!=(CountingAllocator const& x, + CountingAllocator const& y) { + return !(x == y); +} + +template +class MinAlignedAllocator +{ +public: + typedef T value_type; + typedef T* pointer; + + MinAlignedAllocator() = delete; + + explicit MinAlignedAllocator(AllocController& R) : P(&R) {} + + MinAlignedAllocator(MinAlignedAllocator const& other) : P(other.P) { + P->copy_constructed += 1; + } + + MinAlignedAllocator(MinAlignedAllocator&& other) : P(other.P) { + P->move_constructed += 1; + } + + template + MinAlignedAllocator(MinAlignedAllocator const& other) TEST_NOEXCEPT : P(other.P) { + P->copy_constructed += 1; + } + + template + MinAlignedAllocator(MinAlignedAllocator&& other) TEST_NOEXCEPT : P(other.P) { + P->move_constructed += 1; + } + + T* allocate(std::size_t n) { + char* aligned_ptr = (char*)::operator new(alloc_size(n*sizeof(T))); + assert(is_max_aligned(aligned_ptr)); + + char* unaligned_ptr = aligned_ptr + alignof(T); + assert(is_min_aligned(unaligned_ptr)); + + P->countAlloc(unaligned_ptr, n * sizeof(T), alignof(T)); + + return ((T*)unaligned_ptr); + } + + void deallocate(T* p, std::size_t n) { + assert(is_min_aligned(p)); + + char* aligned_ptr = ((char*)p) - alignof(T); + assert(is_max_aligned(aligned_ptr)); + + P->countDealloc(p, n*sizeof(T), alignof(T)); + + return ::operator delete(static_cast(aligned_ptr)); + } + + template + void construct(U *p, Args&&... args) { + auto *c = ::new ((void*)p) U(std::forward(args)...); + P->countConstruct(*this, p); + } + + template + void destroy(U* p) { + p->~U(); + P->countDestroy(*this, p); + } + + AllocController& getController() const { return *P; } + +private: + static const std::size_t BlockSize = alignof(std::max_align_t); + + static std::size_t alloc_size(std::size_t s) { + std::size_t bytes = (s + BlockSize - 1) & ~(BlockSize - 1); + bytes += BlockSize; + assert(bytes % BlockSize == 0); + return bytes; + } + + static bool is_max_aligned(void* p) { + return reinterpret_cast(p) % BlockSize == 0; + } + + static bool is_min_aligned(void* p) { + if (alignof(T) == BlockSize) { + return is_max_aligned(p); + } else { + return reinterpret_cast(p) % BlockSize == alignof(T); + } + } + + template friend class MinAlignedAllocator; + mutable AllocController *P; +}; + + +template +inline bool operator==(MinAlignedAllocator const& x, + MinAlignedAllocator const& y) { + return &x.getController() == &y.getController(); +} + +template +inline bool operator!=(MinAlignedAllocator const& x, + MinAlignedAllocator const& y) { + return !(x == y); +} + +template +class NullAllocator +{ +public: + typedef T value_type; + typedef T* pointer; + NullAllocator() = delete; + explicit NullAllocator(AllocController& PP) : P(&PP) {} + + NullAllocator(NullAllocator const& other) : P(other.P) { + P->copy_constructed += 1; + } + + NullAllocator(NullAllocator&& other) : P(other.P) { + P->move_constructed += 1; + } + + template + NullAllocator(NullAllocator const& other) TEST_NOEXCEPT : P(other.P) { + P->copy_constructed += 1; + } + + template + NullAllocator(NullAllocator&& other) TEST_NOEXCEPT : P(other.P) { + P->move_constructed += 1; + } + + T* allocate(std::size_t n) + { + P->countAlloc(nullptr, n*sizeof(T), alignof(T)); + return nullptr; + } + + void deallocate(T* p, std::size_t n) + { + void* vp = static_cast(p); + P->countDealloc(vp, n*sizeof(T), alignof(T)); + } + + AllocController& getController() const { return *P; } + +private: + template friend class NullAllocator; + AllocController *P; +}; + +template +inline bool operator==(NullAllocator const& x, + NullAllocator const& y) { + return &x.getController() == &y.getController(); +} + +template +inline bool operator!=(NullAllocator const& x, + NullAllocator const& y) { + return !(x == y); +} + + +#endif /* SUPPORT_CONTROLLED_ALLOCATORS_H */ Index: libcxx/trunk/test/support/controlled_allocators.hpp =================================================================== --- libcxx/trunk/test/support/controlled_allocators.hpp +++ libcxx/trunk/test/support/controlled_allocators.hpp @@ -1,501 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef SUPPORT_CONTROLLED_ALLOCATORS_HPP -#define SUPPORT_CONTROLLED_ALLOCATORS_HPP - -#include -#include -#include -#include -#include -#include -#include -#include "test_macros.h" -#include "type_id.h" - -#if TEST_STD_VER < 11 -#error This header requires C++11 or greater -#endif - -struct AllocController; - // 'AllocController' is a concrete type that instruments and controls the - // behavior of test allocators. - -template -class CountingAllocator; - // 'CountingAllocator' is an basic implementation of the 'Allocator' - // requirements that use the 'AllocController' interface. - -template -class MinAlignAllocator; - // 'MinAlignAllocator' is an instrumented test type which implements the - // 'Allocator' requirements. 'MinAlignAllocator' ensures that it *never* - // returns a pointer to over-aligned storage. For example - // 'MinAlignPointer{}.allocate(...)' will never a 2-byte aligned - // pointer. - -template -class NullAllocator; - // 'NullAllocator' is an instrumented test type which implements the - // 'Allocator' requirements except that 'allocator' and 'deallocate' are - // nops. - - -#define DISALLOW_COPY(Type) \ - Type(Type const&) = delete; \ - Type& operator=(Type const&) = delete - -constexpr std::size_t MaxAlignV = alignof(std::max_align_t); - -struct TestException {}; - -struct AllocController { - int copy_constructed = 0; - int move_constructed = 0; - - int alive = 0; - int alloc_count = 0; - int dealloc_count = 0; - int is_equal_count = 0; - - std::size_t alive_size; - std::size_t allocated_size; - std::size_t deallocated_size; - - std::size_t last_size = 0; - std::size_t last_align = 0; - void * last_pointer = 0; - - std::size_t last_alloc_size = 0; - std::size_t last_alloc_align = 0; - void * last_alloc_pointer = nullptr; - - std::size_t last_dealloc_size = 0; - std::size_t last_dealloc_align = 0; - void * last_dealloc_pointer = nullptr; - - bool throw_on_alloc = false; - - int construct_called = 0; - void *last_construct_pointer = nullptr; - TypeID const* last_construct_alloc = nullptr; - TypeID const* last_construct_type = nullptr; - TypeID const* last_construct_args = nullptr; - - int destroy_called = 0; - void *last_destroy_pointer = nullptr; - TypeID const* last_destroy_alloc = nullptr; - TypeID const* last_destroy_type = nullptr; - - AllocController() = default; - - void countAlloc(void* p, size_t s, size_t a) { - ++alive; - ++alloc_count; - alive_size += s; - allocated_size += s; - last_pointer = last_alloc_pointer = p; - last_size = last_alloc_size = s; - last_align = last_alloc_align = a; - } - - void countDealloc(void* p, size_t s, size_t a) { - --alive; - ++dealloc_count; - alive_size -= s; - deallocated_size += s; - last_pointer = last_dealloc_pointer = p; - last_size = last_dealloc_size = s; - last_align = last_dealloc_align = a; - } - - template - void countConstruct(Alloc const&, Tp *p) { - ++construct_called; - last_construct_pointer = p; - last_construct_alloc = &makeTypeID(); - last_construct_type = &makeTypeID(); - last_construct_args = &makeArgumentID(); - } - - template - void countDestroy(Alloc const&, Tp *p) { - ++destroy_called; - last_destroy_alloc = &makeTypeID(); - last_destroy_type = &makeTypeID(); - last_destroy_pointer = p; - } - - void reset() { std::memset(this, 0, sizeof(*this)); } - void resetConstructDestroy() { - construct_called = 0; - last_construct_pointer = nullptr; - last_construct_alloc = last_construct_args = last_construct_type = nullptr; - destroy_called = 0; - last_destroy_alloc = nullptr; - last_destroy_pointer = nullptr; - } -public: - bool checkAlloc(void* p, size_t s, size_t a) const { - return p == last_alloc_pointer && - s == last_alloc_size && - a == last_alloc_align; - } - - bool checkAlloc(void* p, size_t s) const { - return p == last_alloc_pointer && - s == last_alloc_size; - } - - bool checkAllocAtLeast(void* p, size_t s, size_t a) const { - return p == last_alloc_pointer && - s <= last_alloc_size && - a <= last_alloc_align; - } - - bool checkAllocAtLeast(void* p, size_t s) const { - return p == last_alloc_pointer && - s <= last_alloc_size; - } - - bool checkDealloc(void* p, size_t s, size_t a) const { - return p == last_dealloc_pointer && - s == last_dealloc_size && - a == last_dealloc_align; - } - - bool checkDealloc(void* p, size_t s) const { - return p == last_dealloc_pointer && - s == last_dealloc_size; - } - - bool checkDeallocMatchesAlloc() const { - return last_dealloc_pointer == last_alloc_pointer && - last_dealloc_size == last_alloc_size && - last_dealloc_align == last_alloc_align; - } - - template - bool checkConstruct(Alloc const&, Tp *p) const { - auto expectAlloc = &makeTypeID(); - auto expectTp = &makeTypeID(); - auto expectArgs = &makeArgumentID(); - return last_construct_pointer == p && - COMPARE_TYPEID(last_construct_alloc, expectAlloc) && - COMPARE_TYPEID(last_construct_type, expectTp) && - COMPARE_TYPEID(last_construct_args, expectArgs); - } - - template - bool checkDestroy(Alloc const&, Tp *p) const { - return last_destroy_pointer == p && - last_destroy_alloc == &makeTypeID() && - last_destroy_type == &makeTypeID(); - } - - bool checkDestroyMatchesConstruct() const { - return last_destroy_pointer == last_construct_pointer && - last_destroy_type == last_construct_type; - } - - void countIsEqual() { - ++is_equal_count; - } - - bool checkIsEqualCalledEq(int n) const { - return is_equal_count == n; - } -private: - DISALLOW_COPY(AllocController); -}; - -template -class CountingAllocator -{ -public: - typedef T value_type; - typedef T* pointer; - - template - struct rebind { using other = CountingAllocator; }; - - CountingAllocator() = delete; - explicit CountingAllocator(AllocController& PP) : P(&PP) {} - - CountingAllocator(CountingAllocator const& other) : P(other.P) { - P->copy_constructed += 1; - } - - CountingAllocator(CountingAllocator&& other) : P(other.P) { - P->move_constructed += 1; - } - - template - CountingAllocator(CountingAllocator const& other) TEST_NOEXCEPT : P(other.P) { - P->copy_constructed += 1; - } - - template - CountingAllocator(CountingAllocator&& other) TEST_NOEXCEPT : P(other.P) { - P->move_constructed += 1; - } - - T* allocate(std::size_t n) - { - void* ret = ::operator new(n*sizeof(T)); - P->countAlloc(ret, n*sizeof(T), alignof(T)); - return static_cast(ret); - } - - void deallocate(T* p, std::size_t n) - { - void* vp = static_cast(p); - P->countDealloc(vp, n*sizeof(T), alignof(T)); - ::operator delete(vp); - } - - template - void construct(U *p, Args&&... args) { - ::new ((void*)p) U(std::forward(args)...); - P->countConstruct(*this, p); - } - - template - void destroy(U* p) { - p->~U(); - P->countDestroy(*this, p); - } - - AllocController& getController() const { return *P; } - -private: - template friend class CountingAllocator; - AllocController *P; -}; - - -template -class CountingAllocator -{ -public: - typedef void* pointer; - typedef const void* const_pointer; - typedef void value_type; - - template - struct rebind { using other = CountingAllocator; }; - - CountingAllocator() = delete; - explicit CountingAllocator(AllocController& PP) : P(&PP) {} - - CountingAllocator(CountingAllocator const& other) : P(other.P) { - P->copy_constructed += 1; - } - - CountingAllocator(CountingAllocator&& other) : P(other.P) { - P->move_constructed += 1; - } - - template - CountingAllocator(CountingAllocator const& other) TEST_NOEXCEPT : P(other.P) { - P->copy_constructed += 1; - } - - template - CountingAllocator(CountingAllocator&& other) TEST_NOEXCEPT : P(other.P) { - P->move_constructed += 1; - } - - void construct(...) = delete; - void destroy(void*) = delete; - - AllocController& getController() const { return *P; } - -private: - template friend class CountingAllocator; - AllocController *P; -}; - -template -inline bool operator==(CountingAllocator const& x, - CountingAllocator const& y) { - return &x.getController() == &y.getController(); -} - -template -inline bool operator!=(CountingAllocator const& x, - CountingAllocator const& y) { - return !(x == y); -} - -template -class MinAlignedAllocator -{ -public: - typedef T value_type; - typedef T* pointer; - - MinAlignedAllocator() = delete; - - explicit MinAlignedAllocator(AllocController& R) : P(&R) {} - - MinAlignedAllocator(MinAlignedAllocator const& other) : P(other.P) { - P->copy_constructed += 1; - } - - MinAlignedAllocator(MinAlignedAllocator&& other) : P(other.P) { - P->move_constructed += 1; - } - - template - MinAlignedAllocator(MinAlignedAllocator const& other) TEST_NOEXCEPT : P(other.P) { - P->copy_constructed += 1; - } - - template - MinAlignedAllocator(MinAlignedAllocator&& other) TEST_NOEXCEPT : P(other.P) { - P->move_constructed += 1; - } - - T* allocate(std::size_t n) { - char* aligned_ptr = (char*)::operator new(alloc_size(n*sizeof(T))); - assert(is_max_aligned(aligned_ptr)); - - char* unaligned_ptr = aligned_ptr + alignof(T); - assert(is_min_aligned(unaligned_ptr)); - - P->countAlloc(unaligned_ptr, n * sizeof(T), alignof(T)); - - return ((T*)unaligned_ptr); - } - - void deallocate(T* p, std::size_t n) { - assert(is_min_aligned(p)); - - char* aligned_ptr = ((char*)p) - alignof(T); - assert(is_max_aligned(aligned_ptr)); - - P->countDealloc(p, n*sizeof(T), alignof(T)); - - return ::operator delete(static_cast(aligned_ptr)); - } - - template - void construct(U *p, Args&&... args) { - auto *c = ::new ((void*)p) U(std::forward(args)...); - P->countConstruct(*this, p); - } - - template - void destroy(U* p) { - p->~U(); - P->countDestroy(*this, p); - } - - AllocController& getController() const { return *P; } - -private: - static const std::size_t BlockSize = alignof(std::max_align_t); - - static std::size_t alloc_size(std::size_t s) { - std::size_t bytes = (s + BlockSize - 1) & ~(BlockSize - 1); - bytes += BlockSize; - assert(bytes % BlockSize == 0); - return bytes; - } - - static bool is_max_aligned(void* p) { - return reinterpret_cast(p) % BlockSize == 0; - } - - static bool is_min_aligned(void* p) { - if (alignof(T) == BlockSize) { - return is_max_aligned(p); - } else { - return reinterpret_cast(p) % BlockSize == alignof(T); - } - } - - template friend class MinAlignedAllocator; - mutable AllocController *P; -}; - - -template -inline bool operator==(MinAlignedAllocator const& x, - MinAlignedAllocator const& y) { - return &x.getController() == &y.getController(); -} - -template -inline bool operator!=(MinAlignedAllocator const& x, - MinAlignedAllocator const& y) { - return !(x == y); -} - -template -class NullAllocator -{ -public: - typedef T value_type; - typedef T* pointer; - NullAllocator() = delete; - explicit NullAllocator(AllocController& PP) : P(&PP) {} - - NullAllocator(NullAllocator const& other) : P(other.P) { - P->copy_constructed += 1; - } - - NullAllocator(NullAllocator&& other) : P(other.P) { - P->move_constructed += 1; - } - - template - NullAllocator(NullAllocator const& other) TEST_NOEXCEPT : P(other.P) { - P->copy_constructed += 1; - } - - template - NullAllocator(NullAllocator&& other) TEST_NOEXCEPT : P(other.P) { - P->move_constructed += 1; - } - - T* allocate(std::size_t n) - { - P->countAlloc(nullptr, n*sizeof(T), alignof(T)); - return nullptr; - } - - void deallocate(T* p, std::size_t n) - { - void* vp = static_cast(p); - P->countDealloc(vp, n*sizeof(T), alignof(T)); - } - - AllocController& getController() const { return *P; } - -private: - template friend class NullAllocator; - AllocController *P; -}; - -template -inline bool operator==(NullAllocator const& x, - NullAllocator const& y) { - return &x.getController() == &y.getController(); -} - -template -inline bool operator!=(NullAllocator const& x, - NullAllocator const& y) { - return !(x == y); -} - - -#endif /* SUPPORT_CONTROLLED_ALLOCATORS_HPP */ Index: libcxx/trunk/test/support/count_new.h =================================================================== --- libcxx/trunk/test/support/count_new.h +++ libcxx/trunk/test/support/count_new.h @@ -0,0 +1,485 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef COUNT_NEW_H +#define COUNT_NEW_H + +# include +# include +# include + +#include "test_macros.h" + +#if defined(TEST_HAS_SANITIZERS) +#define DISABLE_NEW_COUNT +#endif + +namespace detail +{ + TEST_NORETURN + inline void throw_bad_alloc_helper() { +#ifndef TEST_HAS_NO_EXCEPTIONS + throw std::bad_alloc(); +#else + std::abort(); +#endif + } +} + +class MemCounter +{ +public: + // Make MemCounter super hard to accidentally construct or copy. + class MemCounterCtorArg_ {}; + explicit MemCounter(MemCounterCtorArg_) { reset(); } + +private: + MemCounter(MemCounter const &); + MemCounter & operator=(MemCounter const &); + +public: + // All checks return true when disable_checking is enabled. + static const bool disable_checking; + + // Disallow any allocations from occurring. Useful for testing that + // code doesn't perform any allocations. + bool disable_allocations; + + // number of allocations to throw after. Default (unsigned)-1. If + // throw_after has the default value it will never be decremented. + static const unsigned never_throw_value = static_cast(-1); + unsigned throw_after; + + int outstanding_new; + int new_called; + int delete_called; + int aligned_new_called; + int aligned_delete_called; + std::size_t last_new_size; + std::size_t last_new_align; + std::size_t last_delete_align; + + int outstanding_array_new; + int new_array_called; + int delete_array_called; + int aligned_new_array_called; + int aligned_delete_array_called; + std::size_t last_new_array_size; + std::size_t last_new_array_align; + std::size_t last_delete_array_align; + +public: + void newCalled(std::size_t s) + { + assert(disable_allocations == false); + assert(s); + if (throw_after == 0) { + throw_after = never_throw_value; + detail::throw_bad_alloc_helper(); + } else if (throw_after != never_throw_value) { + --throw_after; + } + ++new_called; + ++outstanding_new; + last_new_size = s; + } + + void alignedNewCalled(std::size_t s, std::size_t a) { + newCalled(s); + ++aligned_new_called; + last_new_align = a; + } + + void deleteCalled(void * p) + { + assert(p); + --outstanding_new; + ++delete_called; + } + + void alignedDeleteCalled(void *p, std::size_t a) { + deleteCalled(p); + ++aligned_delete_called; + last_delete_align = a; + } + + void newArrayCalled(std::size_t s) + { + assert(disable_allocations == false); + assert(s); + if (throw_after == 0) { + throw_after = never_throw_value; + detail::throw_bad_alloc_helper(); + } else { + // don't decrement throw_after here. newCalled will end up doing that. + } + ++outstanding_array_new; + ++new_array_called; + last_new_array_size = s; + } + + void alignedNewArrayCalled(std::size_t s, std::size_t a) { + newArrayCalled(s); + ++aligned_new_array_called; + last_new_array_align = a; + } + + void deleteArrayCalled(void * p) + { + assert(p); + --outstanding_array_new; + ++delete_array_called; + } + + void alignedDeleteArrayCalled(void * p, std::size_t a) { + deleteArrayCalled(p); + ++aligned_delete_array_called; + last_delete_array_align = a; + } + + void disableAllocations() + { + disable_allocations = true; + } + + void enableAllocations() + { + disable_allocations = false; + } + + void reset() + { + disable_allocations = false; + throw_after = never_throw_value; + + outstanding_new = 0; + new_called = 0; + delete_called = 0; + aligned_new_called = 0; + aligned_delete_called = 0; + last_new_size = 0; + last_new_align = 0; + + outstanding_array_new = 0; + new_array_called = 0; + delete_array_called = 0; + aligned_new_array_called = 0; + aligned_delete_array_called = 0; + last_new_array_size = 0; + last_new_array_align = 0; + } + +public: + bool checkOutstandingNewEq(int n) const + { + return disable_checking || n == outstanding_new; + } + + bool checkOutstandingNewNotEq(int n) const + { + return disable_checking || n != outstanding_new; + } + + bool checkNewCalledEq(int n) const + { + return disable_checking || n == new_called; + } + + bool checkNewCalledNotEq(int n) const + { + return disable_checking || n != new_called; + } + + bool checkNewCalledGreaterThan(int n) const + { + return disable_checking || new_called > n; + } + + bool checkDeleteCalledEq(int n) const + { + return disable_checking || n == delete_called; + } + + bool checkDeleteCalledNotEq(int n) const + { + return disable_checking || n != delete_called; + } + + bool checkAlignedNewCalledEq(int n) const + { + return disable_checking || n == aligned_new_called; + } + + bool checkAlignedNewCalledNotEq(int n) const + { + return disable_checking || n != aligned_new_called; + } + + bool checkAlignedNewCalledGreaterThan(int n) const + { + return disable_checking || aligned_new_called > n; + } + + bool checkAlignedDeleteCalledEq(int n) const + { + return disable_checking || n == aligned_delete_called; + } + + bool checkAlignedDeleteCalledNotEq(int n) const + { + return disable_checking || n != aligned_delete_called; + } + + bool checkLastNewSizeEq(std::size_t n) const + { + return disable_checking || n == last_new_size; + } + + bool checkLastNewSizeNotEq(std::size_t n) const + { + return disable_checking || n != last_new_size; + } + + bool checkLastNewAlignEq(std::size_t n) const + { + return disable_checking || n == last_new_align; + } + + bool checkLastNewAlignNotEq(std::size_t n) const + { + return disable_checking || n != last_new_align; + } + + bool checkLastDeleteAlignEq(std::size_t n) const + { + return disable_checking || n == last_delete_align; + } + + bool checkLastDeleteAlignNotEq(std::size_t n) const + { + return disable_checking || n != last_delete_align; + } + + bool checkOutstandingArrayNewEq(int n) const + { + return disable_checking || n == outstanding_array_new; + } + + bool checkOutstandingArrayNewNotEq(int n) const + { + return disable_checking || n != outstanding_array_new; + } + + bool checkNewArrayCalledEq(int n) const + { + return disable_checking || n == new_array_called; + } + + bool checkNewArrayCalledNotEq(int n) const + { + return disable_checking || n != new_array_called; + } + + bool checkDeleteArrayCalledEq(int n) const + { + return disable_checking || n == delete_array_called; + } + + bool checkDeleteArrayCalledNotEq(int n) const + { + return disable_checking || n != delete_array_called; + } + + bool checkAlignedNewArrayCalledEq(int n) const + { + return disable_checking || n == aligned_new_array_called; + } + + bool checkAlignedNewArrayCalledNotEq(int n) const + { + return disable_checking || n != aligned_new_array_called; + } + + bool checkAlignedNewArrayCalledGreaterThan(int n) const + { + return disable_checking || aligned_new_array_called > n; + } + + bool checkAlignedDeleteArrayCalledEq(int n) const + { + return disable_checking || n == aligned_delete_array_called; + } + + bool checkAlignedDeleteArrayCalledNotEq(int n) const + { + return disable_checking || n != aligned_delete_array_called; + } + + bool checkLastNewArraySizeEq(std::size_t n) const + { + return disable_checking || n == last_new_array_size; + } + + bool checkLastNewArraySizeNotEq(std::size_t n) const + { + return disable_checking || n != last_new_array_size; + } + + bool checkLastNewArrayAlignEq(std::size_t n) const + { + return disable_checking || n == last_new_array_align; + } + + bool checkLastNewArrayAlignNotEq(std::size_t n) const + { + return disable_checking || n != last_new_array_align; + } +}; + +#ifdef DISABLE_NEW_COUNT + const bool MemCounter::disable_checking = true; +#else + const bool MemCounter::disable_checking = false; +#endif + +inline MemCounter* getGlobalMemCounter() { + static MemCounter counter((MemCounter::MemCounterCtorArg_())); + return &counter; +} + +MemCounter &globalMemCounter = *getGlobalMemCounter(); + +#ifndef DISABLE_NEW_COUNT +void* operator new(std::size_t s) TEST_THROW_SPEC(std::bad_alloc) +{ + getGlobalMemCounter()->newCalled(s); + void* ret = std::malloc(s); + if (ret == nullptr) + detail::throw_bad_alloc_helper(); + return ret; +} + +void operator delete(void* p) TEST_NOEXCEPT +{ + getGlobalMemCounter()->deleteCalled(p); + std::free(p); +} + +void* operator new[](std::size_t s) TEST_THROW_SPEC(std::bad_alloc) +{ + getGlobalMemCounter()->newArrayCalled(s); + return operator new(s); +} + +void operator delete[](void* p) TEST_NOEXCEPT +{ + getGlobalMemCounter()->deleteArrayCalled(p); + operator delete(p); +} + +#ifndef TEST_HAS_NO_ALIGNED_ALLOCATION +#if defined(_LIBCPP_MSVCRT_LIKE) || \ + (!defined(_LIBCPP_VERSION) && defined(_WIN32)) +#define USE_ALIGNED_ALLOC +#endif + +void* operator new(std::size_t s, std::align_val_t av) TEST_THROW_SPEC(std::bad_alloc) { + const std::size_t a = static_cast(av); + getGlobalMemCounter()->alignedNewCalled(s, a); + void *ret; +#ifdef USE_ALIGNED_ALLOC + ret = _aligned_malloc(s, a); +#else + posix_memalign(&ret, a, s); +#endif + if (ret == nullptr) + detail::throw_bad_alloc_helper(); + return ret; +} + +void operator delete(void *p, std::align_val_t av) TEST_NOEXCEPT { + const std::size_t a = static_cast(av); + getGlobalMemCounter()->alignedDeleteCalled(p, a); + if (p) { +#ifdef USE_ALIGNED_ALLOC + ::_aligned_free(p); +#else + ::free(p); +#endif + } +} + +void* operator new[](std::size_t s, std::align_val_t av) TEST_THROW_SPEC(std::bad_alloc) { + const std::size_t a = static_cast(av); + getGlobalMemCounter()->alignedNewArrayCalled(s, a); + return operator new(s, av); +} + +void operator delete[](void *p, std::align_val_t av) TEST_NOEXCEPT { + const std::size_t a = static_cast(av); + getGlobalMemCounter()->alignedDeleteArrayCalled(p, a); + return operator delete(p, av); +} + +#endif // TEST_HAS_NO_ALIGNED_ALLOCATION + +#endif // DISABLE_NEW_COUNT + +struct DisableAllocationGuard { + explicit DisableAllocationGuard(bool disable = true) : m_disabled(disable) + { + // Don't re-disable if already disabled. + if (globalMemCounter.disable_allocations == true) m_disabled = false; + if (m_disabled) globalMemCounter.disableAllocations(); + } + + void release() { + if (m_disabled) globalMemCounter.enableAllocations(); + m_disabled = false; + } + + ~DisableAllocationGuard() { + release(); + } + +private: + bool m_disabled; + + DisableAllocationGuard(DisableAllocationGuard const&); + DisableAllocationGuard& operator=(DisableAllocationGuard const&); +}; + +struct RequireAllocationGuard { + explicit RequireAllocationGuard(std::size_t RequireAtLeast = 1) + : m_req_alloc(RequireAtLeast), + m_new_count_on_init(globalMemCounter.new_called), + m_outstanding_new_on_init(globalMemCounter.outstanding_new), + m_exactly(false) + { + } + + void requireAtLeast(std::size_t N) { m_req_alloc = N; m_exactly = false; } + void requireExactly(std::size_t N) { m_req_alloc = N; m_exactly = true; } + + ~RequireAllocationGuard() { + assert(globalMemCounter.checkOutstandingNewEq(static_cast(m_outstanding_new_on_init))); + std::size_t Expect = m_new_count_on_init + m_req_alloc; + assert(globalMemCounter.checkNewCalledEq(static_cast(Expect)) || + (!m_exactly && globalMemCounter.checkNewCalledGreaterThan(static_cast(Expect)))); + } + +private: + std::size_t m_req_alloc; + const std::size_t m_new_count_on_init; + const std::size_t m_outstanding_new_on_init; + bool m_exactly; + RequireAllocationGuard(RequireAllocationGuard const&); + RequireAllocationGuard& operator=(RequireAllocationGuard const&); +}; + +#endif /* COUNT_NEW_H */ Index: libcxx/trunk/test/support/count_new.hpp =================================================================== --- libcxx/trunk/test/support/count_new.hpp +++ libcxx/trunk/test/support/count_new.hpp @@ -1,485 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef COUNT_NEW_HPP -#define COUNT_NEW_HPP - -# include -# include -# include - -#include "test_macros.h" - -#if defined(TEST_HAS_SANITIZERS) -#define DISABLE_NEW_COUNT -#endif - -namespace detail -{ - TEST_NORETURN - inline void throw_bad_alloc_helper() { -#ifndef TEST_HAS_NO_EXCEPTIONS - throw std::bad_alloc(); -#else - std::abort(); -#endif - } -} - -class MemCounter -{ -public: - // Make MemCounter super hard to accidentally construct or copy. - class MemCounterCtorArg_ {}; - explicit MemCounter(MemCounterCtorArg_) { reset(); } - -private: - MemCounter(MemCounter const &); - MemCounter & operator=(MemCounter const &); - -public: - // All checks return true when disable_checking is enabled. - static const bool disable_checking; - - // Disallow any allocations from occurring. Useful for testing that - // code doesn't perform any allocations. - bool disable_allocations; - - // number of allocations to throw after. Default (unsigned)-1. If - // throw_after has the default value it will never be decremented. - static const unsigned never_throw_value = static_cast(-1); - unsigned throw_after; - - int outstanding_new; - int new_called; - int delete_called; - int aligned_new_called; - int aligned_delete_called; - std::size_t last_new_size; - std::size_t last_new_align; - std::size_t last_delete_align; - - int outstanding_array_new; - int new_array_called; - int delete_array_called; - int aligned_new_array_called; - int aligned_delete_array_called; - std::size_t last_new_array_size; - std::size_t last_new_array_align; - std::size_t last_delete_array_align; - -public: - void newCalled(std::size_t s) - { - assert(disable_allocations == false); - assert(s); - if (throw_after == 0) { - throw_after = never_throw_value; - detail::throw_bad_alloc_helper(); - } else if (throw_after != never_throw_value) { - --throw_after; - } - ++new_called; - ++outstanding_new; - last_new_size = s; - } - - void alignedNewCalled(std::size_t s, std::size_t a) { - newCalled(s); - ++aligned_new_called; - last_new_align = a; - } - - void deleteCalled(void * p) - { - assert(p); - --outstanding_new; - ++delete_called; - } - - void alignedDeleteCalled(void *p, std::size_t a) { - deleteCalled(p); - ++aligned_delete_called; - last_delete_align = a; - } - - void newArrayCalled(std::size_t s) - { - assert(disable_allocations == false); - assert(s); - if (throw_after == 0) { - throw_after = never_throw_value; - detail::throw_bad_alloc_helper(); - } else { - // don't decrement throw_after here. newCalled will end up doing that. - } - ++outstanding_array_new; - ++new_array_called; - last_new_array_size = s; - } - - void alignedNewArrayCalled(std::size_t s, std::size_t a) { - newArrayCalled(s); - ++aligned_new_array_called; - last_new_array_align = a; - } - - void deleteArrayCalled(void * p) - { - assert(p); - --outstanding_array_new; - ++delete_array_called; - } - - void alignedDeleteArrayCalled(void * p, std::size_t a) { - deleteArrayCalled(p); - ++aligned_delete_array_called; - last_delete_array_align = a; - } - - void disableAllocations() - { - disable_allocations = true; - } - - void enableAllocations() - { - disable_allocations = false; - } - - void reset() - { - disable_allocations = false; - throw_after = never_throw_value; - - outstanding_new = 0; - new_called = 0; - delete_called = 0; - aligned_new_called = 0; - aligned_delete_called = 0; - last_new_size = 0; - last_new_align = 0; - - outstanding_array_new = 0; - new_array_called = 0; - delete_array_called = 0; - aligned_new_array_called = 0; - aligned_delete_array_called = 0; - last_new_array_size = 0; - last_new_array_align = 0; - } - -public: - bool checkOutstandingNewEq(int n) const - { - return disable_checking || n == outstanding_new; - } - - bool checkOutstandingNewNotEq(int n) const - { - return disable_checking || n != outstanding_new; - } - - bool checkNewCalledEq(int n) const - { - return disable_checking || n == new_called; - } - - bool checkNewCalledNotEq(int n) const - { - return disable_checking || n != new_called; - } - - bool checkNewCalledGreaterThan(int n) const - { - return disable_checking || new_called > n; - } - - bool checkDeleteCalledEq(int n) const - { - return disable_checking || n == delete_called; - } - - bool checkDeleteCalledNotEq(int n) const - { - return disable_checking || n != delete_called; - } - - bool checkAlignedNewCalledEq(int n) const - { - return disable_checking || n == aligned_new_called; - } - - bool checkAlignedNewCalledNotEq(int n) const - { - return disable_checking || n != aligned_new_called; - } - - bool checkAlignedNewCalledGreaterThan(int n) const - { - return disable_checking || aligned_new_called > n; - } - - bool checkAlignedDeleteCalledEq(int n) const - { - return disable_checking || n == aligned_delete_called; - } - - bool checkAlignedDeleteCalledNotEq(int n) const - { - return disable_checking || n != aligned_delete_called; - } - - bool checkLastNewSizeEq(std::size_t n) const - { - return disable_checking || n == last_new_size; - } - - bool checkLastNewSizeNotEq(std::size_t n) const - { - return disable_checking || n != last_new_size; - } - - bool checkLastNewAlignEq(std::size_t n) const - { - return disable_checking || n == last_new_align; - } - - bool checkLastNewAlignNotEq(std::size_t n) const - { - return disable_checking || n != last_new_align; - } - - bool checkLastDeleteAlignEq(std::size_t n) const - { - return disable_checking || n == last_delete_align; - } - - bool checkLastDeleteAlignNotEq(std::size_t n) const - { - return disable_checking || n != last_delete_align; - } - - bool checkOutstandingArrayNewEq(int n) const - { - return disable_checking || n == outstanding_array_new; - } - - bool checkOutstandingArrayNewNotEq(int n) const - { - return disable_checking || n != outstanding_array_new; - } - - bool checkNewArrayCalledEq(int n) const - { - return disable_checking || n == new_array_called; - } - - bool checkNewArrayCalledNotEq(int n) const - { - return disable_checking || n != new_array_called; - } - - bool checkDeleteArrayCalledEq(int n) const - { - return disable_checking || n == delete_array_called; - } - - bool checkDeleteArrayCalledNotEq(int n) const - { - return disable_checking || n != delete_array_called; - } - - bool checkAlignedNewArrayCalledEq(int n) const - { - return disable_checking || n == aligned_new_array_called; - } - - bool checkAlignedNewArrayCalledNotEq(int n) const - { - return disable_checking || n != aligned_new_array_called; - } - - bool checkAlignedNewArrayCalledGreaterThan(int n) const - { - return disable_checking || aligned_new_array_called > n; - } - - bool checkAlignedDeleteArrayCalledEq(int n) const - { - return disable_checking || n == aligned_delete_array_called; - } - - bool checkAlignedDeleteArrayCalledNotEq(int n) const - { - return disable_checking || n != aligned_delete_array_called; - } - - bool checkLastNewArraySizeEq(std::size_t n) const - { - return disable_checking || n == last_new_array_size; - } - - bool checkLastNewArraySizeNotEq(std::size_t n) const - { - return disable_checking || n != last_new_array_size; - } - - bool checkLastNewArrayAlignEq(std::size_t n) const - { - return disable_checking || n == last_new_array_align; - } - - bool checkLastNewArrayAlignNotEq(std::size_t n) const - { - return disable_checking || n != last_new_array_align; - } -}; - -#ifdef DISABLE_NEW_COUNT - const bool MemCounter::disable_checking = true; -#else - const bool MemCounter::disable_checking = false; -#endif - -inline MemCounter* getGlobalMemCounter() { - static MemCounter counter((MemCounter::MemCounterCtorArg_())); - return &counter; -} - -MemCounter &globalMemCounter = *getGlobalMemCounter(); - -#ifndef DISABLE_NEW_COUNT -void* operator new(std::size_t s) TEST_THROW_SPEC(std::bad_alloc) -{ - getGlobalMemCounter()->newCalled(s); - void* ret = std::malloc(s); - if (ret == nullptr) - detail::throw_bad_alloc_helper(); - return ret; -} - -void operator delete(void* p) TEST_NOEXCEPT -{ - getGlobalMemCounter()->deleteCalled(p); - std::free(p); -} - -void* operator new[](std::size_t s) TEST_THROW_SPEC(std::bad_alloc) -{ - getGlobalMemCounter()->newArrayCalled(s); - return operator new(s); -} - -void operator delete[](void* p) TEST_NOEXCEPT -{ - getGlobalMemCounter()->deleteArrayCalled(p); - operator delete(p); -} - -#ifndef TEST_HAS_NO_ALIGNED_ALLOCATION -#if defined(_LIBCPP_MSVCRT_LIKE) || \ - (!defined(_LIBCPP_VERSION) && defined(_WIN32)) -#define USE_ALIGNED_ALLOC -#endif - -void* operator new(std::size_t s, std::align_val_t av) TEST_THROW_SPEC(std::bad_alloc) { - const std::size_t a = static_cast(av); - getGlobalMemCounter()->alignedNewCalled(s, a); - void *ret; -#ifdef USE_ALIGNED_ALLOC - ret = _aligned_malloc(s, a); -#else - posix_memalign(&ret, a, s); -#endif - if (ret == nullptr) - detail::throw_bad_alloc_helper(); - return ret; -} - -void operator delete(void *p, std::align_val_t av) TEST_NOEXCEPT { - const std::size_t a = static_cast(av); - getGlobalMemCounter()->alignedDeleteCalled(p, a); - if (p) { -#ifdef USE_ALIGNED_ALLOC - ::_aligned_free(p); -#else - ::free(p); -#endif - } -} - -void* operator new[](std::size_t s, std::align_val_t av) TEST_THROW_SPEC(std::bad_alloc) { - const std::size_t a = static_cast(av); - getGlobalMemCounter()->alignedNewArrayCalled(s, a); - return operator new(s, av); -} - -void operator delete[](void *p, std::align_val_t av) TEST_NOEXCEPT { - const std::size_t a = static_cast(av); - getGlobalMemCounter()->alignedDeleteArrayCalled(p, a); - return operator delete(p, av); -} - -#endif // TEST_HAS_NO_ALIGNED_ALLOCATION - -#endif // DISABLE_NEW_COUNT - -struct DisableAllocationGuard { - explicit DisableAllocationGuard(bool disable = true) : m_disabled(disable) - { - // Don't re-disable if already disabled. - if (globalMemCounter.disable_allocations == true) m_disabled = false; - if (m_disabled) globalMemCounter.disableAllocations(); - } - - void release() { - if (m_disabled) globalMemCounter.enableAllocations(); - m_disabled = false; - } - - ~DisableAllocationGuard() { - release(); - } - -private: - bool m_disabled; - - DisableAllocationGuard(DisableAllocationGuard const&); - DisableAllocationGuard& operator=(DisableAllocationGuard const&); -}; - -struct RequireAllocationGuard { - explicit RequireAllocationGuard(std::size_t RequireAtLeast = 1) - : m_req_alloc(RequireAtLeast), - m_new_count_on_init(globalMemCounter.new_called), - m_outstanding_new_on_init(globalMemCounter.outstanding_new), - m_exactly(false) - { - } - - void requireAtLeast(std::size_t N) { m_req_alloc = N; m_exactly = false; } - void requireExactly(std::size_t N) { m_req_alloc = N; m_exactly = true; } - - ~RequireAllocationGuard() { - assert(globalMemCounter.checkOutstandingNewEq(static_cast(m_outstanding_new_on_init))); - std::size_t Expect = m_new_count_on_init + m_req_alloc; - assert(globalMemCounter.checkNewCalledEq(static_cast(Expect)) || - (!m_exactly && globalMemCounter.checkNewCalledGreaterThan(static_cast(Expect)))); - } - -private: - std::size_t m_req_alloc; - const std::size_t m_new_count_on_init; - const std::size_t m_outstanding_new_on_init; - bool m_exactly; - RequireAllocationGuard(RequireAllocationGuard const&); - RequireAllocationGuard& operator=(RequireAllocationGuard const&); -}; - -#endif /* COUNT_NEW_HPP */ Index: libcxx/trunk/test/support/counting_predicates.h =================================================================== --- libcxx/trunk/test/support/counting_predicates.h +++ libcxx/trunk/test/support/counting_predicates.h @@ -0,0 +1,52 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef TEST_SUPPORT_COUNTING_PREDICATES_H +#define TEST_SUPPORT_COUNTING_PREDICATES_H + +#include + +template +struct unary_counting_predicate { +public: + typedef Arg argument_type; + typedef bool result_type; + + unary_counting_predicate(Predicate p) : p_(p), count_(0) {} + ~unary_counting_predicate() {} + + bool operator () (const Arg &a) const { ++count_; return p_(a); } + size_t count() const { return count_; } + void reset() { count_ = 0; } + +private: + Predicate p_; + mutable size_t count_; +}; + + +template +struct binary_counting_predicate { +public: + typedef Arg1 first_argument_type; + typedef Arg2 second_argument_type; + typedef bool result_type; + + binary_counting_predicate ( Predicate p ) : p_(p), count_(0) {} + ~binary_counting_predicate() {} + + bool operator () (const Arg1 &a1, const Arg2 &a2) const { ++count_; return p_(a1, a2); } + size_t count() const { return count_; } + void reset() { count_ = 0; } + +private: + Predicate p_; + mutable size_t count_; +}; + +#endif // TEST_SUPPORT_COUNTING_PREDICATES_H Index: libcxx/trunk/test/support/counting_predicates.hpp =================================================================== --- libcxx/trunk/test/support/counting_predicates.hpp +++ libcxx/trunk/test/support/counting_predicates.hpp @@ -1,52 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef TEST_SUPPORT_COUNTING_PREDICATES_H -#define TEST_SUPPORT_COUNTING_PREDICATES_H - -#include - -template -struct unary_counting_predicate { -public: - typedef Arg argument_type; - typedef bool result_type; - - unary_counting_predicate(Predicate p) : p_(p), count_(0) {} - ~unary_counting_predicate() {} - - bool operator () (const Arg &a) const { ++count_; return p_(a); } - size_t count() const { return count_; } - void reset() { count_ = 0; } - -private: - Predicate p_; - mutable size_t count_; -}; - - -template -struct binary_counting_predicate { -public: - typedef Arg1 first_argument_type; - typedef Arg2 second_argument_type; - typedef bool result_type; - - binary_counting_predicate ( Predicate p ) : p_(p), count_(0) {} - ~binary_counting_predicate() {} - - bool operator () (const Arg1 &a1, const Arg2 &a2) const { ++count_; return p_(a1, a2); } - size_t count() const { return count_; } - void reset() { count_ = 0; } - -private: - Predicate p_; - mutable size_t count_; -}; - -#endif // TEST_SUPPORT_COUNTING_PREDICATES_H Index: libcxx/trunk/test/support/filesystem_include.h =================================================================== --- libcxx/trunk/test/support/filesystem_include.h +++ libcxx/trunk/test/support/filesystem_include.h @@ -0,0 +1,13 @@ +#ifndef TEST_SUPPORT_FILESYSTEM_INCLUDE_H +#define TEST_SUPPORT_FILESYSTEM_INCLUDE_H + +#include +#include "test_macros.h" + +#if defined(_LIBCPP_VERSION) && TEST_STD_VER < 17 +namespace fs = std::__fs::filesystem; +#else +namespace fs = std::filesystem; +#endif + +#endif Index: libcxx/trunk/test/support/filesystem_include.hpp =================================================================== --- libcxx/trunk/test/support/filesystem_include.hpp +++ libcxx/trunk/test/support/filesystem_include.hpp @@ -1,13 +0,0 @@ -#ifndef TEST_SUPPORT_FILESYSTEM_INCLUDE_HPP -#define TEST_SUPPORT_FILESYSTEM_INCLUDE_HPP - -#include -#include "test_macros.h" - -#if defined(_LIBCPP_VERSION) && TEST_STD_VER < 17 -namespace fs = std::__fs::filesystem; -#else -namespace fs = std::filesystem; -#endif - -#endif Index: libcxx/trunk/test/support/filesystem_test_helper.h =================================================================== --- libcxx/trunk/test/support/filesystem_test_helper.h +++ libcxx/trunk/test/support/filesystem_test_helper.h @@ -0,0 +1,557 @@ +#ifndef FILESYSTEM_TEST_HELPER_H +#define FILESYSTEM_TEST_HELPER_H + +#include "filesystem_include.h" + +#include // for ftruncate + +#include +#include // for printf +#include +#include +#include +#include +#include +#include + +#include "test_macros.h" +#include "rapid-cxx-test.h" +#include "format_string.h" + +// static test helpers + +#ifndef LIBCXX_FILESYSTEM_STATIC_TEST_ROOT +#warning "STATIC TESTS DISABLED" +#else // LIBCXX_FILESYSTEM_STATIC_TEST_ROOT + +namespace StaticEnv { + +inline fs::path makePath(fs::path const& p) { + // env_path is expected not to contain symlinks. + static const fs::path env_path = LIBCXX_FILESYSTEM_STATIC_TEST_ROOT; + return env_path / p; +} + +static const fs::path Root = LIBCXX_FILESYSTEM_STATIC_TEST_ROOT; + +static const fs::path TestFileList[] = { + makePath("empty_file"), + makePath("non_empty_file"), + makePath("dir1/file1"), + makePath("dir1/file2") +}; +const std::size_t TestFileListSize = sizeof(TestFileList) / sizeof(fs::path); + +static const fs::path TestDirList[] = { + makePath("dir1"), + makePath("dir1/dir2"), + makePath("dir1/dir2/dir3") +}; +const std::size_t TestDirListSize = sizeof(TestDirList) / sizeof(fs::path); + +static const fs::path File = TestFileList[0]; +static const fs::path Dir = TestDirList[0]; +static const fs::path Dir2 = TestDirList[1]; +static const fs::path Dir3 = TestDirList[2]; +static const fs::path SymlinkToFile = makePath("symlink_to_empty_file"); +static const fs::path SymlinkToDir = makePath("symlink_to_dir"); +static const fs::path BadSymlink = makePath("bad_symlink"); +static const fs::path DNE = makePath("DNE"); +static const fs::path EmptyFile = TestFileList[0]; +static const fs::path NonEmptyFile = TestFileList[1]; +static const fs::path CharFile = "/dev/null"; // Hopefully this exists + +static const fs::path DirIterationList[] = { + makePath("dir1/dir2"), + makePath("dir1/file1"), + makePath("dir1/file2") +}; +const std::size_t DirIterationListSize = sizeof(DirIterationList) + / sizeof(fs::path); + +static const fs::path DirIterationListDepth1[] = { + makePath("dir1/dir2/afile3"), + makePath("dir1/dir2/dir3"), + makePath("dir1/dir2/symlink_to_dir3"), + makePath("dir1/dir2/file4"), +}; + +static const fs::path RecDirIterationList[] = { + makePath("dir1/dir2"), + makePath("dir1/file1"), + makePath("dir1/file2"), + makePath("dir1/dir2/afile3"), + makePath("dir1/dir2/dir3"), + makePath("dir1/dir2/symlink_to_dir3"), + makePath("dir1/dir2/file4"), + makePath("dir1/dir2/dir3/file5") +}; + +static const fs::path RecDirFollowSymlinksIterationList[] = { + makePath("dir1/dir2"), + makePath("dir1/file1"), + makePath("dir1/file2"), + makePath("dir1/dir2/afile3"), + makePath("dir1/dir2/dir3"), + makePath("dir1/dir2/file4"), + makePath("dir1/dir2/dir3/file5"), + makePath("dir1/dir2/symlink_to_dir3"), + makePath("dir1/dir2/symlink_to_dir3/file5"), +}; + +} // namespace StaticEnv + +#endif // LIBCXX_FILESYSTEM_STATIC_TEST_ROOT + +#ifndef LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT +#warning LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT must be defined +#else // LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT + +#ifndef LIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER +#error LIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER must be defined +#endif + +namespace random_utils { +inline char to_hex(int ch) { + return ch < 10 ? static_cast('0' + ch) + : static_cast('a' + (ch - 10)); +} + +inline char random_hex_char() { + static std::mt19937 rd{std::random_device{}()}; + static std::uniform_int_distribution mrand{0, 15}; + return to_hex(mrand(rd)); +} + +} // namespace random_utils + +struct scoped_test_env +{ + scoped_test_env() : test_root(random_env_path()) + { fs_helper_run(fs_make_cmd("init_test_directory", test_root)); } + + ~scoped_test_env() + { fs_helper_run(fs_make_cmd("destroy_test_directory", test_root)); } + + scoped_test_env(scoped_test_env const &) = delete; + scoped_test_env & operator=(scoped_test_env const &) = delete; + + fs::path make_env_path(std::string p) { return sanitize_path(p); } + + std::string sanitize_path(std::string raw) { + assert(raw.find("..") == std::string::npos); + std::string const& root = test_root.native(); + if (root.compare(0, root.size(), raw, 0, root.size()) != 0) { + assert(raw.front() != '\\'); + fs::path tmp(test_root); + tmp /= raw; + return std::move(const_cast(tmp.native())); + } + return raw; + } + + // Purposefully using a size potentially larger than off_t here so we can + // test the behavior of libc++fs when it is built with _FILE_OFFSET_BITS=64 + // but the caller is not (std::filesystem also uses uintmax_t rather than + // off_t). On a 32-bit system this allows us to create a file larger than + // 2GB. + std::string create_file(std::string filename, uintmax_t size = 0) { +#if defined(__LP64__) + auto large_file_fopen = fopen; + auto large_file_ftruncate = ftruncate; + using large_file_offset_t = off_t; +#else + auto large_file_fopen = fopen64; + auto large_file_ftruncate = ftruncate64; + using large_file_offset_t = off64_t; +#endif + + filename = sanitize_path(std::move(filename)); + + if (size > std::numeric_limits::max()) { + fprintf(stderr, "create_file(%s, %ju) too large\n", + filename.c_str(), size); + abort(); + } + + FILE* file = large_file_fopen(filename.c_str(), "we"); + if (file == nullptr) { + fprintf(stderr, "fopen %s failed: %s\n", filename.c_str(), + strerror(errno)); + abort(); + } + + if (large_file_ftruncate( + fileno(file), static_cast(size)) == -1) { + fprintf(stderr, "ftruncate %s %ju failed: %s\n", filename.c_str(), + size, strerror(errno)); + fclose(file); + abort(); + } + + fclose(file); + return filename; + } + + std::string create_dir(std::string filename) { + filename = sanitize_path(std::move(filename)); + fs_helper_run(fs_make_cmd("create_dir", filename)); + return filename; + } + + std::string create_symlink(std::string source, std::string to) { + source = sanitize_path(std::move(source)); + to = sanitize_path(std::move(to)); + fs_helper_run(fs_make_cmd("create_symlink", source, to)); + return to; + } + + std::string create_hardlink(std::string source, std::string to) { + source = sanitize_path(std::move(source)); + to = sanitize_path(std::move(to)); + fs_helper_run(fs_make_cmd("create_hardlink", source, to)); + return to; + } + + std::string create_fifo(std::string file) { + file = sanitize_path(std::move(file)); + fs_helper_run(fs_make_cmd("create_fifo", file)); + return file; + } + + // OS X and FreeBSD doesn't support socket files so we shouldn't even + // allow tests to call this unguarded. +#if !defined(__FreeBSD__) && !defined(__APPLE__) + std::string create_socket(std::string file) { + file = sanitize_path(std::move(file)); + fs_helper_run(fs_make_cmd("create_socket", file)); + return file; + } +#endif + + fs::path const test_root; + +private: + static std::string unique_path_suffix() { + std::string model = "test.%%%%%%"; + for (auto & ch : model) { + if (ch == '%') + ch = random_utils::random_hex_char(); + } + return model; + } + + // This could potentially introduce a filesystem race with other tests + // running at the same time, but oh well, it's just test code. + static inline fs::path random_env_path() { + static const char* env_path = LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT; + fs::path p = fs::path(env_path) / unique_path_suffix(); + assert(p.parent_path() == env_path); + return p; + } + + static inline std::string make_arg(std::string const& arg) { + return "'" + arg + "'"; + } + + static inline std::string make_arg(std::size_t arg) { + return std::to_string(arg); + } + + template + static inline std::string + fs_make_cmd(std::string const& cmd_name, T const& arg) { + return cmd_name + "(" + make_arg(arg) + ")"; + } + + template + static inline std::string + fs_make_cmd(std::string const& cmd_name, T const& arg1, U const& arg2) { + return cmd_name + "(" + make_arg(arg1) + ", " + make_arg(arg2) + ")"; + } + + static inline void fs_helper_run(std::string const& raw_cmd) { + // check that the fs test root in the environment matches what we were + // compiled with. + static bool checked = checkDynamicTestRoot(); + ((void)checked); + std::string cmd = LIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER; + cmd += " \"" + raw_cmd + "\""; + int ret = std::system(cmd.c_str()); + assert(ret == 0); + } + + static bool checkDynamicTestRoot() { + // LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT is expected not to contain symlinks. + char* fs_root = std::getenv("LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT"); + if (!fs_root) { + std::printf("ERROR: LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT must be a defined " + "environment variable when running the test.\n"); + std::abort(); + } + if (std::string(fs_root) != LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT) { + std::printf("ERROR: LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT environment variable" + " must have the same value as when the test was compiled.\n"); + std::printf(" Current Value: '%s'\n", fs_root); + std::printf(" Expected Value: '%s'\n", LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT); + std::abort(); + } + return true; + } + +}; + +#endif // LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT + +// Misc test types + +#define CONCAT2(LHS, RHS) LHS##RHS +#define CONCAT(LHS, RHS) CONCAT2(LHS, RHS) +#define MKSTR(Str) {Str, CONCAT(L, Str), CONCAT(u, Str), CONCAT(U, Str)} + +struct MultiStringType { + const char* s; + const wchar_t* w; + const char16_t* u16; + const char32_t* u32; + + operator const char* () const { return s; } + operator const wchar_t* () const { return w; } + operator const char16_t* () const { return u16; } + operator const char32_t* () const { return u32; } +}; + +const MultiStringType PathList[] = { + MKSTR(""), + MKSTR(" "), + MKSTR("//"), + MKSTR("."), + MKSTR(".."), + MKSTR("foo"), + MKSTR("/"), + MKSTR("/foo"), + MKSTR("foo/"), + MKSTR("/foo/"), + MKSTR("foo/bar"), + MKSTR("/foo/bar"), + MKSTR("//net"), + MKSTR("//net/foo"), + MKSTR("///foo///"), + MKSTR("///foo///bar"), + MKSTR("/."), + MKSTR("./"), + MKSTR("/.."), + MKSTR("../"), + MKSTR("foo/."), + MKSTR("foo/.."), + MKSTR("foo/./"), + MKSTR("foo/./bar"), + MKSTR("foo/../"), + MKSTR("foo/../bar"), + MKSTR("c:"), + MKSTR("c:/"), + MKSTR("c:foo"), + MKSTR("c:/foo"), + MKSTR("c:foo/"), + MKSTR("c:/foo/"), + MKSTR("c:/foo/bar"), + MKSTR("prn:"), + MKSTR("c:\\"), + MKSTR("c:\\foo"), + MKSTR("c:foo\\"), + MKSTR("c:\\foo\\"), + MKSTR("c:\\foo/"), + MKSTR("c:/foo\\bar"), + MKSTR("//"), + MKSTR("/finally/we/need/one/really/really/really/really/really/really/really/long/string") +}; +const unsigned PathListSize = sizeof(PathList) / sizeof(MultiStringType); + +template +Iter IterEnd(Iter B) { + using VT = typename std::iterator_traits::value_type; + for (; *B != VT{}; ++B) + ; + return B; +} + +template +const CharT* StrEnd(CharT const* P) { + return IterEnd(P); +} + +template +std::size_t StrLen(CharT const* P) { + return StrEnd(P) - P; +} + +// Testing the allocation behavior of the code_cvt functions requires +// *knowing* that the allocation was not done by "path::__str_". +// This hack forces path to allocate enough memory. +inline void PathReserve(fs::path& p, std::size_t N) { + auto const& native_ref = p.native(); + const_cast(native_ref).reserve(N); +} + +template +bool checkCollectionsEqual( + Iter1 start1, Iter1 const end1 + , Iter2 start2, Iter2 const end2 + ) +{ + while (start1 != end1 && start2 != end2) { + if (*start1 != *start2) { + return false; + } + ++start1; ++start2; + } + return (start1 == end1 && start2 == end2); +} + + +template +bool checkCollectionsEqualBackwards( + Iter1 const start1, Iter1 end1 + , Iter2 const start2, Iter2 end2 + ) +{ + while (start1 != end1 && start2 != end2) { + --end1; --end2; + if (*end1 != *end2) { + return false; + } + } + return (start1 == end1 && start2 == end2); +} + +// We often need to test that the error_code was cleared if no error occurs +// this function returns an error_code which is set to an error that will +// never be returned by the filesystem functions. +inline std::error_code GetTestEC(unsigned Idx = 0) { + using std::errc; + auto GetErrc = [&]() { + switch (Idx) { + case 0: + return errc::address_family_not_supported; + case 1: + return errc::address_not_available; + case 2: + return errc::address_in_use; + case 3: + return errc::argument_list_too_long; + default: + assert(false && "Idx out of range"); + std::abort(); + } + }; + return std::make_error_code(GetErrc()); +} + +inline bool ErrorIsImp(const std::error_code& ec, + std::vector const& errors) { + for (auto errc : errors) { + if (ec == std::make_error_code(errc)) + return true; + } + return false; +} + +template +inline bool ErrorIs(const std::error_code& ec, std::errc First, ErrcT... Rest) { + std::vector errors = {First, Rest...}; + return ErrorIsImp(ec, errors); +} + +// Provide our own Sleep routine since std::this_thread::sleep_for is not +// available in single-threaded mode. +void SleepFor(std::chrono::seconds dur) { + using namespace std::chrono; +#if defined(_LIBCPP_HAS_NO_MONOTONIC_CLOCK) + using Clock = system_clock; +#else + using Clock = steady_clock; +#endif + const auto wake_time = Clock::now() + dur; + while (Clock::now() < wake_time) + ; +} + +inline bool PathEq(fs::path const& LHS, fs::path const& RHS) { + return LHS.native() == RHS.native(); +} + +struct ExceptionChecker { + std::errc expected_err; + fs::path expected_path1; + fs::path expected_path2; + unsigned num_paths; + const char* func_name; + std::string opt_message; + + explicit ExceptionChecker(std::errc first_err, const char* func_name, + std::string opt_msg = {}) + : expected_err{first_err}, num_paths(0), func_name(func_name), + opt_message(opt_msg) {} + explicit ExceptionChecker(fs::path p, std::errc first_err, + const char* func_name, std::string opt_msg = {}) + : expected_err(first_err), expected_path1(p), num_paths(1), + func_name(func_name), opt_message(opt_msg) {} + + explicit ExceptionChecker(fs::path p1, fs::path p2, std::errc first_err, + const char* func_name, std::string opt_msg = {}) + : expected_err(first_err), expected_path1(p1), expected_path2(p2), + num_paths(2), func_name(func_name), opt_message(opt_msg) {} + + void operator()(fs::filesystem_error const& Err) { + TEST_CHECK(ErrorIsImp(Err.code(), {expected_err})); + TEST_CHECK(Err.path1() == expected_path1); + TEST_CHECK(Err.path2() == expected_path2); + LIBCPP_ONLY(check_libcxx_string(Err)); + } + + void check_libcxx_string(fs::filesystem_error const& Err) { + std::string message = std::make_error_code(expected_err).message(); + + std::string additional_msg = ""; + if (!opt_message.empty()) { + additional_msg = opt_message + ": "; + } + auto transform_path = [](const fs::path& p) { + if (p.native().empty()) + return "\"\""; + return p.c_str(); + }; + std::string format = [&]() -> std::string { + switch (num_paths) { + case 0: + return format_string("filesystem error: in %s: %s%s", func_name, + additional_msg, message); + case 1: + return format_string("filesystem error: in %s: %s%s [%s]", func_name, + additional_msg, message, + transform_path(expected_path1)); + case 2: + return format_string("filesystem error: in %s: %s%s [%s] [%s]", + func_name, additional_msg, message, + transform_path(expected_path1), + transform_path(expected_path2)); + default: + TEST_CHECK(false && "unexpected case"); + return ""; + } + }(); + TEST_CHECK(format == Err.what()); + if (format != Err.what()) { + fprintf(stderr, + "filesystem_error::what() does not match expected output:\n"); + fprintf(stderr, " expected: \"%s\"\n", format.c_str()); + fprintf(stderr, " actual: \"%s\"\n\n", Err.what()); + } + } + + ExceptionChecker(ExceptionChecker const&) = delete; + ExceptionChecker& operator=(ExceptionChecker const&) = delete; + +}; + +#endif /* FILESYSTEM_TEST_HELPER_HPP */ Index: libcxx/trunk/test/support/filesystem_test_helper.hpp =================================================================== --- libcxx/trunk/test/support/filesystem_test_helper.hpp +++ libcxx/trunk/test/support/filesystem_test_helper.hpp @@ -1,557 +0,0 @@ -#ifndef FILESYSTEM_TEST_HELPER_HPP -#define FILESYSTEM_TEST_HELPER_HPP - -#include "filesystem_include.hpp" - -#include // for ftruncate - -#include -#include // for printf -#include -#include -#include -#include -#include -#include - -#include "test_macros.h" -#include "rapid-cxx-test.hpp" -#include "format_string.hpp" - -// static test helpers - -#ifndef LIBCXX_FILESYSTEM_STATIC_TEST_ROOT -#warning "STATIC TESTS DISABLED" -#else // LIBCXX_FILESYSTEM_STATIC_TEST_ROOT - -namespace StaticEnv { - -inline fs::path makePath(fs::path const& p) { - // env_path is expected not to contain symlinks. - static const fs::path env_path = LIBCXX_FILESYSTEM_STATIC_TEST_ROOT; - return env_path / p; -} - -static const fs::path Root = LIBCXX_FILESYSTEM_STATIC_TEST_ROOT; - -static const fs::path TestFileList[] = { - makePath("empty_file"), - makePath("non_empty_file"), - makePath("dir1/file1"), - makePath("dir1/file2") -}; -const std::size_t TestFileListSize = sizeof(TestFileList) / sizeof(fs::path); - -static const fs::path TestDirList[] = { - makePath("dir1"), - makePath("dir1/dir2"), - makePath("dir1/dir2/dir3") -}; -const std::size_t TestDirListSize = sizeof(TestDirList) / sizeof(fs::path); - -static const fs::path File = TestFileList[0]; -static const fs::path Dir = TestDirList[0]; -static const fs::path Dir2 = TestDirList[1]; -static const fs::path Dir3 = TestDirList[2]; -static const fs::path SymlinkToFile = makePath("symlink_to_empty_file"); -static const fs::path SymlinkToDir = makePath("symlink_to_dir"); -static const fs::path BadSymlink = makePath("bad_symlink"); -static const fs::path DNE = makePath("DNE"); -static const fs::path EmptyFile = TestFileList[0]; -static const fs::path NonEmptyFile = TestFileList[1]; -static const fs::path CharFile = "/dev/null"; // Hopefully this exists - -static const fs::path DirIterationList[] = { - makePath("dir1/dir2"), - makePath("dir1/file1"), - makePath("dir1/file2") -}; -const std::size_t DirIterationListSize = sizeof(DirIterationList) - / sizeof(fs::path); - -static const fs::path DirIterationListDepth1[] = { - makePath("dir1/dir2/afile3"), - makePath("dir1/dir2/dir3"), - makePath("dir1/dir2/symlink_to_dir3"), - makePath("dir1/dir2/file4"), -}; - -static const fs::path RecDirIterationList[] = { - makePath("dir1/dir2"), - makePath("dir1/file1"), - makePath("dir1/file2"), - makePath("dir1/dir2/afile3"), - makePath("dir1/dir2/dir3"), - makePath("dir1/dir2/symlink_to_dir3"), - makePath("dir1/dir2/file4"), - makePath("dir1/dir2/dir3/file5") -}; - -static const fs::path RecDirFollowSymlinksIterationList[] = { - makePath("dir1/dir2"), - makePath("dir1/file1"), - makePath("dir1/file2"), - makePath("dir1/dir2/afile3"), - makePath("dir1/dir2/dir3"), - makePath("dir1/dir2/file4"), - makePath("dir1/dir2/dir3/file5"), - makePath("dir1/dir2/symlink_to_dir3"), - makePath("dir1/dir2/symlink_to_dir3/file5"), -}; - -} // namespace StaticEnv - -#endif // LIBCXX_FILESYSTEM_STATIC_TEST_ROOT - -#ifndef LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT -#warning LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT must be defined -#else // LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT - -#ifndef LIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER -#error LIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER must be defined -#endif - -namespace random_utils { -inline char to_hex(int ch) { - return ch < 10 ? static_cast('0' + ch) - : static_cast('a' + (ch - 10)); -} - -inline char random_hex_char() { - static std::mt19937 rd{std::random_device{}()}; - static std::uniform_int_distribution mrand{0, 15}; - return to_hex(mrand(rd)); -} - -} // namespace random_utils - -struct scoped_test_env -{ - scoped_test_env() : test_root(random_env_path()) - { fs_helper_run(fs_make_cmd("init_test_directory", test_root)); } - - ~scoped_test_env() - { fs_helper_run(fs_make_cmd("destroy_test_directory", test_root)); } - - scoped_test_env(scoped_test_env const &) = delete; - scoped_test_env & operator=(scoped_test_env const &) = delete; - - fs::path make_env_path(std::string p) { return sanitize_path(p); } - - std::string sanitize_path(std::string raw) { - assert(raw.find("..") == std::string::npos); - std::string const& root = test_root.native(); - if (root.compare(0, root.size(), raw, 0, root.size()) != 0) { - assert(raw.front() != '\\'); - fs::path tmp(test_root); - tmp /= raw; - return std::move(const_cast(tmp.native())); - } - return raw; - } - - // Purposefully using a size potentially larger than off_t here so we can - // test the behavior of libc++fs when it is built with _FILE_OFFSET_BITS=64 - // but the caller is not (std::filesystem also uses uintmax_t rather than - // off_t). On a 32-bit system this allows us to create a file larger than - // 2GB. - std::string create_file(std::string filename, uintmax_t size = 0) { -#if defined(__LP64__) - auto large_file_fopen = fopen; - auto large_file_ftruncate = ftruncate; - using large_file_offset_t = off_t; -#else - auto large_file_fopen = fopen64; - auto large_file_ftruncate = ftruncate64; - using large_file_offset_t = off64_t; -#endif - - filename = sanitize_path(std::move(filename)); - - if (size > std::numeric_limits::max()) { - fprintf(stderr, "create_file(%s, %ju) too large\n", - filename.c_str(), size); - abort(); - } - - FILE* file = large_file_fopen(filename.c_str(), "we"); - if (file == nullptr) { - fprintf(stderr, "fopen %s failed: %s\n", filename.c_str(), - strerror(errno)); - abort(); - } - - if (large_file_ftruncate( - fileno(file), static_cast(size)) == -1) { - fprintf(stderr, "ftruncate %s %ju failed: %s\n", filename.c_str(), - size, strerror(errno)); - fclose(file); - abort(); - } - - fclose(file); - return filename; - } - - std::string create_dir(std::string filename) { - filename = sanitize_path(std::move(filename)); - fs_helper_run(fs_make_cmd("create_dir", filename)); - return filename; - } - - std::string create_symlink(std::string source, std::string to) { - source = sanitize_path(std::move(source)); - to = sanitize_path(std::move(to)); - fs_helper_run(fs_make_cmd("create_symlink", source, to)); - return to; - } - - std::string create_hardlink(std::string source, std::string to) { - source = sanitize_path(std::move(source)); - to = sanitize_path(std::move(to)); - fs_helper_run(fs_make_cmd("create_hardlink", source, to)); - return to; - } - - std::string create_fifo(std::string file) { - file = sanitize_path(std::move(file)); - fs_helper_run(fs_make_cmd("create_fifo", file)); - return file; - } - - // OS X and FreeBSD doesn't support socket files so we shouldn't even - // allow tests to call this unguarded. -#if !defined(__FreeBSD__) && !defined(__APPLE__) - std::string create_socket(std::string file) { - file = sanitize_path(std::move(file)); - fs_helper_run(fs_make_cmd("create_socket", file)); - return file; - } -#endif - - fs::path const test_root; - -private: - static std::string unique_path_suffix() { - std::string model = "test.%%%%%%"; - for (auto & ch : model) { - if (ch == '%') - ch = random_utils::random_hex_char(); - } - return model; - } - - // This could potentially introduce a filesystem race with other tests - // running at the same time, but oh well, it's just test code. - static inline fs::path random_env_path() { - static const char* env_path = LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT; - fs::path p = fs::path(env_path) / unique_path_suffix(); - assert(p.parent_path() == env_path); - return p; - } - - static inline std::string make_arg(std::string const& arg) { - return "'" + arg + "'"; - } - - static inline std::string make_arg(std::size_t arg) { - return std::to_string(arg); - } - - template - static inline std::string - fs_make_cmd(std::string const& cmd_name, T const& arg) { - return cmd_name + "(" + make_arg(arg) + ")"; - } - - template - static inline std::string - fs_make_cmd(std::string const& cmd_name, T const& arg1, U const& arg2) { - return cmd_name + "(" + make_arg(arg1) + ", " + make_arg(arg2) + ")"; - } - - static inline void fs_helper_run(std::string const& raw_cmd) { - // check that the fs test root in the environment matches what we were - // compiled with. - static bool checked = checkDynamicTestRoot(); - ((void)checked); - std::string cmd = LIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER; - cmd += " \"" + raw_cmd + "\""; - int ret = std::system(cmd.c_str()); - assert(ret == 0); - } - - static bool checkDynamicTestRoot() { - // LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT is expected not to contain symlinks. - char* fs_root = std::getenv("LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT"); - if (!fs_root) { - std::printf("ERROR: LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT must be a defined " - "environment variable when running the test.\n"); - std::abort(); - } - if (std::string(fs_root) != LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT) { - std::printf("ERROR: LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT environment variable" - " must have the same value as when the test was compiled.\n"); - std::printf(" Current Value: '%s'\n", fs_root); - std::printf(" Expected Value: '%s'\n", LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT); - std::abort(); - } - return true; - } - -}; - -#endif // LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT - -// Misc test types - -#define CONCAT2(LHS, RHS) LHS##RHS -#define CONCAT(LHS, RHS) CONCAT2(LHS, RHS) -#define MKSTR(Str) {Str, CONCAT(L, Str), CONCAT(u, Str), CONCAT(U, Str)} - -struct MultiStringType { - const char* s; - const wchar_t* w; - const char16_t* u16; - const char32_t* u32; - - operator const char* () const { return s; } - operator const wchar_t* () const { return w; } - operator const char16_t* () const { return u16; } - operator const char32_t* () const { return u32; } -}; - -const MultiStringType PathList[] = { - MKSTR(""), - MKSTR(" "), - MKSTR("//"), - MKSTR("."), - MKSTR(".."), - MKSTR("foo"), - MKSTR("/"), - MKSTR("/foo"), - MKSTR("foo/"), - MKSTR("/foo/"), - MKSTR("foo/bar"), - MKSTR("/foo/bar"), - MKSTR("//net"), - MKSTR("//net/foo"), - MKSTR("///foo///"), - MKSTR("///foo///bar"), - MKSTR("/."), - MKSTR("./"), - MKSTR("/.."), - MKSTR("../"), - MKSTR("foo/."), - MKSTR("foo/.."), - MKSTR("foo/./"), - MKSTR("foo/./bar"), - MKSTR("foo/../"), - MKSTR("foo/../bar"), - MKSTR("c:"), - MKSTR("c:/"), - MKSTR("c:foo"), - MKSTR("c:/foo"), - MKSTR("c:foo/"), - MKSTR("c:/foo/"), - MKSTR("c:/foo/bar"), - MKSTR("prn:"), - MKSTR("c:\\"), - MKSTR("c:\\foo"), - MKSTR("c:foo\\"), - MKSTR("c:\\foo\\"), - MKSTR("c:\\foo/"), - MKSTR("c:/foo\\bar"), - MKSTR("//"), - MKSTR("/finally/we/need/one/really/really/really/really/really/really/really/long/string") -}; -const unsigned PathListSize = sizeof(PathList) / sizeof(MultiStringType); - -template -Iter IterEnd(Iter B) { - using VT = typename std::iterator_traits::value_type; - for (; *B != VT{}; ++B) - ; - return B; -} - -template -const CharT* StrEnd(CharT const* P) { - return IterEnd(P); -} - -template -std::size_t StrLen(CharT const* P) { - return StrEnd(P) - P; -} - -// Testing the allocation behavior of the code_cvt functions requires -// *knowing* that the allocation was not done by "path::__str_". -// This hack forces path to allocate enough memory. -inline void PathReserve(fs::path& p, std::size_t N) { - auto const& native_ref = p.native(); - const_cast(native_ref).reserve(N); -} - -template -bool checkCollectionsEqual( - Iter1 start1, Iter1 const end1 - , Iter2 start2, Iter2 const end2 - ) -{ - while (start1 != end1 && start2 != end2) { - if (*start1 != *start2) { - return false; - } - ++start1; ++start2; - } - return (start1 == end1 && start2 == end2); -} - - -template -bool checkCollectionsEqualBackwards( - Iter1 const start1, Iter1 end1 - , Iter2 const start2, Iter2 end2 - ) -{ - while (start1 != end1 && start2 != end2) { - --end1; --end2; - if (*end1 != *end2) { - return false; - } - } - return (start1 == end1 && start2 == end2); -} - -// We often need to test that the error_code was cleared if no error occurs -// this function returns an error_code which is set to an error that will -// never be returned by the filesystem functions. -inline std::error_code GetTestEC(unsigned Idx = 0) { - using std::errc; - auto GetErrc = [&]() { - switch (Idx) { - case 0: - return errc::address_family_not_supported; - case 1: - return errc::address_not_available; - case 2: - return errc::address_in_use; - case 3: - return errc::argument_list_too_long; - default: - assert(false && "Idx out of range"); - std::abort(); - } - }; - return std::make_error_code(GetErrc()); -} - -inline bool ErrorIsImp(const std::error_code& ec, - std::vector const& errors) { - for (auto errc : errors) { - if (ec == std::make_error_code(errc)) - return true; - } - return false; -} - -template -inline bool ErrorIs(const std::error_code& ec, std::errc First, ErrcT... Rest) { - std::vector errors = {First, Rest...}; - return ErrorIsImp(ec, errors); -} - -// Provide our own Sleep routine since std::this_thread::sleep_for is not -// available in single-threaded mode. -void SleepFor(std::chrono::seconds dur) { - using namespace std::chrono; -#if defined(_LIBCPP_HAS_NO_MONOTONIC_CLOCK) - using Clock = system_clock; -#else - using Clock = steady_clock; -#endif - const auto wake_time = Clock::now() + dur; - while (Clock::now() < wake_time) - ; -} - -inline bool PathEq(fs::path const& LHS, fs::path const& RHS) { - return LHS.native() == RHS.native(); -} - -struct ExceptionChecker { - std::errc expected_err; - fs::path expected_path1; - fs::path expected_path2; - unsigned num_paths; - const char* func_name; - std::string opt_message; - - explicit ExceptionChecker(std::errc first_err, const char* func_name, - std::string opt_msg = {}) - : expected_err{first_err}, num_paths(0), func_name(func_name), - opt_message(opt_msg) {} - explicit ExceptionChecker(fs::path p, std::errc first_err, - const char* func_name, std::string opt_msg = {}) - : expected_err(first_err), expected_path1(p), num_paths(1), - func_name(func_name), opt_message(opt_msg) {} - - explicit ExceptionChecker(fs::path p1, fs::path p2, std::errc first_err, - const char* func_name, std::string opt_msg = {}) - : expected_err(first_err), expected_path1(p1), expected_path2(p2), - num_paths(2), func_name(func_name), opt_message(opt_msg) {} - - void operator()(fs::filesystem_error const& Err) { - TEST_CHECK(ErrorIsImp(Err.code(), {expected_err})); - TEST_CHECK(Err.path1() == expected_path1); - TEST_CHECK(Err.path2() == expected_path2); - LIBCPP_ONLY(check_libcxx_string(Err)); - } - - void check_libcxx_string(fs::filesystem_error const& Err) { - std::string message = std::make_error_code(expected_err).message(); - - std::string additional_msg = ""; - if (!opt_message.empty()) { - additional_msg = opt_message + ": "; - } - auto transform_path = [](const fs::path& p) { - if (p.native().empty()) - return "\"\""; - return p.c_str(); - }; - std::string format = [&]() -> std::string { - switch (num_paths) { - case 0: - return format_string("filesystem error: in %s: %s%s", func_name, - additional_msg, message); - case 1: - return format_string("filesystem error: in %s: %s%s [%s]", func_name, - additional_msg, message, - transform_path(expected_path1)); - case 2: - return format_string("filesystem error: in %s: %s%s [%s] [%s]", - func_name, additional_msg, message, - transform_path(expected_path1), - transform_path(expected_path2)); - default: - TEST_CHECK(false && "unexpected case"); - return ""; - } - }(); - TEST_CHECK(format == Err.what()); - if (format != Err.what()) { - fprintf(stderr, - "filesystem_error::what() does not match expected output:\n"); - fprintf(stderr, " expected: \"%s\"\n", format.c_str()); - fprintf(stderr, " actual: \"%s\"\n\n", Err.what()); - } - } - - ExceptionChecker(ExceptionChecker const&) = delete; - ExceptionChecker& operator=(ExceptionChecker const&) = delete; - -}; - -#endif /* FILESYSTEM_TEST_HELPER_HPP */ Index: libcxx/trunk/test/support/format_string.h =================================================================== --- libcxx/trunk/test/support/format_string.h +++ libcxx/trunk/test/support/format_string.h @@ -0,0 +1,71 @@ +#ifndef TEST_SUPPORT_FORMAT_STRING_H +#define TEST_SUPPORT_FORMAT_STRING_H + +#include +#include +#include +#include +#include + +namespace format_string_detail { +inline std::string format_string_imp(const char* msg, ...) { + // we might need a second shot at this, so pre-emptivly make a copy + struct GuardVAList { + va_list& xtarget; + bool active; + GuardVAList(va_list& val) : xtarget(val), active(true) {} + + void clear() { + if (active) + va_end(xtarget); + active = false; + } + ~GuardVAList() { + if (active) + va_end(xtarget); + } + }; + va_list args; + va_start(args, msg); + GuardVAList args_guard(args); + + va_list args_cp; + va_copy(args_cp, args); + GuardVAList args_copy_guard(args_cp); + + std::array local_buff; + std::size_t size = local_buff.size(); + auto ret = ::vsnprintf(local_buff.data(), size, msg, args_cp); + + args_copy_guard.clear(); + + // handle empty expansion + if (ret == 0) + return std::string{}; + if (static_cast(ret) < size) + return std::string(local_buff.data()); + + // we did not provide a long enough buffer on our first attempt. + // add 1 to size to account for null-byte in size cast to prevent overflow + size = static_cast(ret) + 1; + auto buff_ptr = std::unique_ptr(new char[size]); + ret = ::vsnprintf(buff_ptr.get(), size, msg, args); + return std::string(buff_ptr.get()); +} + +const char* unwrap(std::string& s) { return s.c_str(); } +template +Arg const& unwrap(Arg& a) { + static_assert(!std::is_class::value, "cannot pass class here"); + return a; +} + +} // namespace format_string_detail + +template +std::string format_string(const char* fmt, Args const&... args) { + return format_string_detail::format_string_imp( + fmt, format_string_detail::unwrap(const_cast(args))...); +} + +#endif // TEST_SUPPORT_FORMAT_STRING_HPP Index: libcxx/trunk/test/support/format_string.hpp =================================================================== --- libcxx/trunk/test/support/format_string.hpp +++ libcxx/trunk/test/support/format_string.hpp @@ -1,71 +0,0 @@ -#ifndef TEST_SUPPORT_FORMAT_STRING_HPP -#define TEST_SUPPORT_FORMAT_STRING_HPP - -#include -#include -#include -#include -#include - -namespace format_string_detail { -inline std::string format_string_imp(const char* msg, ...) { - // we might need a second shot at this, so pre-emptivly make a copy - struct GuardVAList { - va_list& xtarget; - bool active; - GuardVAList(va_list& val) : xtarget(val), active(true) {} - - void clear() { - if (active) - va_end(xtarget); - active = false; - } - ~GuardVAList() { - if (active) - va_end(xtarget); - } - }; - va_list args; - va_start(args, msg); - GuardVAList args_guard(args); - - va_list args_cp; - va_copy(args_cp, args); - GuardVAList args_copy_guard(args_cp); - - std::array local_buff; - std::size_t size = local_buff.size(); - auto ret = ::vsnprintf(local_buff.data(), size, msg, args_cp); - - args_copy_guard.clear(); - - // handle empty expansion - if (ret == 0) - return std::string{}; - if (static_cast(ret) < size) - return std::string(local_buff.data()); - - // we did not provide a long enough buffer on our first attempt. - // add 1 to size to account for null-byte in size cast to prevent overflow - size = static_cast(ret) + 1; - auto buff_ptr = std::unique_ptr(new char[size]); - ret = ::vsnprintf(buff_ptr.get(), size, msg, args); - return std::string(buff_ptr.get()); -} - -const char* unwrap(std::string& s) { return s.c_str(); } -template -Arg const& unwrap(Arg& a) { - static_assert(!std::is_class::value, "cannot pass class here"); - return a; -} - -} // namespace format_string_detail - -template -std::string format_string(const char* fmt, Args const&... args) { - return format_string_detail::format_string_imp( - fmt, format_string_detail::unwrap(const_cast(args))...); -} - -#endif // TEST_SUPPORT_FORMAT_STRING_HPP Index: libcxx/trunk/test/support/msvc_stdlib_force_include.h =================================================================== --- libcxx/trunk/test/support/msvc_stdlib_force_include.h +++ libcxx/trunk/test/support/msvc_stdlib_force_include.h @@ -0,0 +1,92 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef SUPPORT_MSVC_STDLIB_FORCE_INCLUDE_H +#define SUPPORT_MSVC_STDLIB_FORCE_INCLUDE_H + +// This header is force-included when running the libc++ tests against the +// MSVC standard library. + +#ifndef _LIBCXX_IN_DEVCRT + // Silence warnings about CRT machinery. + #define _CRT_SECURE_NO_WARNINGS + + // Avoid assertion dialogs. + #define _CRT_SECURE_INVALID_PARAMETER(EXPR) ::abort() +#endif // _LIBCXX_IN_DEVCRT + +#include +#include + +#if defined(_LIBCPP_VERSION) + #error This header may not be used when targeting libc++ +#endif + +#ifndef _LIBCXX_IN_DEVCRT +struct AssertionDialogAvoider { + AssertionDialogAvoider() { + _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE); + _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR); + + _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE); + _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR); + } +}; + +const AssertionDialogAvoider assertion_dialog_avoider{}; +#endif // _LIBCXX_IN_DEVCRT + +// MSVC frontend only configurations +#if !defined(__clang__) + // Simulate feature-test macros. + #define __has_feature(X) _MSVC_HAS_FEATURE_ ## X + #define _MSVC_HAS_FEATURE_cxx_exceptions 1 + #define _MSVC_HAS_FEATURE_cxx_rtti 1 + #define _MSVC_HAS_FEATURE_address_sanitizer 0 + #define _MSVC_HAS_FEATURE_memory_sanitizer 0 + #define _MSVC_HAS_FEATURE_thread_sanitizer 0 + + #define __has_attribute(X) _MSVC_HAS_ATTRIBUTE_ ## X + #define _MSVC_HAS_ATTRIBUTE_vector_size 0 + + // Silence compiler warnings. + #pragma warning(disable: 4180) // qualifier applied to function type has no meaning; ignored + #pragma warning(disable: 4324) // structure was padded due to alignment specifier + #pragma warning(disable: 4521) // multiple copy constructors specified + #pragma warning(disable: 4702) // unreachable code + #pragma warning(disable: 28251) // Inconsistent annotation for 'new': this instance has no annotations. +#endif // !defined(__clang__) + +// MSVC doesn't have __int128_t. +#define _LIBCPP_HAS_NO_INT128 + +// MSVC has quick_exit() and at_quick_exit(). +#define _LIBCPP_HAS_QUICK_EXIT + +#ifndef _LIBCXX_IN_DEVCRT + // atomic_is_lock_free.pass.cpp needs this VS 2015 Update 2 fix. + #define _ENABLE_ATOMIC_ALIGNMENT_FIX + + // Silence warnings about features that are deprecated in C++17 and C++20. + #define _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS + #define _SILENCE_ALL_CXX20_DEPRECATION_WARNINGS +#endif // _LIBCXX_IN_DEVCRT + +#include + +#if _HAS_CXX20 + #define TEST_STD_VER 99 +#elif _HAS_CXX17 + #define TEST_STD_VER 17 +#else // !(_HAS_CXX20 || _HAS_CXX17) + #define TEST_STD_VER 14 +#endif + +#define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST + +#endif // SUPPORT_MSVC_STDLIB_FORCE_INCLUDE_H Index: libcxx/trunk/test/support/msvc_stdlib_force_include.hpp =================================================================== --- libcxx/trunk/test/support/msvc_stdlib_force_include.hpp +++ libcxx/trunk/test/support/msvc_stdlib_force_include.hpp @@ -1,92 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef SUPPORT_MSVC_STDLIB_FORCE_INCLUDE_HPP -#define SUPPORT_MSVC_STDLIB_FORCE_INCLUDE_HPP - -// This header is force-included when running the libc++ tests against the -// MSVC standard library. - -#ifndef _LIBCXX_IN_DEVCRT - // Silence warnings about CRT machinery. - #define _CRT_SECURE_NO_WARNINGS - - // Avoid assertion dialogs. - #define _CRT_SECURE_INVALID_PARAMETER(EXPR) ::abort() -#endif // _LIBCXX_IN_DEVCRT - -#include -#include - -#if defined(_LIBCPP_VERSION) - #error This header may not be used when targeting libc++ -#endif - -#ifndef _LIBCXX_IN_DEVCRT -struct AssertionDialogAvoider { - AssertionDialogAvoider() { - _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE); - _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR); - - _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE); - _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR); - } -}; - -const AssertionDialogAvoider assertion_dialog_avoider{}; -#endif // _LIBCXX_IN_DEVCRT - -// MSVC frontend only configurations -#if !defined(__clang__) - // Simulate feature-test macros. - #define __has_feature(X) _MSVC_HAS_FEATURE_ ## X - #define _MSVC_HAS_FEATURE_cxx_exceptions 1 - #define _MSVC_HAS_FEATURE_cxx_rtti 1 - #define _MSVC_HAS_FEATURE_address_sanitizer 0 - #define _MSVC_HAS_FEATURE_memory_sanitizer 0 - #define _MSVC_HAS_FEATURE_thread_sanitizer 0 - - #define __has_attribute(X) _MSVC_HAS_ATTRIBUTE_ ## X - #define _MSVC_HAS_ATTRIBUTE_vector_size 0 - - // Silence compiler warnings. - #pragma warning(disable: 4180) // qualifier applied to function type has no meaning; ignored - #pragma warning(disable: 4324) // structure was padded due to alignment specifier - #pragma warning(disable: 4521) // multiple copy constructors specified - #pragma warning(disable: 4702) // unreachable code - #pragma warning(disable: 28251) // Inconsistent annotation for 'new': this instance has no annotations. -#endif // !defined(__clang__) - -// MSVC doesn't have __int128_t. -#define _LIBCPP_HAS_NO_INT128 - -// MSVC has quick_exit() and at_quick_exit(). -#define _LIBCPP_HAS_QUICK_EXIT - -#ifndef _LIBCXX_IN_DEVCRT - // atomic_is_lock_free.pass.cpp needs this VS 2015 Update 2 fix. - #define _ENABLE_ATOMIC_ALIGNMENT_FIX - - // Silence warnings about features that are deprecated in C++17 and C++20. - #define _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS - #define _SILENCE_ALL_CXX20_DEPRECATION_WARNINGS -#endif // _LIBCXX_IN_DEVCRT - -#include - -#if _HAS_CXX20 - #define TEST_STD_VER 99 -#elif _HAS_CXX17 - #define TEST_STD_VER 17 -#else // !(_HAS_CXX20 || _HAS_CXX17) - #define TEST_STD_VER 14 -#endif - -#define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST - -#endif // SUPPORT_MSVC_STDLIB_FORCE_INCLUDE_HPP Index: libcxx/trunk/test/support/nasty_containers.h =================================================================== --- libcxx/trunk/test/support/nasty_containers.h +++ libcxx/trunk/test/support/nasty_containers.h @@ -0,0 +1,312 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef NASTY_CONTAINERS_H +#define NASTY_CONTAINERS_H + +#include +#include +#include + +#include "test_macros.h" + +template +class nasty_vector +{ +public: + typedef typename std::vector nested_container; + typedef typename nested_container::value_type value_type; + typedef typename nested_container::reference reference; + typedef typename nested_container::const_reference const_reference; + typedef typename nested_container::iterator iterator; + typedef typename nested_container::const_iterator const_iterator; + + typedef typename nested_container::size_type size_type; + typedef typename nested_container::difference_type difference_type; + typedef typename nested_container::pointer pointer; + typedef typename nested_container::const_pointer const_pointer; + + typedef typename nested_container::reverse_iterator reverse_iterator; + typedef typename nested_container::const_reverse_iterator const_reverse_iterator; + + nasty_vector() : v_() {} + explicit nasty_vector(size_type n) : v_(n) {} + nasty_vector(size_type n, const value_type& value) : v_(n, value) {} + template nasty_vector(InputIterator first, InputIterator last) : v_(first, last) {} +#if TEST_STD_VER >= 11 + nasty_vector(std::initializer_list il) : v_(il) {} +#endif + ~nasty_vector() {} + + template + void assign(InputIterator first, InputIterator last) { v_.assign(first, last); } + void assign(size_type n, const value_type& u) { v_.assign(n, u); } +#if TEST_STD_VER >= 11 + void assign(std::initializer_list il) { v_.assign(il); } +#endif + + iterator begin() TEST_NOEXCEPT { return v_.begin(); } + const_iterator begin() const TEST_NOEXCEPT { return v_.begin(); } + iterator end() TEST_NOEXCEPT { return v_.end(); } + const_iterator end() const TEST_NOEXCEPT { return v_.end(); } + + reverse_iterator rbegin() TEST_NOEXCEPT { return v_.rbegin(); } + const_reverse_iterator rbegin() const TEST_NOEXCEPT { return v_.rbegin(); } + reverse_iterator rend() TEST_NOEXCEPT { return v_.rend(); } + const_reverse_iterator rend() const TEST_NOEXCEPT { return v_.rend(); } + + const_iterator cbegin() const TEST_NOEXCEPT { return v_.cbegin(); } + const_iterator cend() const TEST_NOEXCEPT { return v_.cend(); } + const_reverse_iterator crbegin() const TEST_NOEXCEPT { return v_.crbegin(); } + const_reverse_iterator crend() const TEST_NOEXCEPT { return v_.crend(); } + + size_type size() const TEST_NOEXCEPT { return v_.size(); } + size_type max_size() const TEST_NOEXCEPT { return v_.max_size(); } + size_type capacity() const TEST_NOEXCEPT { return v_.capacity(); } + bool empty() const TEST_NOEXCEPT { return v_.empty(); } + void reserve(size_type n) { v_.reserve(n); }; + void shrink_to_fit() TEST_NOEXCEPT { v_.shrink_to_fit(); } + + reference operator[](size_type n) { return v_[n]; } + const_reference operator[](size_type n) const { return v_[n]; } + reference at(size_type n) { return v_.at(n); } + const_reference at(size_type n) const { return v_.at(n); } + + reference front() { return v_.front(); } + const_reference front() const { return v_.front(); } + reference back() { return v_.back(); } + const_reference back() const { return v_.back(); } + + value_type* data() TEST_NOEXCEPT { return v_.data(); } + const value_type* data() const TEST_NOEXCEPT { return v_.data(); } + + void push_back(const value_type& x) { v_.push_back(x); } +#if TEST_STD_VER >= 11 + void push_back(value_type&& x) { v_.push_back(std::forward(x)); } + template + void emplace_back(Args&&... args) { v_.emplace_back(std::forward(args)...); } +#endif + void pop_back() { v_.pop_back(); } + +#if TEST_STD_VER >= 11 + template iterator emplace(const_iterator pos, Args&&... args) + { return v_.emplace(pos, std::forward(args)...); } +#endif + + iterator insert(const_iterator pos, const value_type& x) { return v_.insert(pos, x); } +#if TEST_STD_VER >= 11 + iterator insert(const_iterator pos, value_type&& x) { return v_.insert(pos, std::forward(x)); } +#endif + iterator insert(const_iterator pos, size_type n, const value_type& x) { return v_.insert(pos, n, x); } + template + iterator insert(const_iterator pos, InputIterator first, InputIterator last) + { return v_.insert(pos, first, last); } + +#if TEST_STD_VER >= 11 + iterator insert(const_iterator pos, std::initializer_list il) { return v_.insert(pos, il); } +#endif + + iterator erase(const_iterator pos) { return v_.erase(pos); } + iterator erase(const_iterator first, const_iterator last) { return v_.erase(first, last); } + + void clear() TEST_NOEXCEPT { v_.clear(); } + + void resize(size_type sz) { v_.resize(sz); } + void resize(size_type sz, const value_type& c) { v_.resize(sz, c); } + + void swap(nasty_vector &nv) +#if TEST_STD_VER > 14 + noexcept(std::is_nothrow_swappable::value) +#elif defined(_LIBCPP_VERSION) + TEST_NOEXCEPT_COND(std::__is_nothrow_swappable::value) +#endif + { v_.swap(nv.v_); } + + nasty_vector *operator &() { assert(false); return nullptr; } // nasty + const nasty_vector *operator &() const { assert(false); return nullptr; } // nasty + + nested_container v_; +}; + +template +bool operator==(const nasty_vector& x, const nasty_vector& y) { return x.v_ == y.v_; } + +template +class nasty_list +{ +public: + + typedef typename std::list nested_container; + typedef typename nested_container::value_type value_type; + typedef typename nested_container::reference reference; + typedef typename nested_container::const_reference const_reference; + typedef typename nested_container::iterator iterator; + typedef typename nested_container::const_iterator const_iterator; + + typedef typename nested_container::size_type size_type; + typedef typename nested_container::difference_type difference_type; + typedef typename nested_container::pointer pointer; + typedef typename nested_container::const_pointer const_pointer; + + typedef typename nested_container::reverse_iterator reverse_iterator; + typedef typename nested_container::const_reverse_iterator const_reverse_iterator; + + nasty_list() : l_() {} + explicit nasty_list(size_type n) : l_(n) {} + nasty_list(size_type n, const value_type& value) : l_(n,value) {} + template + nasty_list(Iter first, Iter last) : l_(first, last) {} +#if TEST_STD_VER >= 11 + nasty_list(std::initializer_list il) : l_(il) {} +#endif + + ~nasty_list() {} + +#if TEST_STD_VER >= 11 + nasty_list& operator=(std::initializer_list il) { l_ = il; return *this; } +#endif + template + void assign(Iter first, Iter last) { l_.assign(first, last); } + void assign(size_type n, const value_type& t) { l_.assign(n, t); } +#if TEST_STD_VER >= 11 + void assign(std::initializer_list il) { l_.assign(il); } +#endif + + + iterator begin() TEST_NOEXCEPT { return l_.begin(); } + const_iterator begin() const TEST_NOEXCEPT { return l_.begin(); } + iterator end() TEST_NOEXCEPT { return l_.end(); } + const_iterator end() const TEST_NOEXCEPT { return l_.end(); } + + reverse_iterator rbegin() TEST_NOEXCEPT { return l_.rbegin(); } + const_reverse_iterator rbegin() const TEST_NOEXCEPT { return l_.rbegin(); } + reverse_iterator rend() TEST_NOEXCEPT { return l_.rend(); } + const_reverse_iterator rend() const TEST_NOEXCEPT { return l_.rend(); } + + const_iterator cbegin() const TEST_NOEXCEPT { return l_.cbegin(); } + const_iterator cend() const TEST_NOEXCEPT { return l_.cend(); } + const_reverse_iterator crbegin() const TEST_NOEXCEPT { return l_.crbegin(); } + const_reverse_iterator crend() const TEST_NOEXCEPT { return l_.crend(); } + + reference front() { return l_.front(); } + const_reference front() const { return l_.front(); } + reference back() { return l_.back(); } + const_reference back() const { return l_.back(); } + + size_type size() const TEST_NOEXCEPT { return l_.size(); } + size_type max_size() const TEST_NOEXCEPT { return l_.max_size(); } + bool empty() const TEST_NOEXCEPT { return l_.empty(); } + + void push_front(const value_type& x) { l_.push_front(x); } + void push_back(const value_type& x) { l_.push_back(x); } +#if TEST_STD_VER >= 11 + void push_back(value_type&& x) { l_.push_back(std::forward(x)); } + void push_front(value_type&& x) { l_.push_back(std::forward(x)); } + template + void emplace_back(Args&&... args) { l_.emplace_back(std::forward(args)...); } + template + void emplace_front(Args&&... args) { l_.emplace_front(std::forward(args)...); } +#endif + void pop_front() { l_.pop_front(); } + void pop_back() { l_.pop_back(); } + +#if TEST_STD_VER >= 11 + template iterator emplace(const_iterator pos, Args&&... args) + { return l_.emplace(pos, std::forward(args)...); } +#endif + + iterator insert(const_iterator pos, const value_type& x) { return l_.insert(pos, x); } +#if TEST_STD_VER >= 11 + iterator insert(const_iterator pos, value_type&& x) { return l_.insert(pos, std::forward(x)); } +#endif + iterator insert(const_iterator pos, size_type n, const value_type& x) { return l_.insert(pos, n, x); } + template + iterator insert(const_iterator pos, InputIterator first, InputIterator last) + { return l_.insert(pos, first, last); } + +#if TEST_STD_VER >= 11 + iterator insert(const_iterator pos, std::initializer_list il) { return l_.insert(pos, il); } +#endif + + iterator erase(const_iterator pos) { return l_.erase(pos); } + iterator erase(const_iterator pos, const_iterator last) { return l_.erase(pos, last); } + + void resize(size_type) { l_.resize(); } + void resize(size_type, const value_type& c) { l_.resize(c); } + + void swap(nasty_list &nl) +#if TEST_STD_VER > 14 + noexcept(std::is_nothrow_swappable::value) +#elif defined(_LIBCPP_VERSION) + TEST_NOEXCEPT_COND(std::__is_nothrow_swappable::value) +#endif + { l_.swap(nl.l_); } + + void clear() TEST_NOEXCEPT { l_.clear(); } + +// void splice(const_iterator position, list& x); +// void splice(const_iterator position, list&& x); +// void splice(const_iterator position, list& x, const_iterator i); +// void splice(const_iterator position, list&& x, const_iterator i); +// void splice(const_iterator position, list& x, const_iterator first, +// const_iterator last); +// void splice(const_iterator position, list&& x, const_iterator first, +// const_iterator last); +// +// void remove(const value_type& value); +// template void remove_if(Pred pred); +// void unique(); +// template +// void unique(BinaryPredicate binary_pred); +// void merge(list& x); +// void merge(list&& x); +// template +// void merge(list& x, Compare comp); +// template +// void merge(list&& x, Compare comp); +// void sort(); +// template +// void sort(Compare comp); +// void reverse() noexcept; + + nasty_list *operator &() { assert(false); return nullptr; } // nasty + const nasty_list *operator &() const { assert(false); return nullptr; } // nasty + + nested_container l_; +}; + +template +bool operator==(const nasty_list& x, const nasty_list& y) { return x.l_ == y.l_; } + +// Not really a mutex, but can play one in tests +class nasty_mutex +{ +public: + nasty_mutex() TEST_NOEXCEPT {} + ~nasty_mutex() {} + + nasty_mutex *operator& () { assert(false); return nullptr; } + template + void operator, (const T &) { assert(false); } + +private: + nasty_mutex(const nasty_mutex&) { assert(false); } + nasty_mutex& operator=(const nasty_mutex&) { assert(false); return *this; } + +public: + void lock() {} + bool try_lock() TEST_NOEXCEPT { return true; } + void unlock() TEST_NOEXCEPT {} + + // Shared ownership + void lock_shared() {} + bool try_lock_shared() { return true; } + void unlock_shared() {} +}; + +#endif Index: libcxx/trunk/test/support/nasty_containers.hpp =================================================================== --- libcxx/trunk/test/support/nasty_containers.hpp +++ libcxx/trunk/test/support/nasty_containers.hpp @@ -1,312 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef NASTY_CONTAINERS_H -#define NASTY_CONTAINERS_H - -#include -#include -#include - -#include "test_macros.h" - -template -class nasty_vector -{ -public: - typedef typename std::vector nested_container; - typedef typename nested_container::value_type value_type; - typedef typename nested_container::reference reference; - typedef typename nested_container::const_reference const_reference; - typedef typename nested_container::iterator iterator; - typedef typename nested_container::const_iterator const_iterator; - - typedef typename nested_container::size_type size_type; - typedef typename nested_container::difference_type difference_type; - typedef typename nested_container::pointer pointer; - typedef typename nested_container::const_pointer const_pointer; - - typedef typename nested_container::reverse_iterator reverse_iterator; - typedef typename nested_container::const_reverse_iterator const_reverse_iterator; - - nasty_vector() : v_() {} - explicit nasty_vector(size_type n) : v_(n) {} - nasty_vector(size_type n, const value_type& value) : v_(n, value) {} - template nasty_vector(InputIterator first, InputIterator last) : v_(first, last) {} -#if TEST_STD_VER >= 11 - nasty_vector(std::initializer_list il) : v_(il) {} -#endif - ~nasty_vector() {} - - template - void assign(InputIterator first, InputIterator last) { v_.assign(first, last); } - void assign(size_type n, const value_type& u) { v_.assign(n, u); } -#if TEST_STD_VER >= 11 - void assign(std::initializer_list il) { v_.assign(il); } -#endif - - iterator begin() TEST_NOEXCEPT { return v_.begin(); } - const_iterator begin() const TEST_NOEXCEPT { return v_.begin(); } - iterator end() TEST_NOEXCEPT { return v_.end(); } - const_iterator end() const TEST_NOEXCEPT { return v_.end(); } - - reverse_iterator rbegin() TEST_NOEXCEPT { return v_.rbegin(); } - const_reverse_iterator rbegin() const TEST_NOEXCEPT { return v_.rbegin(); } - reverse_iterator rend() TEST_NOEXCEPT { return v_.rend(); } - const_reverse_iterator rend() const TEST_NOEXCEPT { return v_.rend(); } - - const_iterator cbegin() const TEST_NOEXCEPT { return v_.cbegin(); } - const_iterator cend() const TEST_NOEXCEPT { return v_.cend(); } - const_reverse_iterator crbegin() const TEST_NOEXCEPT { return v_.crbegin(); } - const_reverse_iterator crend() const TEST_NOEXCEPT { return v_.crend(); } - - size_type size() const TEST_NOEXCEPT { return v_.size(); } - size_type max_size() const TEST_NOEXCEPT { return v_.max_size(); } - size_type capacity() const TEST_NOEXCEPT { return v_.capacity(); } - bool empty() const TEST_NOEXCEPT { return v_.empty(); } - void reserve(size_type n) { v_.reserve(n); }; - void shrink_to_fit() TEST_NOEXCEPT { v_.shrink_to_fit(); } - - reference operator[](size_type n) { return v_[n]; } - const_reference operator[](size_type n) const { return v_[n]; } - reference at(size_type n) { return v_.at(n); } - const_reference at(size_type n) const { return v_.at(n); } - - reference front() { return v_.front(); } - const_reference front() const { return v_.front(); } - reference back() { return v_.back(); } - const_reference back() const { return v_.back(); } - - value_type* data() TEST_NOEXCEPT { return v_.data(); } - const value_type* data() const TEST_NOEXCEPT { return v_.data(); } - - void push_back(const value_type& x) { v_.push_back(x); } -#if TEST_STD_VER >= 11 - void push_back(value_type&& x) { v_.push_back(std::forward(x)); } - template - void emplace_back(Args&&... args) { v_.emplace_back(std::forward(args)...); } -#endif - void pop_back() { v_.pop_back(); } - -#if TEST_STD_VER >= 11 - template iterator emplace(const_iterator pos, Args&&... args) - { return v_.emplace(pos, std::forward(args)...); } -#endif - - iterator insert(const_iterator pos, const value_type& x) { return v_.insert(pos, x); } -#if TEST_STD_VER >= 11 - iterator insert(const_iterator pos, value_type&& x) { return v_.insert(pos, std::forward(x)); } -#endif - iterator insert(const_iterator pos, size_type n, const value_type& x) { return v_.insert(pos, n, x); } - template - iterator insert(const_iterator pos, InputIterator first, InputIterator last) - { return v_.insert(pos, first, last); } - -#if TEST_STD_VER >= 11 - iterator insert(const_iterator pos, std::initializer_list il) { return v_.insert(pos, il); } -#endif - - iterator erase(const_iterator pos) { return v_.erase(pos); } - iterator erase(const_iterator first, const_iterator last) { return v_.erase(first, last); } - - void clear() TEST_NOEXCEPT { v_.clear(); } - - void resize(size_type sz) { v_.resize(sz); } - void resize(size_type sz, const value_type& c) { v_.resize(sz, c); } - - void swap(nasty_vector &nv) -#if TEST_STD_VER > 14 - noexcept(std::is_nothrow_swappable::value) -#elif defined(_LIBCPP_VERSION) - TEST_NOEXCEPT_COND(std::__is_nothrow_swappable::value) -#endif - { v_.swap(nv.v_); } - - nasty_vector *operator &() { assert(false); return nullptr; } // nasty - const nasty_vector *operator &() const { assert(false); return nullptr; } // nasty - - nested_container v_; -}; - -template -bool operator==(const nasty_vector& x, const nasty_vector& y) { return x.v_ == y.v_; } - -template -class nasty_list -{ -public: - - typedef typename std::list nested_container; - typedef typename nested_container::value_type value_type; - typedef typename nested_container::reference reference; - typedef typename nested_container::const_reference const_reference; - typedef typename nested_container::iterator iterator; - typedef typename nested_container::const_iterator const_iterator; - - typedef typename nested_container::size_type size_type; - typedef typename nested_container::difference_type difference_type; - typedef typename nested_container::pointer pointer; - typedef typename nested_container::const_pointer const_pointer; - - typedef typename nested_container::reverse_iterator reverse_iterator; - typedef typename nested_container::const_reverse_iterator const_reverse_iterator; - - nasty_list() : l_() {} - explicit nasty_list(size_type n) : l_(n) {} - nasty_list(size_type n, const value_type& value) : l_(n,value) {} - template - nasty_list(Iter first, Iter last) : l_(first, last) {} -#if TEST_STD_VER >= 11 - nasty_list(std::initializer_list il) : l_(il) {} -#endif - - ~nasty_list() {} - -#if TEST_STD_VER >= 11 - nasty_list& operator=(std::initializer_list il) { l_ = il; return *this; } -#endif - template - void assign(Iter first, Iter last) { l_.assign(first, last); } - void assign(size_type n, const value_type& t) { l_.assign(n, t); } -#if TEST_STD_VER >= 11 - void assign(std::initializer_list il) { l_.assign(il); } -#endif - - - iterator begin() TEST_NOEXCEPT { return l_.begin(); } - const_iterator begin() const TEST_NOEXCEPT { return l_.begin(); } - iterator end() TEST_NOEXCEPT { return l_.end(); } - const_iterator end() const TEST_NOEXCEPT { return l_.end(); } - - reverse_iterator rbegin() TEST_NOEXCEPT { return l_.rbegin(); } - const_reverse_iterator rbegin() const TEST_NOEXCEPT { return l_.rbegin(); } - reverse_iterator rend() TEST_NOEXCEPT { return l_.rend(); } - const_reverse_iterator rend() const TEST_NOEXCEPT { return l_.rend(); } - - const_iterator cbegin() const TEST_NOEXCEPT { return l_.cbegin(); } - const_iterator cend() const TEST_NOEXCEPT { return l_.cend(); } - const_reverse_iterator crbegin() const TEST_NOEXCEPT { return l_.crbegin(); } - const_reverse_iterator crend() const TEST_NOEXCEPT { return l_.crend(); } - - reference front() { return l_.front(); } - const_reference front() const { return l_.front(); } - reference back() { return l_.back(); } - const_reference back() const { return l_.back(); } - - size_type size() const TEST_NOEXCEPT { return l_.size(); } - size_type max_size() const TEST_NOEXCEPT { return l_.max_size(); } - bool empty() const TEST_NOEXCEPT { return l_.empty(); } - - void push_front(const value_type& x) { l_.push_front(x); } - void push_back(const value_type& x) { l_.push_back(x); } -#if TEST_STD_VER >= 11 - void push_back(value_type&& x) { l_.push_back(std::forward(x)); } - void push_front(value_type&& x) { l_.push_back(std::forward(x)); } - template - void emplace_back(Args&&... args) { l_.emplace_back(std::forward(args)...); } - template - void emplace_front(Args&&... args) { l_.emplace_front(std::forward(args)...); } -#endif - void pop_front() { l_.pop_front(); } - void pop_back() { l_.pop_back(); } - -#if TEST_STD_VER >= 11 - template iterator emplace(const_iterator pos, Args&&... args) - { return l_.emplace(pos, std::forward(args)...); } -#endif - - iterator insert(const_iterator pos, const value_type& x) { return l_.insert(pos, x); } -#if TEST_STD_VER >= 11 - iterator insert(const_iterator pos, value_type&& x) { return l_.insert(pos, std::forward(x)); } -#endif - iterator insert(const_iterator pos, size_type n, const value_type& x) { return l_.insert(pos, n, x); } - template - iterator insert(const_iterator pos, InputIterator first, InputIterator last) - { return l_.insert(pos, first, last); } - -#if TEST_STD_VER >= 11 - iterator insert(const_iterator pos, std::initializer_list il) { return l_.insert(pos, il); } -#endif - - iterator erase(const_iterator pos) { return l_.erase(pos); } - iterator erase(const_iterator pos, const_iterator last) { return l_.erase(pos, last); } - - void resize(size_type) { l_.resize(); } - void resize(size_type, const value_type& c) { l_.resize(c); } - - void swap(nasty_list &nl) -#if TEST_STD_VER > 14 - noexcept(std::is_nothrow_swappable::value) -#elif defined(_LIBCPP_VERSION) - TEST_NOEXCEPT_COND(std::__is_nothrow_swappable::value) -#endif - { l_.swap(nl.l_); } - - void clear() TEST_NOEXCEPT { l_.clear(); } - -// void splice(const_iterator position, list& x); -// void splice(const_iterator position, list&& x); -// void splice(const_iterator position, list& x, const_iterator i); -// void splice(const_iterator position, list&& x, const_iterator i); -// void splice(const_iterator position, list& x, const_iterator first, -// const_iterator last); -// void splice(const_iterator position, list&& x, const_iterator first, -// const_iterator last); -// -// void remove(const value_type& value); -// template void remove_if(Pred pred); -// void unique(); -// template -// void unique(BinaryPredicate binary_pred); -// void merge(list& x); -// void merge(list&& x); -// template -// void merge(list& x, Compare comp); -// template -// void merge(list&& x, Compare comp); -// void sort(); -// template -// void sort(Compare comp); -// void reverse() noexcept; - - nasty_list *operator &() { assert(false); return nullptr; } // nasty - const nasty_list *operator &() const { assert(false); return nullptr; } // nasty - - nested_container l_; -}; - -template -bool operator==(const nasty_list& x, const nasty_list& y) { return x.l_ == y.l_; } - -// Not really a mutex, but can play one in tests -class nasty_mutex -{ -public: - nasty_mutex() TEST_NOEXCEPT {} - ~nasty_mutex() {} - - nasty_mutex *operator& () { assert(false); return nullptr; } - template - void operator, (const T &) { assert(false); } - -private: - nasty_mutex(const nasty_mutex&) { assert(false); } - nasty_mutex& operator=(const nasty_mutex&) { assert(false); return *this; } - -public: - void lock() {} - bool try_lock() TEST_NOEXCEPT { return true; } - void unlock() TEST_NOEXCEPT {} - - // Shared ownership - void lock_shared() {} - bool try_lock_shared() { return true; } - void unlock_shared() {} -}; - -#endif Index: libcxx/trunk/test/support/nasty_macros.h =================================================================== --- libcxx/trunk/test/support/nasty_macros.h +++ libcxx/trunk/test/support/nasty_macros.h @@ -0,0 +1,68 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef SUPPORT_NASTY_MACROS_H +#define SUPPORT_NASTY_MACROS_H + +#define NASTY_MACRO This should not be expanded!!! +#define _A NASTY_MACRO +#define _B NASTY_MACRO +#define _C NASTY_MACRO +#define _D NASTY_MACRO +#define _E NASTY_MACRO +#define _F NASTY_MACRO +#define _G NASTY_MACRO +#define _H NASTY_MACRO +#define _I NASTY_MACRO +#define _J NASTY_MACRO +#define _K NASTY_MACRO +#define _L NASTY_MACRO +// Because FreeBSD uses _M in its , and it is hard to avoid +// including that header, only define _M for other operating systems. +#ifndef __FreeBSD__ +#define _M NASTY_MACRO +#endif +#define _N NASTY_MACRO +#define _O NASTY_MACRO +#define _P NASTY_MACRO +#define _Q NASTY_MACRO +#define _R NASTY_MACRO +#define _S NASTY_MACRO +#define _T NASTY_MACRO +#define _U NASTY_MACRO +#define _V NASTY_MACRO +#define _W NASTY_MACRO +#define _X NASTY_MACRO +#define _Y NASTY_MACRO +#define _Z NASTY_MACRO + +// tchar.h defines these macros on Windows. +#define _UI NASTY_MACRO +#define _PUC NASTY_MACRO +#define _CPUC NASTY_MACRO +#define _PC NASTY_MACRO +#define _CRPC NASTY_MACRO +#define _CPC NASTY_MACRO + +// yvals.h on MINGW defines this macro +#define _C2 NASTY_MACRO + +// Test that libc++ doesn't use names reserved by WIN32 API Macros. +// NOTE: Obviously we can only define these on non-windows platforms. +#ifndef _WIN32 +#define __allocator NASTY_MACRO +#define __deallocate NASTY_MACRO +#define __out NASTY_MACRO +#endif + +#define __output NASTY_MACRO +#define __input NASTY_MACRO + +#define __acquire NASTY_MACRO +#define __release NASTY_MACRO + +#endif // SUPPORT_NASTY_MACROS_H Index: libcxx/trunk/test/support/nasty_macros.hpp =================================================================== --- libcxx/trunk/test/support/nasty_macros.hpp +++ libcxx/trunk/test/support/nasty_macros.hpp @@ -1,68 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#ifndef SUPPORT_NASTY_MACROS_HPP -#define SUPPORT_NASTY_MACROS_HPP - -#define NASTY_MACRO This should not be expanded!!! -#define _A NASTY_MACRO -#define _B NASTY_MACRO -#define _C NASTY_MACRO -#define _D NASTY_MACRO -#define _E NASTY_MACRO -#define _F NASTY_MACRO -#define _G NASTY_MACRO -#define _H NASTY_MACRO -#define _I NASTY_MACRO -#define _J NASTY_MACRO -#define _K NASTY_MACRO -#define _L NASTY_MACRO -// Because FreeBSD uses _M in its , and it is hard to avoid -// including that header, only define _M for other operating systems. -#ifndef __FreeBSD__ -#define _M NASTY_MACRO -#endif -#define _N NASTY_MACRO -#define _O NASTY_MACRO -#define _P NASTY_MACRO -#define _Q NASTY_MACRO -#define _R NASTY_MACRO -#define _S NASTY_MACRO -#define _T NASTY_MACRO -#define _U NASTY_MACRO -#define _V NASTY_MACRO -#define _W NASTY_MACRO -#define _X NASTY_MACRO -#define _Y NASTY_MACRO -#define _Z NASTY_MACRO - -// tchar.h defines these macros on Windows. -#define _UI NASTY_MACRO -#define _PUC NASTY_MACRO -#define _CPUC NASTY_MACRO -#define _PC NASTY_MACRO -#define _CRPC NASTY_MACRO -#define _CPC NASTY_MACRO - -// yvals.h on MINGW defines this macro -#define _C2 NASTY_MACRO - -// Test that libc++ doesn't use names reserved by WIN32 API Macros. -// NOTE: Obviously we can only define these on non-windows platforms. -#ifndef _WIN32 -#define __allocator NASTY_MACRO -#define __deallocate NASTY_MACRO -#define __out NASTY_MACRO -#endif - -#define __output NASTY_MACRO -#define __input NASTY_MACRO - -#define __acquire NASTY_MACRO -#define __release NASTY_MACRO - -#endif // SUPPORT_NASTY_MACROS_HPP Index: libcxx/trunk/test/support/poisoned_hash_helper.h =================================================================== --- libcxx/trunk/test/support/poisoned_hash_helper.h +++ libcxx/trunk/test/support/poisoned_hash_helper.h @@ -0,0 +1,242 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef SUPPORT_POISONED_HASH_HELPER_H +#define SUPPORT_POISONED_HASH_HELPER_H + +#include +#include + +#include "test_macros.h" +#include "test_workarounds.h" + +#if TEST_STD_VER < 11 +#error this header may only be used in C++11 or newer +#endif + +template struct TypeList; + +// Test that the specified Hash meets the requirements of an enabled hash +template +void test_hash_enabled(InputKey const& key = InputKey{}); + +template +void test_hash_enabled_for_type(InputKey const& key = InputKey{}) { + return test_hash_enabled, T, InputKey>(key); +} + +// Test that the specified Hash meets the requirements of a disabled hash. +template +void test_hash_disabled(); + +template +void test_hash_disabled_for_type() { + return test_hash_disabled, T>(); +} + +namespace PoisonedHashDetail { + enum Enum {}; + enum EnumClass : bool {}; + struct Class {}; +} + +// Each header that declares the template hash provides enabled +// specializations of hash for nullptr t and all cv-unqualified +// arithmetic, enumeration, and pointer types. +using LibraryHashTypes = TypeList< +#if TEST_STD_VER > 14 + decltype(nullptr), +#endif + bool, + char, + signed char, + unsigned char, + wchar_t, +#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS + char16_t, + char32_t, +#endif + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + unsigned long long, +#ifndef _LIBCPP_HAS_NO_INT128 + __int128_t, + __uint128_t, +#endif + float, + double, + long double, +#if TEST_STD_VER >= 14 + // Enum types + PoisonedHashDetail::Enum, + PoisonedHashDetail::EnumClass, +#endif + // pointer types + void*, + void const*, + PoisonedHashDetail::Class* + >; + + +// Test that each of the library hash specializations for arithmetic types, +// enum types, and pointer types are available and enabled. +template +void test_library_hash_specializations_available(Types = Types{}); + + +namespace PoisonedHashDetail { + +template +constexpr bool instantiate(int) { return true; } +template constexpr bool instantiate(long) { return true; } +template constexpr bool instantiate() { return instantiate(0); } + +template +struct ConvertibleToSimple { + operator To() const { + return To{}; + } +}; + +template +struct ConvertibleTo { + To to{}; + operator To&() & { return to; } + operator To const&() const & { return to; } + operator To&&() && { return std::move(to); } + operator To const&&() const && { return std::move(to); } +}; + +template ::type> +constexpr bool can_hash(int) { + return std::is_same::value; +} +template constexpr bool can_hash(long) { return false; } +template constexpr bool can_hash() { return can_hash(0); } + +} // namespace PoisonedHashDetail + +template +void test_hash_enabled(InputKey const& key) { + using namespace PoisonedHashDetail; + + static_assert(std::is_destructible::value, ""); + // Enabled hash requirements + static_assert(std::is_default_constructible::value, ""); + static_assert(std::is_copy_constructible::value, ""); + static_assert(std::is_move_constructible::value, ""); + static_assert(std::is_copy_assignable::value, ""); + static_assert(std::is_move_assignable::value, ""); + +#if TEST_STD_VER > 14 + static_assert(std::is_swappable::value, ""); +#elif defined(_LIBCPP_VERSION) + static_assert(std::__is_swappable::value, ""); +#endif + + // Hashable requirements + static_assert(can_hash(), ""); + static_assert(can_hash(), ""); + static_assert(can_hash(), ""); + static_assert(can_hash(), ""); + static_assert(can_hash(), ""); + static_assert(can_hash(), ""); + + static_assert(can_hash&)>(), ""); + static_assert(can_hash const&)>(), ""); + static_assert(can_hash&&)>(), ""); + + static_assert(can_hash&)>(), ""); + static_assert(can_hash const&)>(), ""); + static_assert(can_hash &&)>(), ""); + static_assert(can_hash const&&)>(), ""); + + const Hash h{}; + assert(h(key) == h(key)); + +} + +template +void test_hash_disabled() { + using namespace PoisonedHashDetail; + + // Disabled hash requirements + static_assert(!std::is_default_constructible::value, ""); + static_assert(!std::is_copy_constructible::value, ""); + static_assert(!std::is_move_constructible::value, ""); + static_assert(!std::is_copy_assignable::value, ""); + static_assert(!std::is_move_assignable::value, ""); + + static_assert(!std::is_function< + typename std::remove_pointer< + typename std::remove_reference::type + >::type + >::value, ""); + + // Hashable requirements + static_assert(!can_hash(), ""); + static_assert(!can_hash(), ""); + static_assert(!can_hash(), ""); + static_assert(!can_hash(), ""); + static_assert(!can_hash(), ""); + static_assert(!can_hash(), ""); + + static_assert(!can_hash&)>(), ""); + static_assert(!can_hash const&)>(), ""); + static_assert(!can_hash&&)>(), ""); + + static_assert(!can_hash&)>(), ""); + static_assert(!can_hash const&)>(), ""); + static_assert(!can_hash &&)>(), ""); + static_assert(!can_hash const&&)>(), ""); +} + + +template +struct TypeList { + template