diff --git a/tests/beman/execution/CMakeLists.txt b/tests/beman/execution/CMakeLists.txt index 07e05189..deb1746b 100644 --- a/tests/beman/execution/CMakeLists.txt +++ b/tests/beman/execution/CMakeLists.txt @@ -89,6 +89,7 @@ list( issue-144.test issue-174.test issue-186.test + issue-252.test issue-313.test meta-combine.test meta-contains.test diff --git a/tests/beman/execution/issue-252.test.cpp b/tests/beman/execution/issue-252.test.cpp new file mode 100644 index 00000000..fdba5469 --- /dev/null +++ b/tests/beman/execution/issue-252.test.cpp @@ -0,0 +1,44 @@ +// tests/beman/execution/issue-252.test.cpp -*-C++-*- +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +#include +#ifdef BEMAN_HAS_MODULES +import beman.execution; +#else +#include +#endif + +namespace ex = beman::execution; + +namespace { +struct non_decomposable_sender { + using sender_concept = ex::sender_tag; + + template + static consteval auto get_completion_signatures() -> ex::completion_signatures { + return {}; + } + + non_decomposable_sender(int, int) {} +}; + +struct decomposable_sender { + using sender_concept = ex::sender_tag; + using is_basic_sender_tag = void; + + struct tag {}; + tag tag_value; + int data; +}; +} // namespace + +TEST(issue252) { + static_assert(ex::sender); + static_assert(std::same_as, + decltype(ex::get_completion_signatures>())>); + + static_assert(std::same_as>); + static_assert(std::same_as>); + + (void)ex::get_completion_signatures>(); +}