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

ArkScript-lang / Ark / 16852602262

09 Aug 2025 06:49PM UTC coverage: 86.842% (-0.03%) from 86.869%
16852602262

Pull #568

github

web-flow
Merge c5673fd08 into c65ea7e5b
Pull Request #568: feat(closures): captures are no longer fully qualified

92 of 113 new or added lines in 13 files covered. (81.42%)

6 existing lines in 2 files now uncovered.

7537 of 8679 relevant lines covered (86.84%)

125769.07 hits per line

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

96.55
/src/arkreactor/VM/Value/Closure.cpp
1
#include <Ark/VM/Value/Closure.hpp>
2

3
#include <Ark/VM/Value/ClosureScope.hpp>
4
#include <Ark/VM/VM.hpp>
5

6
#include <ranges>
7

8
namespace Ark::internal
9
{
10
    Closure::Closure(const ClosureScope& scope, const PageAddr_t pa) noexcept :
619✔
11
        m_scope(std::make_shared<ClosureScope>(scope)),
619✔
12
        m_page_addr(pa)
619✔
13
    {}
1,238✔
14

15
    Closure::Closure(const std::shared_ptr<ClosureScope>& scope_ptr, const PageAddr_t pa) noexcept :
1,516✔
16
        m_scope(scope_ptr),
1,516✔
17
        m_page_addr(pa)
1,516✔
18
    {}
1,516✔
19

20
    bool Closure::hasFieldEndingWith(const std::string& end, const VM& vm) const
1✔
21
    {
1✔
22
        return std::ranges::any_of(std::ranges::views::keys(m_scope->m_data), [&vm, &end](const auto& id) {
2✔
23
            return end.ends_with(":" + vm.m_state.m_symbols[id]);
1✔
24
        });
25
    }
26

27
    std::string Closure::toString(VM& vm) const noexcept
2✔
28
    {
2✔
29
        std::string out = "(";
2✔
30
        for (std::size_t i = 0, end = m_scope->m_data.size(); i < end; ++i)
4✔
31
        {
32
            if (i != 0)
2✔
UNCOV
33
                out += ' ';
×
34

35
            out += '.' + vm.m_state.m_symbols[m_scope->m_data[i].first] + '=';
2✔
36
            out += m_scope->m_data[i].second.toString(vm);
2✔
37
        }
2✔
38
        return out + ")";
2✔
39
    }
2✔
40

41
    bool operator==(const Closure& A, const Closure& B) noexcept
19✔
42
    {
19✔
43
        // they do not come from the same closure builder
44
        if (A.m_page_addr != B.m_page_addr)
19✔
45
            return false;
2✔
46

47
        return *A.m_scope == *B.m_scope;
17✔
48
    }
19✔
49
}
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