LCOV - code coverage report
Current view: top level - capy/detail - await_suspend_helper.hpp (source / functions) Coverage Total Hit Missed
Test: coverage_remapped.info Lines: 50.0 % 4 2 2
Test Date: 2026-02-17 18:14:47 Functions: 13.3 % 30 4 26

           TLA  Line data    Source code
       1                 : //
       2                 : // Copyright (c) 2025 Vinnie Falco (vinnie.falco@gmail.com)
       3                 : //
       4                 : // Distributed under the Boost Software License, Version 1.0. (See accompanying
       5                 : // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       6                 : //
       7                 : // Official repository: https://github.com/cppalliance/capy
       8                 : //
       9                 : 
      10                 : #ifndef BOOST_CAPY_DETAIL_AWAIT_SUSPEND_HELPER_HPP
      11                 : #define BOOST_CAPY_DETAIL_AWAIT_SUSPEND_HELPER_HPP
      12                 : 
      13                 : #include <coroutine>
      14                 : #include <boost/capy/ex/io_env.hpp>
      15                 : 
      16                 : #include <type_traits>
      17                 : 
      18                 : namespace boost {
      19                 : namespace capy {
      20                 : namespace detail {
      21                 : 
      22                 : // Helper to normalize await_suspend return types to std::coroutine_handle<>
      23                 : template<typename Awaitable>
      24 HIT           7 : std::coroutine_handle<> call_await_suspend(
      25                 :     Awaitable* a,
      26                 :     std::coroutine_handle<> h,
      27                 :     io_env const* env)
      28                 : {
      29                 :     using R = decltype(a->await_suspend(h, env));
      30                 :     if constexpr (std::is_void_v<R>)
      31                 :     {
      32 MIS           0 :         a->await_suspend(h, env);
      33               0 :         return std::noop_coroutine();
      34                 :     }
      35                 :     else if constexpr (std::is_same_v<R, bool>)
      36                 :     {
      37                 :         if(a->await_suspend(h, env))
      38                 :             return std::noop_coroutine();
      39                 :         return h;
      40                 :     }
      41                 :     else
      42                 :     {
      43 HIT           7 :         return a->await_suspend(h, env);
      44                 :     }
      45                 : }
      46                 : 
      47                 : } // namespace detail
      48                 : } // namespace capy
      49                 : } // namespace boost
      50                 : 
      51                 : #endif
        

Generated by: LCOV version 2.3