Skip to content

Fix when all environment#258

Merged
dietmarkuehl merged 11 commits intomainfrom
fix-when_all-environment
Apr 21, 2026
Merged

Fix when all environment#258
dietmarkuehl merged 11 commits intomainfrom
fix-when_all-environment

Conversation

@dietmarkuehl
Copy link
Copy Markdown
Member

No description provided.

Copilot AI review requested due to automatic review settings April 21, 2026 20:39
@dietmarkuehl dietmarkuehl requested a review from camio as a code owner April 21, 2026 20:39
@coveralls
Copy link
Copy Markdown

coveralls commented Apr 21, 2026

Coverage Status

coverage: 95.542%. remained the same — fix-when_all-environment into main

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates sender detection and completion-signature computation to address failures when an algorithm needs to account for (receiver) environment types.

Changes:

  • Add an explicit is_basic_sender_tag marker to basic_sender and relevant test senders.
  • Restrict get_sender_data() decomposition to senders opted-in via is_basic_sender_tag.
  • Fix store_receiver_t::sender::get_completion_signatures() to compute signatures based on Trans(sndr, env...) and remove the unused runtime env parameter list.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tests/beman/execution/exec-snd-transform.test.cpp Opt-in test sender to “basic sender” decomposition via is_basic_sender_tag.
tests/beman/execution/exec-snd-expos.test.cpp Opt-in multiple exposition test senders to “basic sender” decomposition via is_basic_sender_tag.
tests/beman/execution/exec-snd-concepts.test.cpp Opt-in concept test senders/product senders to “basic sender” decomposition via is_basic_sender_tag.
tests/beman/execution/exec-domain-default.test.cpp Opt-in domain-default test sender to “basic sender” decomposition via is_basic_sender_tag.
include/beman/execution/detail/store_receiver.hpp Update completion-signature computation to incorporate environment arguments and decay Trans.
include/beman/execution/detail/sender_decompose.hpp Gate decomposition on is_basic_sender_tag presence.
include/beman/execution/detail/basic_sender.hpp Add is_basic_sender_tag marker to library basic_sender.
Comments suppressed due to low confidence (1)

include/beman/execution/detail/store_receiver.hpp:96

  • store_receiver_t::sender now decays Trans into trans_t for storage and completion-signature computation, but connect() still instantiates state<Sndr, Trans, ...> and state::state_t is computed from Trans/Sndr (which may be reference-qualified). If Trans (or Sndr) has ref-qualified call/connect overloads, this can make state_t (and thus op_state) a different type than what the constructor actually initializes, leading to hard compilation failures. Consider normalizing the state template parameters to the same decayed types actually stored/used at runtime (e.g. remove_cvref_t<Sndr> and trans_t) and using those consistently in state_t and connect().
        using trans_t = ::std::remove_cvref_t<Trans>;
        template <typename, typename... Env>
        static consteval auto get_completion_signatures() noexcept {
            return ::beman::execution::
                get_completion_signatures<decltype(::std::declval<trans_t>()(::std::declval<Sndr>(), ::std::declval<Env>()...)), Env...>();
        }
        ::std::remove_cvref_t<Sndr>  sndr;
        trans_t trans;

        template <::beman::execution::receiver Receiver>
        auto connect(Receiver&& r) && {
            static_assert(::beman::execution::operation_state<state<Sndr, Trans, ::std::remove_cvref_t<Receiver>>>);
            return state<Sndr, Trans, ::std::remove_cvref_t<Receiver>>(
                ::std::move(this->sndr), ::std::move(this->trans), ::std::forward<Receiver>(r));
        }

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread include/beman/execution/detail/sender_decompose.hpp Outdated
@dietmarkuehl dietmarkuehl merged commit cad563e into main Apr 21, 2026
38 checks passed
@dietmarkuehl dietmarkuehl deleted the fix-when_all-environment branch April 21, 2026 22:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants