diff --git a/libcxx/test/extensions/gnu/hash/specializations.pass.cpp b/libcxx/test/extensions/gnu/hash/specializations.pass.cpp new file mode 100644 index 0000000000000..6661ed0da7dad --- /dev/null +++ b/libcxx/test/extensions/gnu/hash/specializations.pass.cpp @@ -0,0 +1,31 @@ +//===----------------------------------------------------------------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +// Prevent from generating deprecated warnings for this test. +// ADDITIONAL_COMPILE_FLAGS: -Wno-deprecated + +#include +#include +#include + +int main(int, char**) { + char str[] = "test"; + assert(__gnu_cxx::hash()("test") == std::hash()("test")); + assert(__gnu_cxx::hash()(str) == std::hash()("test")); + assert(__gnu_cxx::hash()(42) == 42); + assert(__gnu_cxx::hash()(42) == 42); + assert(__gnu_cxx::hash()(42) == 42); + assert(__gnu_cxx::hash()(42) == 42); + assert(__gnu_cxx::hash()(42) == 42); + assert(__gnu_cxx::hash()(42) == 42); + assert(__gnu_cxx::hash()(42) == 42); + assert(__gnu_cxx::hash()(42) == 42); + assert(__gnu_cxx::hash()(42) == 42); + + return 0; +} diff --git a/libcxx/test/libcxx/extensions/hash/specializations.compile.fail.cpp b/libcxx/test/extensions/gnu/hash/specializations.verify.cpp similarity index 70% rename from libcxx/test/libcxx/extensions/hash/specializations.compile.fail.cpp rename to libcxx/test/extensions/gnu/hash/specializations.verify.cpp index f81ec5dacb91e..5a74a52dd3956 100644 --- a/libcxx/test/libcxx/extensions/hash/specializations.compile.fail.cpp +++ b/libcxx/test/extensions/gnu/hash/specializations.verify.cpp @@ -6,13 +6,14 @@ // //===----------------------------------------------------------------------===// +// ADDITIONAL_COMPILE_FLAGS: -Wno-deprecated + #include #include #include -int main(int, char**) -{ - assert(__gnu_cxx::hash()(std::string()) == 0); // error +int main(int, char**) { + assert(__gnu_cxx::hash()(std::string()) == 0); // expected-error {{does not provide a call operator}} return 0; } diff --git a/libcxx/test/libcxx/extensions/hash_map/const_iterator.compile.fail.cpp b/libcxx/test/extensions/gnu/hash_map/const_iterator.verify.cpp similarity index 55% rename from libcxx/test/libcxx/extensions/hash_map/const_iterator.compile.fail.cpp rename to libcxx/test/extensions/gnu/hash_map/const_iterator.verify.cpp index db09e40801a1f..eacdacd035b37 100644 --- a/libcxx/test/libcxx/extensions/hash_map/const_iterator.compile.fail.cpp +++ b/libcxx/test/extensions/gnu/hash_map/const_iterator.verify.cpp @@ -6,14 +6,15 @@ // //===----------------------------------------------------------------------===// +// ADDITIONAL_COMPILE_FLAGS: -Wno-deprecated + #include -int main(int, char**) -{ - __gnu_cxx::hash_map m; - m[1] = 1; - const __gnu_cxx::hash_map &cm = m; - cm.find(1)->second = 2; // error +int main(int, char**) { + __gnu_cxx::hash_map m; + m[1] = 1; + const __gnu_cxx::hash_map& cm = m; + cm.find(1)->second = 2; // expected-error {{cannot assign to return value because function 'operator->' returns a const value}} return 0; } diff --git a/libcxx/test/extensions/gnu/lit.local.cfg b/libcxx/test/extensions/gnu/lit.local.cfg new file mode 100644 index 0000000000000..ffc4fc420f4ce --- /dev/null +++ b/libcxx/test/extensions/gnu/lit.local.cfg @@ -0,0 +1,5 @@ + +# Only libc++ and libstdc++ have any gnu extensions +if ("stdlib=libc++" not in config.available_features and + "stdlib=libstdc++" not in config.available_features): + config.unsupported = True diff --git a/libcxx/test/libcxx/extensions/hash/specializations.pass.cpp b/libcxx/test/libcxx/extensions/hash/specializations.pass.cpp deleted file mode 100644 index 345a2721dc035..0000000000000 --- a/libcxx/test/libcxx/extensions/hash/specializations.pass.cpp +++ /dev/null @@ -1,36 +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 -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: clang-modules-build - -// Prevent from generating deprecated warnings for this test. -// ADDITIONAL_COMPILE_FLAGS: -Wno-deprecated -#include -#include -#include - -#include "test_macros.h" - -int main(int, char**) -{ - char str[] = "test"; - assert(__gnu_cxx::hash()("test") == - std::hash()("test")); - assert(__gnu_cxx::hash()(str) == std::hash()("test")); - assert(__gnu_cxx::hash()(42) == 42); - assert(__gnu_cxx::hash()(42) == 42); - assert(__gnu_cxx::hash()(42) == 42); - assert(__gnu_cxx::hash()(42) == 42); - assert(__gnu_cxx::hash()(42) == 42); - assert(__gnu_cxx::hash()(42) == 42); - assert(__gnu_cxx::hash()(42) == 42); - assert(__gnu_cxx::hash()(42) == 42); - assert(__gnu_cxx::hash()(42) == 42); - - return 0; -}