diff --git a/libcxx/test/std/containers/associative/multimap/scary.pass.cpp b/libcxx/test/libcxx/containers/associative/map/scary.compile.pass.cpp similarity index 68% rename from libcxx/test/std/containers/associative/multimap/scary.pass.cpp rename to libcxx/test/libcxx/containers/associative/map/scary.compile.pass.cpp index 2390d8fed3350..89e753f854926 100644 --- a/libcxx/test/std/containers/associative/multimap/scary.pass.cpp +++ b/libcxx/test/libcxx/containers/associative/map/scary.compile.pass.cpp @@ -8,20 +8,19 @@ // -// class map class multimap +// class map +// class multimap -// Extension: SCARY/N2913 iterator compatibility between map and multimap +// Extension: SCARY/N2913 iterator compatibility between map and multimap #include #include "test_macros.h" -int main(int, char**) { +void test() { typedef std::map M1; typedef std::multimap M2; - M2::iterator i; - M1::iterator j = i; - ((void)j); - return 0; + ASSERT_SAME_TYPE(M1::iterator, M2::iterator); + ASSERT_SAME_TYPE(M1::const_iterator, M2::const_iterator); } diff --git a/libcxx/test/std/containers/associative/multiset/scary.pass.cpp b/libcxx/test/libcxx/containers/associative/set/scary.compile.pass.cpp similarity index 68% rename from libcxx/test/std/containers/associative/multiset/scary.pass.cpp rename to libcxx/test/libcxx/containers/associative/set/scary.compile.pass.cpp index 4d30c27733647..87ed05d84cdd7 100644 --- a/libcxx/test/std/containers/associative/multiset/scary.pass.cpp +++ b/libcxx/test/libcxx/containers/associative/set/scary.compile.pass.cpp @@ -8,20 +8,19 @@ // -// class set class multiset +// class set +// class multiset -// Extension: SCARY/N2913 iterator compatibility between set and multiset +// Extension: SCARY/N2913 iterator compatibility between set and multiset #include #include "test_macros.h" -int main(int, char**) { +void test() { typedef std::set M1; typedef std::multiset M2; - M2::iterator i; - M1::iterator j = i; - ((void)j); - return 0; + ASSERT_SAME_TYPE(M1::iterator, M2::iterator); + ASSERT_SAME_TYPE(M1::const_iterator, M2::const_iterator); } diff --git a/libcxx/test/std/containers/unord/unord.multimap/scary.pass.cpp b/libcxx/test/libcxx/containers/associative/unord.map/scary.compile.pass.cpp similarity index 57% rename from libcxx/test/std/containers/unord/unord.multimap/scary.pass.cpp rename to libcxx/test/libcxx/containers/associative/unord.map/scary.compile.pass.cpp index 59ade49434ca9..db2ef33b6ebf8 100644 --- a/libcxx/test/std/containers/unord/unord.multimap/scary.pass.cpp +++ b/libcxx/test/libcxx/containers/associative/unord.map/scary.compile.pass.cpp @@ -8,20 +8,21 @@ // -// class unordered_map class unordered_multimap +// class unordered_map +// class unordered_multimap -// Extension: SCARY/N2913 iterator compatibility between unordered_map and unordered_multimap +// Extension: SCARY/N2913 iterator compatibility between unordered_map and unordered_multimap #include #include "test_macros.h" -int main(int, char**) { +void test() { typedef std::unordered_map M1; typedef std::unordered_multimap M2; - M2::iterator i; - M1::iterator j = i; - ((void)j); - return 0; + ASSERT_SAME_TYPE(M1::iterator, M2::iterator); + ASSERT_SAME_TYPE(M1::const_iterator, M2::const_iterator); + ASSERT_SAME_TYPE(M1::local_iterator, M2::local_iterator); + ASSERT_SAME_TYPE(M1::const_local_iterator, M2::const_local_iterator); } diff --git a/libcxx/test/std/containers/unord/unord.multiset/scary.pass.cpp b/libcxx/test/libcxx/containers/associative/unord.set/scary.compile.pass.cpp similarity index 56% rename from libcxx/test/std/containers/unord/unord.multiset/scary.pass.cpp rename to libcxx/test/libcxx/containers/associative/unord.set/scary.compile.pass.cpp index 89f575bc2d790..cd33e1a91ec16 100644 --- a/libcxx/test/std/containers/unord/unord.multiset/scary.pass.cpp +++ b/libcxx/test/libcxx/containers/associative/unord.set/scary.compile.pass.cpp @@ -8,20 +8,21 @@ // -// class unordered_set class unordered_multiset +// class unordered_set +// class unordered_multiset -// Extension: SCARY/N2913 iterator compatibility between unordered_set and unordered_multiset +// Extension: SCARY/N2913 iterator compatibility between unordered_set and unordered_multiset #include #include "test_macros.h" -int main(int, char**) { +void test() { typedef std::unordered_set M1; typedef std::unordered_multiset M2; - M2::iterator i; - M1::iterator j = i; - ((void)j); - return 0; + ASSERT_SAME_TYPE(M1::iterator, M2::iterator); + ASSERT_SAME_TYPE(M1::const_iterator, M2::const_iterator); + ASSERT_SAME_TYPE(M1::local_iterator, M2::local_iterator); + ASSERT_SAME_TYPE(M1::const_local_iterator, M2::const_local_iterator); } diff --git a/libcxx/test/libcxx/containers/container.adaptors/flat.map/scary.compile.pass.cpp b/libcxx/test/libcxx/containers/container.adaptors/flat.map/scary.compile.pass.cpp new file mode 100644 index 0000000000000..3fff89cd90acf --- /dev/null +++ b/libcxx/test/libcxx/containers/container.adaptors/flat.map/scary.compile.pass.cpp @@ -0,0 +1,33 @@ +//===----------------------------------------------------------------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20 + +// + +// class flat_map +// class flat_multimap + +// Extension: SCARY/N2913 iterator compatibility between flat_map and flat_multimap +// Test for the absence of this feature + +#include +#include + +#include "test_macros.h" + +void test() { + typedef std::flat_map M1; + typedef std::flat_multimap M2; + + static_assert(!std::is_convertible_v); + static_assert(!std::is_convertible_v); + + static_assert(!std::is_convertible_v); + static_assert(!std::is_convertible_v); +}