From d05077e2fffc5ca78bce98cb922ef1113b39f0de Mon Sep 17 00:00:00 2001 From: Maikel Nadolski Date: Wed, 8 Jan 2025 15:01:02 +0100 Subject: [PATCH] Fix test for just sender --- .../execution26/detail/get_completion_behaviour.hpp | 10 +++++++--- include/beman/execution26/detail/just.hpp | 2 +- .../execution26/exec-get-completion-behaviour.test.cpp | 8 ++++++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/include/beman/execution26/detail/get_completion_behaviour.hpp b/include/beman/execution26/detail/get_completion_behaviour.hpp index bd2e4b53..3ed2b5ff 100644 --- a/include/beman/execution26/detail/get_completion_behaviour.hpp +++ b/include/beman/execution26/detail/get_completion_behaviour.hpp @@ -45,12 +45,16 @@ struct get_completion_behaviour_t { if constexpr (requires { typename new_sender_type::completion_behaviour; }) { return typename new_sender_type::completion_behaviour{}; - } else if constexpr (requires { ::std::move(new_sender).get_completion_behaviour(std::forward(env)); }) { - return std::move(new_sender).get_completion_behaviour(std::forward(env)); + } else if constexpr (requires { + new_sender(::std::forward(sender), ::std::forward(env)) + .get_completion_behaviour(std::forward(env)); + }) { + return new_sender(::std::forward(sender), ::std::forward(env)) + .get_completion_behaviour(std::forward(env)); } else if constexpr (::beman::execution26::detail::is_awaitable< new_sender_type, ::beman::execution26::detail::env_promise>) { - if (new_sender(sender, env).await_ready()) { + if (new_sender(::std::forward(sender), ::std::forward(env)).await_ready()) { return completion_behaviour::inline_completion; } else { return completion_behaviour::unknown; diff --git a/include/beman/execution26/detail/just.hpp b/include/beman/execution26/detail/just.hpp index dc3ef22c..c7dfb601 100644 --- a/include/beman/execution26/detail/just.hpp +++ b/include/beman/execution26/detail/just.hpp @@ -50,7 +50,7 @@ struct impls_for> : ::beman::execution26::detail::default_imp }(::std::make_index_sequence{}); }; - static constexpr auto get_completion_behaviour = [](const auto&, const auto&, const auto&) { + static constexpr auto get_completion_behaviour = [](const auto&, const auto&, const auto&...) { return ::beman::execution26::completion_behaviour::inline_completion; }; }; diff --git a/tests/beman/execution26/exec-get-completion-behaviour.test.cpp b/tests/beman/execution26/exec-get-completion-behaviour.test.cpp index 9a021729..79219851 100644 --- a/tests/beman/execution26/exec-get-completion-behaviour.test.cpp +++ b/tests/beman/execution26/exec-get-completion-behaviour.test.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception #include +#include #include @@ -44,10 +45,17 @@ void test_constexpr_sender() { ASSERT(test_std::completion_behaviour::inline_completion == completion_behaviour); } +void test_just() { + auto just = test_std::just(); + auto completion_behaviour = test_std::get_completion_behaviour(just, test_std::empty_env{}); + ASSERT(test_std::completion_behaviour::inline_completion == completion_behaviour); +} + } // namespace TEST(exec_get_completion_behaviour) { test_constexpr_awaitable(); test_typedef_sender(); test_constexpr_sender(); + test_just(); }