Exemplo n.º 1
0
void report_message(message const & msg0) {
    auto & l = logtree();
    auto & loc = logtree().get_location();

    std::shared_ptr<message> msg;
    if (loc.m_file_name.empty()) {
        msg = std::make_shared<message>(msg0);
    } else {
        auto pos_ok = loc.m_range.m_begin <= msg0.get_pos() && msg0.get_pos() <= loc.m_range.m_end;
        msg = std::make_shared<message>(loc.m_file_name,
                                        pos_ok ? msg0.get_pos() : loc.m_range.m_begin,
                                        pos_ok ? msg0.get_end_pos() : optional<pos_info>(),
                                        msg0.get_severity(), msg0.get_caption(), msg0.get_text());
    }
    l.add(msg);
}
Exemplo n.º 2
0
json json_of_message(message const & msg) {
    json j;
    j["file_name"] = msg.get_file_name();
    j["pos_line"]  = msg.get_pos().first;
    j["pos_col"]   = msg.get_pos().second;
    if (auto end_pos = msg.get_end_pos()) {
        j["end_pos_line"] = end_pos->first;
        j["end_pos_col"]  = end_pos->second;
    }
    j["severity"]  = json_of_severity(msg.get_severity());
    j["caption"]   = msg.get_caption();
    j["text"]      = msg.get_text();
    return j;
}