• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

jbaldwin / libcoro / 13078770688

31 Jan 2025 06:39PM UTC coverage: 84.431%. First build
13078770688

Pull #294

github

web-flow
Merge e3f7cc8c8 into 49333e720
Pull Request #294: Remove lambda captures

5 of 6 new or added lines in 4 files covered. (83.33%)

1372 of 1625 relevant lines covered (84.43%)

4294884.58 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

58.33
/src/detail/task_self_deleting.cpp
1
#include "coro/detail/task_self_deleting.hpp"
2

3
#include <utility>
4

5
namespace coro::detail
6
{
7

8
promise_self_deleting::promise_self_deleting()
400,504✔
9
{
10
    (void)m_task_container_size; // make codacy happy
11
}
400,504✔
12

13
promise_self_deleting::~promise_self_deleting()
400,505✔
14
{
15
}
400,505✔
16

17
promise_self_deleting::promise_self_deleting(promise_self_deleting&& other)
×
18
    : m_task_container_size(std::exchange(other.m_task_container_size, nullptr))
×
19
{
20
}
×
21

22
auto promise_self_deleting::operator=(promise_self_deleting&& other) -> promise_self_deleting&
×
23
{
24
    if (std::addressof(other) != nullptr)
×
25
    {
26
        m_task_container_size = std::exchange(other.m_task_container_size, nullptr);
×
27
    }
28

29
    return *this;
×
30
}
31

32
auto promise_self_deleting::get_return_object() -> task_self_deleting
400,504✔
33
{
34
    return task_self_deleting{*this};
400,504✔
35
}
36

37
auto promise_self_deleting::initial_suspend() -> std::suspend_always
400,504✔
38
{
39
    return std::suspend_always{};
400,504✔
40
}
41

42
auto promise_self_deleting::final_suspend() noexcept -> std::suspend_never
400,505✔
43
{
44
    // Notify the task_container<executor_t> that this coroutine has completed.
45
    if (m_task_container_size != nullptr)
400,505✔
46
    {
47
        m_task_container_size->fetch_sub(1);
400,505✔
48
    }
49

50
    // By not suspending this lets the coroutine destroy itself.
51
    return std::suspend_never{};
400,505✔
52
}
53

54
auto promise_self_deleting::return_void() noexcept -> void
400,505✔
55
{
56
    // no-op
57
}
400,505✔
58

59
auto promise_self_deleting::unhandled_exception() -> void
×
60
{
61
    // The user cannot access the promise anyways, ignore the exception.
62
}
×
63

64
auto promise_self_deleting::task_container_size(std::atomic<std::size_t>& task_container_size) -> void
400,504✔
65
{
66
    m_task_container_size = &task_container_size;
400,504✔
67
}
400,504✔
68

69
task_self_deleting::task_self_deleting(promise_self_deleting& promise) : m_promise(&promise)
400,504✔
70
{
71
}
400,504✔
72

73
task_self_deleting::~task_self_deleting()
400,504✔
74
{
75
}
400,504✔
76

NEW
77
task_self_deleting::task_self_deleting(task_self_deleting&& other) : m_promise(other.m_promise)
×
78
{
79
}
×
80

81
auto task_self_deleting::operator=(task_self_deleting&& other) -> task_self_deleting&
×
82
{
83
    if (std::addressof(other) != this)
×
84
    {
85
        m_promise = other.m_promise;
×
86
    }
87

88
    return *this;
×
89
}
90

91
} // namespace coro::detail
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc