11        m_scope(std::make_shared<ClosureScope>(scope)),
 
 
   22        return std::ranges::any_of(std::ranges::views::keys(
m_scope->m_data), [&vm, &end](
const auto& 
id) {
 
   23            return end.ends_with(
":" + vm.m_state.m_symbols[id]);
 
 
   29        std::string out = 
"(";
 
   30        for (std::size_t i = 0, end = m_scope->m_data.size(); i < end; ++i)
 
   35            out += 
'.' + vm.m_state.m_symbols[m_scope->m_data[i].first] + 
'=';
 
   36            out += m_scope->m_data[i].second.toString(vm);
 
 
   44        if (A.m_page_addr != B.m_page_addr)
 
   47        return *A.m_scope == *B.m_scope;
 
 
Subtype of the value type, handling closures.
 
Subtype of the value type, handling closures.
 
The ArkScript virtual machine.
 
The ArkScript virtual machine, executing ArkScript bytecode.
 
A class to store fields captured by a closure.
 
std::string toString(VM &vm) const noexcept
Print the closure to a string.
 
bool hasFieldEndingWith(const std::string &end, const VM &vm) const
Used when generating error messages in the VM, to see if a symbol might have been wrongly fully quali...
 
std::shared_ptr< ClosureScope > m_scope
 
Closure(const ClosureScope &scope, PageAddr_t pa) noexcept
Construct a new Closure object.
 
bool operator==(const Namespace &A, const Namespace &B)