Skip to content

Add GitHub Actions workflow wrappers - #20

Open
JoshuaRowePhantom wants to merge 46 commits into
mainfrom
users/jrowe/tracing-event-tests-and-filter-fix
Open

Add GitHub Actions workflow wrappers#20
JoshuaRowePhantom wants to merge 46 commits into
mainfrom
users/jrowe/tracing-event-tests-and-filter-fix

Conversation

@JoshuaRowePhantom

Copy link
Copy Markdown
Owner

Adds the consumer workflow wrappers for shared pull request gating and continuous integration, and restores the Windows Clang unit test presets expected by the shared CI profile.

make_task and make_shared_task are now niebloids
Fixed bug in tracing exceptions
…NCE macro in Can_use_returned_rvalue_reference_with_same_address test
JoshuaRowePhantom and others added 16 commits December 24, 2025 13:42
Mae tracing mostly compile on CLang
constant_filtered_trace_sink and runtime_filtered_trace_sink were
discarding query results (should_trace_return_value,
should_capture_promise_creation_arguments) by using void-returning
lambdas and applying the event filter to queries where it does not
apply. Rewrote both wrappers using composed_function with explicit
decltype(auto)-returning overloads that bypass the filter entirely.

Five test expectations in tracing_test.cpp incorrectly assumed
MethodResult would be populated when using a void-returning trace sink.
Since the sink's operator() returns void, can_trace_return_value is
false and MethodResult stays empty_value. Removed those expectations.

Also adds Documentation/tracing.md documenting the tracing design
including the should_trace_return_value query protocol.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…race_return_value tests

Fix infinite-recursion bug in traced_promise_yield_value::yield_value:
- Removed spurious extra argument before method_events_group
- Lambda now calls traced_promise_construction::yield_value instead of self-recursing

tests_should_trace_return_value uses yield_value_result (returns suspend_never,
a non-void type) to verify that should_trace_return_value query is honoured and
MethodResult is populated in the emitted event.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Tests that when unhandled_exception() itself throws, the traced promise
emits unhandled_exception_exception before propagating the exception.

Uses sync_wait with try/catch because the exception from unhandled_exception()
propagates directly from resume() rather than through the coroutine
continuation mechanism, bypassing co_await try/catch blocks.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- traced_promise::await_transform now emits await_transform_begin,
  await_transform_result, and await_transform_exception events via
  call_promise_method, wrapping the base await_transform call
- Add throw_on_await_transform test struct and controllable_promise_base
  override for testing exception paths
- Add traces_await_transform and traces_await_transform_exception tests

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Implement conditional promise creation argument capture in traced_promise
constructor based on TraceSink response to
should_capture_promise_creation_arguments<create_promise> query:
- Not callable: always capture (unchanged default behavior)
- Returns std::true_type: unconditionally capture
- Returns std::false_type: emit empty_arguments, do not capture
- Returns bool: capture at runtime if true, storing result in
  std::optional<std::tuple<const decay_t<Args>&...>>

Also qualify events::make_arguments in traced_awaiter::await_suspend to
fix a two-phase lookup issue with new TraceSink types defined outside the
tracing module.

Add four tests: false_type, true_type, bool-true, bool-false.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add suppress_trace_suppresses_await_transform_tracing: verifies that
  co_await suppress_trace{awaitable} emits no await_transform events
- Add trace_sends_custom_event_to_sink: verifies that co_await on a
  trace-derived struct sends the event directly to the sink

Fix: Add detail::is_suppress_trace type trait and constrain the generic
await_transform overload to exclude suppress_trace<T> and trace-derived
types, resolving MSVC overload ambiguity with explicit-object parameters.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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.

1 participant