Exemple #1
0
vm_obj scope_trace(vm_obj const &, vm_obj const & line, vm_obj const & col, vm_obj const & fn) {
    pos_info_provider * pip = get_pos_info_provider();
    if (pip) {
        scope_traces_as_messages traces_as_messages(pip->get_file_name(), pos_info(force_to_unsigned(line), force_to_unsigned(col)));
        return invoke(fn, mk_vm_unit());
    } else {
        return invoke(fn, mk_vm_unit());
    }
}
Exemple #2
0
 void dump_pos_info(expr const & v) {
     std::cout << v << "\n\n";
     for_each(v, [&](expr const & e, unsigned) {
             auto pip = get_pos_info_provider();
             if (!pip) return false;
             if (auto p = pip->get_pos_info(e))
                 std::cout << "pos[" << ((unsigned)e.kind()) << "]: " << p->first << ":" << p->second << "\n"
                           << e << "\n";
             return true;
         });
     std::cout << "------------\n";
 }
Exemple #3
0
format nested_elaborator_exception::pp() const {
    format r = m_exception->pp();
    if (dynamic_cast<nested_elaborator_exception*>(m_exception.get()) == nullptr) {
        r += line() + format("Additional information:");
    }
    pos_info_provider * pip = get_pos_info_provider();
    r += line();
    if (pip) {
        r += format(pip->get_file_name()) + colon();
        if (m_pos) {
            r += format(m_pos->first) + colon() + format(m_pos->second) + colon();
        }
        r += space();
    }
    r += format("context: ") + m_fmt;
    return r;
}