(for debugging/logging purposes). */
label_text
-diagnostic_event::get_desc () const
+diagnostic_event::get_desc (pretty_printer &ref_pp) const
{
- auto pp = global_dc->clone_printer ();
+ auto pp = ref_pp.clone ();
pp_show_color (pp.get ()) = false;
print_desc (*pp.get ());
return label_text::take (xstrdup (pp_formatted_text (pp.get ())));
{
public:
path_label (const diagnostic_path &path,
+ const pretty_printer &ref_pp,
unsigned start_idx,
bool colorize,
bool allow_emojis)
- : m_path (path), m_start_idx (start_idx), m_effects (*this),
+ : m_path (path),
+ m_ref_pp (ref_pp),
+ m_start_idx (start_idx), m_effects (*this),
m_colorize (colorize), m_allow_emojis (allow_emojis)
{}
const diagnostic_event::meaning meaning (event.get_meaning ());
- auto pp = global_dc->clone_printer ();
+ auto pp = m_ref_pp.clone ();
pp_show_color (pp.get ()) = m_colorize;
diagnostic_event_id_t event_id (event_idx);
}
const diagnostic_path &m_path;
+ const pretty_printer &m_ref_pp;
unsigned m_start_idx;
path_label_effects m_effects;
const bool m_colorize;
int m_max_label_source_column;
};
- event_range (const diagnostic_path &path, unsigned start_idx,
+ event_range (const diagnostic_path &path,
+ const pretty_printer &ref_pp,
+ unsigned start_idx,
const diagnostic_event &initial_event,
per_thread_summary &t,
bool show_event_links,
m_logical_loc (initial_event.get_logical_location ()),
m_stack_depth (initial_event.get_stack_depth ()),
m_start_idx (start_idx), m_end_idx (start_idx),
- m_path_label (path, start_idx, colorize_labels, allow_emojis),
+ m_path_label (path, ref_pp,
+ start_idx, colorize_labels, allow_emojis),
m_richloc (initial_event.get_location (), &m_path_label, nullptr),
m_thread_id (initial_event.get_thread_id ()),
m_per_thread_summary (t),
struct path_summary
{
path_summary (const path_print_policy &policy,
+ const pretty_printer &ref_pp,
const diagnostic_path &path,
bool check_rich_locations,
bool colorize = false,
/* path_summary's ctor. */
path_summary::path_summary (const path_print_policy &policy,
+ const pretty_printer &ref_pp,
const diagnostic_path &path,
bool check_rich_locations,
bool colorize,
auto theme = policy.get_diagram_theme ();
const bool allow_emojis = theme ? theme->emojis_p () : false;
- cur_event_range = new event_range (path, idx, event, pts,
+ cur_event_range = new event_range (path, ref_pp,
+ idx, event, pts,
show_event_links,
colorize,
allow_emojis);
const bool show_event_links
= get_context ().m_source_printing.show_event_links_p;
path_summary summary (policy,
+ *pp,
path,
check_rich_locations,
colorize,
test_diagnostic_context dc;
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, false);
+ path_summary summary (policy, *event_pp, path, false);
ASSERT_EQ (summary.get_num_ranges (), 0);
print_path_summary_as_text (summary, text_output, true);
test_diagnostic_context dc;
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, false, false, false);
+ path_summary summary (policy, *event_pp, path, false, false, false);
ASSERT_EQ (summary.get_num_ranges (), 1);
print_path_summary_as_text (summary, text_output, true);
test_diagnostic_context dc;
diagnostic_text_output_format text_output (dc, false);
path_print_policy policy (text_output);
- path_summary summary (policy, path, false);
+ path_summary summary (policy, *event_pp, path, false);
ASSERT_EQ (summary.get_num_ranges (), 9);
dc.set_text_art_charset (DIAGNOSTICS_TEXT_ART_CHARSET_ASCII);
dc.set_text_art_charset (DIAGNOSTICS_TEXT_ART_CHARSET_UNICODE);
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, false);
+ path_summary summary (policy, *event_pp, path, false);
print_path_summary_as_text (summary, text_output, true);
ASSERT_STREQ
(" `test': events 1-2 (depth 0)\n"
test_diagnostic_context dc;
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, false);
+ path_summary summary (policy, *event_pp, path, false);
ASSERT_EQ (summary.get_num_ranges (), 5);
dc.set_text_art_charset (DIAGNOSTICS_TEXT_ART_CHARSET_ASCII);
print_path_summary_as_text (summary, text_output, true);
dc.set_text_art_charset (DIAGNOSTICS_TEXT_ART_CHARSET_UNICODE);
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, false);
+ path_summary summary (policy, *event_pp, path, false);
print_path_summary_as_text (summary, text_output, true);
ASSERT_STREQ
(" `foo': events 1-2 (depth 0)\n"
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, false);
+ path_summary summary (policy, *event_pp, path, false);
ASSERT_EQ (summary.get_num_ranges (), 4);
print_path_summary_as_text (summary, text_output, true);
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, false);
+ path_summary summary (policy, *event_pp, path, false);
print_path_summary_as_text (summary, text_output, true);
ASSERT_STREQ
(" `factorial': events 1-2 (depth 0)\n"
dc.m_source_printing.show_event_links_p = true;
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, true);
+ path_summary summary (policy, *event_pp, path, true);
print_path_summary_as_text (summary, text_output, false);
ASSERT_STREQ
(" events 1-3\n"
dc.m_source_printing.show_event_links_p = false;
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, true);
+ path_summary summary (policy, *event_pp, path, true);
print_path_summary_as_text (summary, text_output, false);
ASSERT_STREQ
(" events 1-3\n"
dc.m_source_printing.show_event_links_p = true;
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, true);
+ path_summary summary (policy, *event_pp, path, true);
print_path_summary_as_text (summary, text_output, false);
ASSERT_STREQ
(" events 1-3\n"
dc.m_source_printing.show_event_links_p = false;
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, true);
+ path_summary summary (policy, *event_pp, path, true);
print_path_summary_as_text (summary, text_output, false);
ASSERT_STREQ
(" events 1-3\n"
dc.m_source_printing.show_event_links_p = true;
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, true);
+ path_summary summary (policy, *event_pp, path, true);
print_path_summary_as_text (summary, text_output, false);
ASSERT_STREQ
(" events 1-3\n"
dc.m_source_printing.show_line_numbers_p = true;
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, true);
+ path_summary summary (policy, *event_pp, path, true);
print_path_summary_as_text (summary, text_output, false);
ASSERT_STREQ
(" events 1-3\n"
dc.m_source_printing.show_line_numbers_p = true;
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, true);
+ path_summary summary (policy, *event_pp, path, true);
print_path_summary_as_text (summary, text_output, false);
ASSERT_STREQ
(" events 1-3\n"
dc.m_source_printing.show_line_numbers_p = true;
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, true);
+ path_summary summary (policy, *event_pp, path, true);
print_path_summary_as_text (summary, text_output, false);
ASSERT_STREQ
(" events 1-2\n"
dc.m_source_printing.show_line_numbers_p = true;
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, true);
+ path_summary summary (policy, *event_pp, path, true);
print_path_summary_as_text (summary, text_output, false);
ASSERT_STREQ_AT (loc, expected_str,
pp_formatted_text (text_output.get_printer ()));
dc.m_source_printing.show_line_numbers_p = true;
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, true);
+ path_summary summary (policy, *event_pp, path, true);
print_path_summary_as_text (summary, text_output, false);
ASSERT_STREQ
(" events 1-5\n"
dc.m_source_printing.show_line_numbers_p = true;
diagnostic_text_output_format text_output (dc);
path_print_policy policy (text_output);
- path_summary summary (policy, path, true);
+ path_summary summary (policy, *event_pp, path, true);
print_path_summary_as_text (summary, text_output, false);
ASSERT_STREQ
(" events 1-3\n"