[libcxx-commits] [libcxx] 6cb3fdc - [libc++] Remove duplicate tests for callable concepts
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Mon May 23 12:38:54 PDT 2022
Author: Louis Dionne
Date: 2022-05-23T15:38:49-04:00
New Revision: 6cb3fdc278b95204baf60587fe2c25ff65f4e612
URL: https://github.com/llvm/llvm-project/commit/6cb3fdc278b95204baf60587fe2c25ff65f4e612
DIFF: https://github.com/llvm/llvm-project/commit/6cb3fdc278b95204baf60587fe2c25ff65f4e612.diff
LOG: [libc++] Remove duplicate tests for callable concepts
This is essentially a revert of c7ad02009. Indeed, it seems that both
96dbdd75 and c7ad02009 were committed, but c7ad02009 seems to be only
an older version of 96dbdd75's tests.
Added:
Modified:
libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.subsumption.compile.pass.cpp
libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.subsumption.compile.pass.cpp
Removed:
libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.pass.cpp
libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.subsumption.pass.cpp
libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.pass.cpp
libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.subsumption.pass.cpp
libcxx/test/std/concepts/concepts.callable/concept.relation/relation.pass.cpp
libcxx/test/std/concepts/concepts.callable/concept.relation/relation.subsumption.pass.cpp
libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.pass.cpp
libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.subsumption.pass.cpp
################################################################################
diff --git a/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.pass.cpp
deleted file mode 100644
index fd370c3277786..0000000000000
--- a/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.pass.cpp
+++ /dev/null
@@ -1,60 +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: c++03, c++11, c++14, c++17
-
-// template<class F, class... Args>
-// concept equivalence_relation;
-
-#include <concepts>
-
-static_assert(std::equivalence_relation<bool(int, int), int, int>);
-static_assert(std::equivalence_relation<bool(int, int), double, double>);
-static_assert(std::equivalence_relation<bool(int, double), double, double>);
-
-static_assert(!std::equivalence_relation<bool (*)(), int, double>);
-static_assert(!std::equivalence_relation<bool (*)(int), int, double>);
-static_assert(!std::equivalence_relation<bool (*)(double), int, double>);
-
-static_assert(
- !std::equivalence_relation<bool(double, double*), double, double*>);
-static_assert(!std::equivalence_relation<bool(int&, int&), double&, double&>);
-
-struct S1 {};
-static_assert(std::relation<bool (S1::*)(S1*), S1*, S1*>);
-static_assert(std::relation<bool (S1::*)(S1&), S1&, S1&>);
-
-struct S2 {};
-
-struct P1 {
- bool operator()(S1, S1) const;
-};
-static_assert(std::equivalence_relation<P1, S1, S1>);
-
-struct P2 {
- bool operator()(S1, S1) const;
- bool operator()(S1, S2) const;
-};
-static_assert(!std::equivalence_relation<P2, S1, S2>);
-
-struct P3 {
- bool operator()(S1, S1) const;
- bool operator()(S1, S2) const;
- bool operator()(S2, S1) const;
-};
-static_assert(!std::equivalence_relation<P3, S1, S2>);
-
-struct P4 {
- bool operator()(S1, S1) const;
- bool operator()(S1, S2) const;
- bool operator()(S2, S1) const;
- bool operator()(S2, S2) const;
-};
-static_assert(std::equivalence_relation<P4, S1, S2>);
-
-int main(int, char**) { return 0; }
diff --git a/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.subsumption.compile.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.subsumption.compile.pass.cpp
index 69609bf6f6652..8d09663bfdfc3 100644
--- a/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.subsumption.compile.pass.cpp
+++ b/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.subsumption.compile.pass.cpp
@@ -37,10 +37,8 @@ constexpr bool check_equivalence_relation_subsumes_relation() {
}
// clang-format on
-static_assert(check_equivalence_relation_subsumes_relation<int (*)(int, int),
- int, int>());
-static_assert(check_equivalence_relation_subsumes_relation<int (*)(int, double),
- int, double>());
+static_assert(check_equivalence_relation_subsumes_relation<int (*)(int, int), int, int>());
+static_assert(check_equivalence_relation_subsumes_relation<int (*)(int, double), int, double>());
static_assert(check_equivalence_relation_subsumes_relation<R, S1, S1>());
static_assert(check_equivalence_relation_subsumes_relation<R, S1, S2>());
@@ -58,10 +56,8 @@ constexpr bool check_relation_subsumes_equivalence_relation() {
}
// clang-format on
-static_assert(check_relation_subsumes_equivalence_relation<int (*)(int, int),
- int, int>());
-static_assert(check_relation_subsumes_equivalence_relation<int (*)(int, double),
- int, double>());
+static_assert(check_relation_subsumes_equivalence_relation<int (*)(int, int), int, int>());
+static_assert(check_relation_subsumes_equivalence_relation<int (*)(int, double), int, double>());
static_assert(check_relation_subsumes_equivalence_relation<R, S1, S1>());
static_assert(check_relation_subsumes_equivalence_relation<R, S1, S2>());
diff --git a/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.subsumption.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.subsumption.pass.cpp
deleted file mode 100644
index cc0337ed54f87..0000000000000
--- a/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.subsumption.pass.cpp
+++ /dev/null
@@ -1,60 +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: c++03, c++11, c++14, c++17
-
-// template<class F, class... Args>
-// concept equivalence_relation;
-
-#include <concepts>
-
-// clang-format off
-template<class F, class T, class U>
-requires std::relation<F, T, U>
-constexpr bool check_subsumption() { return false; }
-
-template<class F, class T>
-requires std::equivalence_relation<F, T, T> && true
-constexpr bool check_subsumption() { return false; }
-
-template<class F, class T, class U>
-requires std::equivalence_relation<F, T, U> && true
-constexpr bool check_subsumption() { return true; }
-// clang-format on
-
-static_assert(check_subsumption<int (*)(int, int), int, int>());
-static_assert(check_subsumption<int (*)(int, double), int, double>());
-
-struct S1 {};
-struct S2 {};
-
-struct R {
- bool operator()(S1, S1) const;
- bool operator()(S1, S2) const;
- bool operator()(S2, S1) const;
- bool operator()(S2, S2) const;
-};
-static_assert(check_subsumption<R, S1, S1>());
-static_assert(check_subsumption<R, S1, S2>());
-
-// clang-format off
-template<class F, class T, class U>
-requires std::relation<F, T, U> && true
-constexpr bool check_reverse_subsumption() { return true; }
-
-template<class F, class T, class U>
-requires std::equivalence_relation<F, T, U>
-constexpr bool check_no_subsumption() { return false; }
-// clang-format on
-
-static_assert(check_reverse_subsumption<int (*)(int, int), int, int>());
-static_assert(check_reverse_subsumption<int (*)(int, double), int, double>());
-static_assert(check_reverse_subsumption<R, S1, S1>());
-static_assert(check_reverse_subsumption<R, S1, S2>());
-
-int main(int, char**) { return 0; }
diff --git a/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.pass.cpp
deleted file mode 100644
index ce3ac8bcbc563..0000000000000
--- a/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.pass.cpp
+++ /dev/null
@@ -1,65 +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: c++03, c++11, c++14, c++17
-
-// template<class F, class... Args>
-// concept predicate;
-
-#include <concepts>
-#include <type_traits>
-
-static_assert(std::predicate<bool()>);
-static_assert(std::predicate<bool (*)()>);
-static_assert(std::predicate<bool (&)()>);
-
-static_assert(!std::predicate<void()>);
-static_assert(!std::predicate<void (*)()>);
-static_assert(!std::predicate<void (&)()>);
-
-struct S {};
-
-static_assert(!std::predicate<S(int), int>);
-static_assert(!std::predicate<S(double), double>);
-static_assert(std::predicate<int S::*, S*>);
-static_assert(std::predicate<int (S::*)(), S*>);
-static_assert(std::predicate<int (S::*)(), S&>);
-static_assert(!std::predicate<void (S::*)(), S*>);
-static_assert(!std::predicate<void (S::*)(), S&>);
-
-static_assert(!std::predicate<bool(S)>);
-static_assert(!std::predicate<bool(S&), S>);
-static_assert(!std::predicate<bool(S&), S const&>);
-static_assert(std::predicate<bool(S&), S&>);
-
-struct Predicate {
- bool operator()(int, double, char);
-};
-static_assert(std::predicate<Predicate, int, double, char>);
-static_assert(std::predicate<Predicate&, int, double, char>);
-static_assert(!std::predicate<const Predicate, int, double, char>);
-static_assert(!std::predicate<const Predicate&, int, double, char>);
-
-constexpr bool check_lambda(auto) { return false; }
-
-constexpr bool check_lambda(std::predicate auto) { return true; }
-
-static_assert(check_lambda([] { return std::true_type(); }));
-static_assert(check_lambda([]() -> int* { return nullptr; }));
-
-struct boolean {
- operator bool() const noexcept;
-};
-static_assert(check_lambda([] { return boolean(); }));
-
-struct explicit_bool {
- explicit operator bool() const noexcept;
-};
-static_assert(!check_lambda([] { return explicit_bool(); }));
-
-int main(int, char**) { return 0; }
diff --git a/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.subsumption.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.subsumption.pass.cpp
deleted file mode 100644
index f3806a8cf20ef..0000000000000
--- a/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.subsumption.pass.cpp
+++ /dev/null
@@ -1,32 +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: c++03, c++11, c++14, c++17
-
-// template<class F, class... Args>
-// concept predicate;
-
-#include <concepts>
-
-constexpr bool check_subsumption(std::regular_invocable auto) {
- return false;
-}
-
-// clang-format off
-template<class F>
-requires std::predicate<F> && true
-constexpr bool check_subsumption(F)
-{
- return true;
-}
-// clang-format on
-
-static_assert(!check_subsumption([] {}));
-static_assert(check_subsumption([] { return true; }));
-
-int main(int, char**) { return 0; }
diff --git a/libcxx/test/std/concepts/concepts.callable/concept.relation/relation.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.relation/relation.pass.cpp
deleted file mode 100644
index 74252863373d9..0000000000000
--- a/libcxx/test/std/concepts/concepts.callable/concept.relation/relation.pass.cpp
+++ /dev/null
@@ -1,58 +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: c++03, c++11, c++14, c++17
-
-// template<class F, class... Args>
-// concept relation;
-
-#include <concepts>
-
-static_assert(std::relation<bool(int, int), int, int>);
-static_assert(std::relation<bool(int, int), double, double>);
-static_assert(std::relation<bool(int, double), double, double>);
-
-static_assert(!std::relation<bool(), int, double>);
-static_assert(!std::relation<bool(int), int, double>);
-static_assert(!std::relation<bool(double), int, double>);
-static_assert(!std::relation<bool(double, double*), double, double*>);
-static_assert(!std::relation<bool(int&, int&), double&, double&>);
-
-struct S1 {};
-static_assert(std::relation<bool (S1::*)(S1*), S1*, S1*>);
-static_assert(std::relation<bool (S1::*)(S1&), S1&, S1&>);
-
-struct S2 {};
-
-struct P1 {
- bool operator()(S1, S1) const;
-};
-static_assert(std::relation<P1, S1, S1>);
-
-struct P2 {
- bool operator()(S1, S1) const;
- bool operator()(S1, S2) const;
-};
-static_assert(!std::relation<P2, S1, S2>);
-
-struct P3 {
- bool operator()(S1, S1) const;
- bool operator()(S1, S2) const;
- bool operator()(S2, S1) const;
-};
-static_assert(!std::relation<P3, S1, S2>);
-
-struct P4 {
- bool operator()(S1, S1) const;
- bool operator()(S1, S2) const;
- bool operator()(S2, S1) const;
- bool operator()(S2, S2) const;
-};
-static_assert(std::relation<P4, S1, S2>);
-
-int main(int, char**) { return 0; }
diff --git a/libcxx/test/std/concepts/concepts.callable/concept.relation/relation.subsumption.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.relation/relation.subsumption.pass.cpp
deleted file mode 100644
index f8a9e4abf843e..0000000000000
--- a/libcxx/test/std/concepts/concepts.callable/concept.relation/relation.subsumption.pass.cpp
+++ /dev/null
@@ -1,40 +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: c++03, c++11, c++14, c++17
-
-// template<class F, class... Args>
-// concept relation;
-
-#include <concepts>
-
-// clang-format off
-template<class F, class T, class U>
-requires std::predicate<F, T, T> && std::predicate<F, T, U> &&
- std::predicate<F, U, T> && std::predicate<F, U, U>
-constexpr bool check_subsumption() { return false; }
-
-template<class F, class T, class U>
-requires std::relation<F, T, U> && true
-constexpr bool check_subsumption() { return true; }
-// clang-format on
-
-static_assert(check_subsumption<int (*)(int, double), int, double>());
-
-struct S1 {};
-struct S2 {};
-
-struct R {
- bool operator()(S1, S1) const;
- bool operator()(S1, S2) const;
- bool operator()(S2, S1) const;
- bool operator()(S2, S2) const;
-};
-static_assert(check_subsumption<R, S1, S2>());
-
-int main(int, char**) { return 0; }
diff --git a/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.pass.cpp
deleted file mode 100644
index d4d3c9f8fc18b..0000000000000
--- a/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.pass.cpp
+++ /dev/null
@@ -1,59 +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: c++03, c++11, c++14, c++17
-
-// template<class F, class... Args>
-// concept strict_weak_order;
-
-#include <concepts>
-
-static_assert(std::strict_weak_order<bool(int, int), int, int>);
-static_assert(std::strict_weak_order<bool(int, int), double, double>);
-static_assert(std::strict_weak_order<bool(int, double), double, double>);
-
-static_assert(!std::strict_weak_order<bool (*)(), int, double>);
-static_assert(!std::strict_weak_order<bool (*)(int), int, double>);
-static_assert(!std::strict_weak_order<bool (*)(double), int, double>);
-
-static_assert(!std::strict_weak_order<bool(double, double*), double, double*>);
-static_assert(!std::strict_weak_order<bool(int&, int&), double&, double&>);
-
-struct S1 {};
-static_assert(std::strict_weak_order<bool (S1::*)(S1*), S1*, S1*>);
-static_assert(std::strict_weak_order<bool (S1::*)(S1&), S1&, S1&>);
-
-struct S2 {};
-
-struct P1 {
- bool operator()(S1, S1) const;
-};
-static_assert(std::strict_weak_order<P1, S1, S1>);
-
-struct P2 {
- bool operator()(S1, S1) const;
- bool operator()(S1, S2) const;
-};
-static_assert(!std::strict_weak_order<P2, S1, S2>);
-
-struct P3 {
- bool operator()(S1, S1) const;
- bool operator()(S1, S2) const;
- bool operator()(S2, S1) const;
-};
-static_assert(!std::strict_weak_order<P3, S1, S2>);
-
-struct P4 {
- bool operator()(S1, S1) const;
- bool operator()(S1, S2) const;
- bool operator()(S2, S1) const;
- bool operator()(S2, S2) const;
-};
-static_assert(std::strict_weak_order<P4, S1, S2>);
-
-int main(int, char**) { return 0; }
diff --git a/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.subsumption.compile.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.subsumption.compile.pass.cpp
index f94981686387c..c03f31445951d 100644
--- a/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.subsumption.compile.pass.cpp
+++ b/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.subsumption.compile.pass.cpp
@@ -37,10 +37,8 @@ constexpr bool check_strict_weak_order_subsumes_relation() {
}
// clang-format on
-static_assert(
- check_strict_weak_order_subsumes_relation<int (*)(int, int), int, int>());
-static_assert(check_strict_weak_order_subsumes_relation<int (*)(int, double),
- int, double>());
+static_assert(check_strict_weak_order_subsumes_relation<int (*)(int, int), int, int>());
+static_assert(check_strict_weak_order_subsumes_relation<int (*)(int, double), int, double>());
static_assert(check_strict_weak_order_subsumes_relation<R, S1, S1>());
static_assert(check_strict_weak_order_subsumes_relation<R, S1, S2>());
@@ -58,10 +56,8 @@ constexpr bool check_relation_subsumes_strict_weak_order() {
}
// clang-format on
-static_assert(
- check_relation_subsumes_strict_weak_order<int (*)(int, int), int, int>());
-static_assert(check_relation_subsumes_strict_weak_order<int (*)(int, double),
- int, double>());
+static_assert(check_relation_subsumes_strict_weak_order<int (*)(int, int), int, int>());
+static_assert(check_relation_subsumes_strict_weak_order<int (*)(int, double), int, double>());
static_assert(check_relation_subsumes_strict_weak_order<R, S1, S1>());
static_assert(check_relation_subsumes_strict_weak_order<R, S1, S2>());
@@ -79,6 +75,5 @@ constexpr bool check_strict_weak_order_subsumes_itself() {
}
// clang-format on
-static_assert(
- check_strict_weak_order_subsumes_itself<int (*)(int, int), int, int>());
+static_assert(check_strict_weak_order_subsumes_itself<int (*)(int, int), int, int>());
static_assert(check_strict_weak_order_subsumes_itself<R, S1, S1>());
diff --git a/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.subsumption.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.subsumption.pass.cpp
deleted file mode 100644
index 68b92d62b6a9c..0000000000000
--- a/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.subsumption.pass.cpp
+++ /dev/null
@@ -1,39 +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: c++03, c++11, c++14, c++17
-
-// template<class F, class... Args>
-// concept strict_weak_order;
-
-#include <concepts>
-
-// clang-format off
-template<class F, class T, class U>
-requires std::relation<F, T, U>
-constexpr bool check_subsumption() { return false; }
-
-template<class F, class T, class U>
-requires std::strict_weak_order<F, T, U> && true
-constexpr bool check_subsumption() { return true; }
-// clang-format on
-
-static_assert(check_subsumption<int (*)(int, double), int, double>());
-
-struct S1 {};
-struct S2 {};
-
-struct R {
- bool operator()(S1, S1) const;
- bool operator()(S1, S2) const;
- bool operator()(S2, S1) const;
- bool operator()(S2, S2) const;
-};
-static_assert(check_subsumption<R, S1, S2>());
-
-int main(int, char**) { return 0; }
More information about the libcxx-commits
mailing list