20#ifndef GCC_DIAGNOSTICS_CONTEXT_H
21#define GCC_DIAGNOSTICS_CONTEXT_H
81template <
typename TextOrHtml>
83 TextOrHtml &text_or_html,
103 bool colorize)
const;
130 const expanded_location &exploc);
135 const expanded_location &exploc);
166 const rich_location &richloc,
167 enum kind diagnostic_kind,
172 const rich_location &richloc,
173 enum kind diagnostic_kind,
280 void dump (FILE *out,
int indent)
const;
300 bool should_skip_bom);
322 rich_location &richloc,
325 const char *gmsgid, ...)
328 rich_location &richloc,
331 const
char *gmsgid, va_list *
ap)
348 (
m_logger,
"diagnostics::context::classify_diagnostics")
360 (
m_logger,
"diagnostics::context::push_diagnostics")
369 (
m_logger,
"diagnostics::context::pop_diagnostics")
378 enum kind diagnostic_kind,
383 enum kind diagnostic_kind,
391 void set_sink (std::unique_ptr<sink> sink_);
394 std::unique_ptr<client_data_hooks>
486 enum kind orig_diag_kind,
487 enum kind diag_kind)
const
490 return label_text ();
499 return label_text ();
517 const char *,
const char *, va_list *,
Definition buffering.h:59
Definition client-data-hooks.h:35
Definition diagnostics/context.h:95
int get_tabstop() const
Definition diagnostics/context.h:105
file_cache & m_file_cache
Definition diagnostics/context.h:108
column_options m_column_options
Definition diagnostics/context.h:109
label_text get_location_text(const expanded_location &s, bool show_column, bool colorize) const
Definition diagnostics/context.cc:817
int converted_column(expanded_location s) const
Definition diagnostics/context.cc:809
column_policy(const context &dc)
Definition diagnostics/context.cc:799
Definition diagnostics/context.h:254
void set_report_bug(bool val)
Definition diagnostics/context.h:406
start_span_fn< to_text > m_text_start_span
Definition diagnostics/context.h:729
void set_main_input_filename(const char *filename)
Definition diagnostics/context.cc:526
pretty_printer * m_reference_printer
Definition diagnostics/context.h:646
bool diagnostic_impl(rich_location *, const metadata *, option_id, const char *, va_list *, enum kind) ATTRIBUTE_GCC_DIAG(5
Definition diagnostics/context.cc:1658
void set_show_nesting(bool val)
Definition diagnostics/context.cc:315
text_starter_fn m_begin_diagnostic
Definition diagnostics/context.h:724
void get_any_inlining_info(diagnostic_info *diagnostic)
Definition diagnostics/context.cc:1219
bool option_enabled_p(option_id opt_id) const
Definition diagnostics/context.h:478
set_locations_callback_t m_set_locations_cb
Definition diagnostics/context.h:822
bool m_abort_on_error
Definition diagnostics/context.h:684
void set_diagnostic_buffer(buffer *)
Definition buffering.cc:40
bool m_show_path_depths
Definition diagnostics/context.h:677
bool supports_fnotice_on_stderr_p() const
Definition diagnostics/context.cc:517
buffer * m_diagnostic_buffer
Definition diagnostics/context.h:853
void(* m_internal_error)(context *, const char *, va_list *)
Definition diagnostics/context.h:737
text_finalizer_fn m_end_diagnostic
Definition diagnostics/context.h:733
enum diagnostic_path_format m_path_format
Definition diagnostics/context.h:674
enum diagnostics_escape_format m_escape_format
Definition diagnostics/context.h:784
void refresh_output_sinks()
Definition diagnostics/context.cc:623
const client_data_hooks * get_client_data_hooks() const
Definition diagnostics/context.h:456
bool warning_enabled_at(location_t loc, option_id opt_id)
Definition diagnostics/context.cc:1295
int diagnostic_count(enum kind kind) const
Definition diagnostics/context.h:472
void * m_client_aux_data
Definition diagnostics/context.h:761
void flush_diagnostic_buffer(buffer &)
Definition buffering.cc:95
void maybe_show_locus(const rich_location &richloc, const source_printing_options &opts, enum kind diagnostic_kind, pretty_printer &pp, source_effect_info *effect_info)
Definition source-printing.cc:3859
bool m_warning_as_error_requested
Definition diagnostics/context.h:657
bool emitting_diagnostic_p() const
Definition diagnostics/context.h:316
void DEBUG_FUNCTION dump() const
Definition diagnostics/context.h:281
int m_n_opts
Definition diagnostics/context.h:661
column_options m_column_options
Definition diagnostics/context.h:772
void finish()
Definition diagnostics/context.cc:353
struct diagnostics::context::@123301224134201270027146024344211261116312212300 m_text_callbacks
bool emit_diagnostic_with_group(enum kind kind, rich_location &richloc, const metadata *metadata, option_id opt_id, const char *gmsgid,...) ATTRIBUTE_GCC_DIAG(6
Definition diagnostics/context.cc:1313
option_id m_opt_permissive
Definition diagnostics/context.h:699
void pop_urlifier()
Definition diagnostics/context.cc:580
void set_option_id_manager(std::unique_ptr< option_id_manager > option_id_mgr, unsigned lang_mask)
Definition diagnostics/context.cc:555
const char *const * get_original_argv()
Definition diagnostics/context.h:288
std::unique_ptr< client_data_hooks > set_client_data_hooks(std::unique_ptr< client_data_hooks > hooks)
Definition diagnostics/context.cc:533
friend class text_sink
Definition diagnostics/context.h:266
friend start_span_fn< to_text > & start_span(context *dc)
Definition diagnostics/context.h:873
void set_show_cwe(bool val)
Definition diagnostics/context.h:411
changes::change_set * get_fixits_change_set() const
Definition diagnostics/context.h:452
counters m_diagnostic_counters
Definition diagnostics/context.h:654
text_art::theme * m_theme
Definition diagnostics/context.h:839
int pch_restore(FILE *f)
Definition diagnostics/context.h:534
unsigned m_lang_mask
Definition diagnostics/context.h:746
buffer * get_diagnostic_buffer() const
Definition diagnostics/context.h:541
void pop_nesting_level()
Definition diagnostics/context.cc:1855
void report_global_digraph(const lazily_created< digraphs::digraph > &)
Definition diagnostics/context.cc:1594
void set_escape_format(enum diagnostics_escape_format val)
Definition diagnostics/context.h:424
void push_diagnostics(location_t where)
Definition diagnostics/context.h:357
void set_nesting_level(int new_level)
Definition diagnostics/context.cc:1863
logging::logger * get_logger()
Definition diagnostics/context.h:283
void set_fatal_errors(bool fatal_errors)
Definition diagnostics/context.h:588
void remove_all_output_sinks()
Definition diagnostics/context.cc:481
void set_abort_on_error(bool val)
Definition diagnostics/context.h:567
bool m_permissive
Definition diagnostics/context.h:694
void(* m_adjust_diagnostic_info)(const context &, diagnostic_info *)
Definition diagnostics/context.h:741
void set_show_highlight_colors(bool val)
Definition diagnostics/context.cc:641
bool m_inhibit_notes_p
Definition diagnostics/context.h:769
void initialize_input_context(diagnostic_input_charset_callback ccb, bool should_skip_bom)
Definition diagnostics/context.cc:344
void end_group()
Definition diagnostics/context.cc:1827
void set_format_decoder(printer_fn format_decoder)
Definition diagnostics/context.cc:633
int m_group_nesting_depth
Definition diagnostics/context.h:795
int m_emission_count
Definition diagnostics/context.h:802
file_cache * m_file_cache
Definition diagnostics/context.h:651
bool m_show_rules
Definition diagnostics/context.h:671
client_data_hooks * m_client_data_hooks
Definition diagnostics/context.h:830
void inhibit_notes()
Definition diagnostics/context.h:609
bool bool diagnostic_n_impl(rich_location *, const metadata *, option_id, unsigned HOST_WIDE_INT, const char *, const char *, va_list *, enum kind) ATTRIBUTE_GCC_DIAG(7
Definition diagnostics/context.cc:1698
label_text get_option_url(option_id opt_id) const
Definition diagnostics/context.h:496
friend text_finalizer_fn & text_finalizer(context *dc)
Definition diagnostics/context.h:881
bool notes_inhibited_in_group() const
Definition diagnostics/context.cc:1093
int m_diagnostic_nesting_level
Definition diagnostics/context.h:798
int & diagnostic_count(enum kind kind)
Definition diagnostics/context.h:468
void clear_diagnostic_buffer(buffer &)
Definition buffering.cc:79
bool show_path_depths_p() const
Definition diagnostics/context.h:437
int m_max_errors
Definition diagnostics/context.h:713
void set_adjust_diagnostic_info_callback(void(*cb)(const context &, diagnostic_info *))
Definition diagnostics/context.h:602
unsigned get_lang_mask() const
Definition diagnostics/context.h:507
const logical_locations::manager * get_logical_location_manager() const
Definition diagnostics/context.cc:591
void set_set_locations_callback(set_locations_callback_t cb)
Definition diagnostics/context.h:293
bool m_show_column
Definition diagnostics/context.h:688
auto_vec< urlifier_stack_node > * m_urlifier_stack
Definition diagnostics/context.h:757
bool m_warn_system_headers
Definition diagnostics/context.h:709
const column_options & get_column_options() const
Definition diagnostics/context.h:623
pretty_printer * get_reference_printer() const
Definition diagnostics/context.h:553
void color_init(int value)
Definition diagnostics/context.cc:255
char ** m_original_argv
Definition diagnostics/context.h:844
void report_verbatim(text_info &)
Definition diagnostics/context.cc:1580
void set_prefixing_rule(diagnostic_prefixing_rule_t rule)
Definition diagnostics/context.cc:650
void set_warning_as_error_requested(bool val)
Definition diagnostics/context.h:402
source_printing_options & get_source_printing_options()
Definition diagnostics/context.h:612
void set_extra_output_kind(enum diagnostics_extra_output_kind kind)
Definition diagnostics/context.h:407
void set_show_path_depths(bool val)
Definition diagnostics/context.h:418
start_span_fn< to_html > m_html_start_span
Definition diagnostics/context.h:730
void set_show_option_requested(bool val)
Definition diagnostics/context.h:419
void(* set_locations_callback_t)(const context &, diagnostic_info *)
Definition diagnostics/context.h:269
void push_borrowed_urlifier(const urlifier &)
Definition diagnostics/context.cc:572
location_t m_last_location
Definition diagnostics/context.h:764
option_classifier m_option_classifier
Definition diagnostics/context.h:664
char * build_indent_prefix() const
void set_original_argv(unique_argv original_argv)
Definition diagnostics/context.cc:542
void classify_diagnostic(option_id opt_id, enum kind new_kind, location_t where)
Definition diagnostics/context.h:343
option_id_manager * m_option_id_mgr
Definition diagnostics/context.h:745
bool bool bool report_diagnostic(diagnostic_info *)
Definition diagnostics/context.cc:1358
std::unique_ptr< pretty_printer > clone_printer() const
Definition diagnostics/context.h:548
void initialize(int n_opts)
Definition diagnostics/context.cc:138
friend class source_print_policy
Definition diagnostics/context.h:265
void set_internal_error_callback(void(*cb)(context *, const char *, va_list *))
Definition diagnostics/context.h:594
void push_nesting_level()
Definition diagnostics/context.cc:1849
void set_max_errors(int val)
Definition diagnostics/context.h:423
void push_owned_urlifier(std::unique_ptr< urlifier >)
Definition diagnostics/context.cc:564
friend text_starter_fn & text_starter(context *dc)
Definition diagnostics/context.h:864
bool execution_failed_p() const
Definition diagnostics/context.cc:472
void add_sink(std::unique_ptr< sink >)
Definition diagnostics/context.cc:506
void pop_diagnostics(location_t where)
Definition diagnostics/context.h:366
file_cache & get_file_cache() const
Definition diagnostics/context.h:446
int m_lock
Definition diagnostics/context.h:767
bool m_fatal_errors
Definition diagnostics/context.h:702
void inhibit_notes_in_group(bool inhibit=true)
Definition diagnostics/context.cc:1063
void action_after_output(enum kind diag_kind)
Definition diagnostics/context.cc:979
void initialize_fixits_change_set()
Definition diagnostics/context.cc:659
bool warning_as_error_requested_p() const
Definition diagnostics/context.h:433
struct diagnostics::context::@341201264073143215367363357234376160363014117137 m_diagnostic_groups
text_art::theme * get_diagram_theme() const
Definition diagnostics/context.h:466
logging::logger * m_logger
Definition diagnostics/context.h:858
bool option_unspecified_p(option_id opt_id) const
Definition diagnostics/context.h:311
label_text get_option_name(option_id opt_id, enum kind orig_diag_kind, enum kind diag_kind) const
Definition diagnostics/context.h:485
void set_permissive_option(option_id opt_permissive)
Definition diagnostics/context.h:582
void emit_diagram(const diagram &diag)
Definition diagnostics/context.cc:1740
bool bool int get_diagnostic_nesting_level() const
Definition diagnostics/context.h:520
struct diagnostics::context::@315143341136332350101266143205316065242223315254 m_diagrams
bool m_inhibit_warnings
Definition diagnostics/context.h:706
bool m_report_bug
Definition diagnostics/context.h:775
enum diagnostic_path_format get_path_format() const
Definition diagnostics/context.h:439
void set_pretty_printer(std::unique_ptr< pretty_printer > pp)
Definition diagnostics/context.cc:613
const source_printing_options & get_source_printing_options() const
Definition diagnostics/context.h:617
void set_caret_max_width(int value)
Definition diagnostics/context.cc:122
int pch_save(FILE *f)
Definition diagnostics/context.h:528
source_printing_options m_source_printing
Definition diagnostics/context.h:771
const urlifier * get_urlifier() const
Definition diagnostics/context.cc:599
void set_sink(std::unique_ptr< sink > sink_)
Definition diagnostics/context.cc:488
enum diagnostics_extra_output_kind m_extra_output_kind
Definition diagnostics/context.h:780
void error_recursion() ATTRIBUTE_NORETURN
Definition diagnostics/context.cc:1755
void begin_group()
Definition diagnostics/context.cc:1821
bool m_pedantic_errors
Definition diagnostics/context.h:691
void check_max_errors(bool flush)
Definition diagnostics/context.cc:955
void maybe_show_locus_as_html(const rich_location &richloc, const source_printing_options &opts, enum kind diagnostic_kind, xml::printer &xp, source_effect_info *effect_info, html_label_writer *label_writer)
Definition source-printing.cc:3892
int m_inhibiting_notes_from
Definition diagnostics/context.h:805
column_options & get_column_options()
Definition diagnostics/context.h:622
bool m_show_cwe
Definition diagnostics/context.h:668
auto_vec< sink * > m_sinks
Definition diagnostics/context.h:816
void set_show_rules(bool val)
Definition diagnostics/context.h:412
sink & get_sink(size_t idx) const
Definition diagnostics/context.cc:498
void set_show_nesting_locations(bool val)
Definition diagnostics/context.cc:324
auto & get_classification_history()
Definition diagnostics/context.h:574
changes::change_set * m_fixits_change_set
Definition diagnostics/context.h:790
void urls_init(int value)
Definition diagnostics/context.cc:286
void set_text_art_charset(enum diagnostic_text_art_charset charset)
Definition diagnostics/context.cc:1936
void set_path_format(enum diagnostic_path_format val)
Definition diagnostics/context.h:414
bool m_show_option_requested
Definition diagnostics/context.h:681
bool bool emit_diagnostic_with_group_va(enum kind kind, rich_location &richloc, const metadata *metadata, option_id opt_id, const char *gmsgid, va_list *ap) ATTRIBUTE_GCC_DIAG(6
Definition diagnostics/context.cc:1335
bool diagnostic_enabled(diagnostic_info *diagnostic)
Definition diagnostics/context.cc:1251
enum diagnostics_escape_format get_escape_format() const
Definition diagnostics/context.h:440
friend class buffer
Definition diagnostics/context.h:267
void set_show_nesting_levels(bool val)
Definition diagnostics/context.cc:333
Definition diagnostics/digraphs.h:123
Definition file-cache.h:82
Definition diagnostics/context.h:146
virtual ~html_label_writer()
Definition diagnostics/context.h:148
virtual void end_label()=0
virtual void begin_label()=0
Definition diagnostics/context.h:117
bool show_column_p() const
Definition diagnostics/context.h:122
void print_text_span_start(const context &dc, pretty_printer &pp, const expanded_location &exploc)
Definition source-printing.cc:692
column_policy m_column_policy
Definition diagnostics/context.h:138
bool m_show_column
Definition diagnostics/context.h:139
location_print_policy(const context &dc)
Definition diagnostics/context.cc:839
const column_policy & get_column_policy() const
Definition diagnostics/context.h:125
void print_html_span_start(const context &dc, xml::printer &xp, const expanded_location &exploc)
Definition source-printing.cc:703
log_function_params & log_param_location_t(const char *name, location_t value)
Definition logging.h:123
log_function_params & log_param_option_id(const char *name, diagnostics::option_id value)
Definition logging.h:149
log_function_params & log_param_kind(const char *name, enum diagnostics::kind value)
Definition logging.h:160
Definition logical-locations.h:147
Definition option-classifier.h:37
Definition option-id-manager.h:29
Definition source-printing-effects.h:43
Definition diagnostics/context.h:158
location_print_policy m_location_policy
Definition diagnostics/context.h:210
void print_as_html(xml::printer &xp, const rich_location &richloc, enum kind diagnostic_kind, source_effect_info *effect_info, html_label_writer *label_writer) const
Definition source-printing.cc:3970
start_span_fn< to_html > m_html_start_span_cb
Definition diagnostics/context.h:212
const location_print_policy & get_location_policy() const
Definition diagnostics/context.h:203
file_cache & m_file_cache
Definition diagnostics/context.h:213
start_span_fn< to_text > get_text_start_span_fn() const
Definition diagnostics/context.h:181
text_art::theme * get_diagram_theme() const
Definition diagnostics/context.h:196
enum diagnostics_escape_format m_escape_format
Definition diagnostics/context.h:217
const column_policy & get_column_policy() const
Definition diagnostics/context.h:198
const source_printing_options & m_options
Definition diagnostics/context.h:209
start_span_fn< to_text > m_text_start_span_cb
Definition diagnostics/context.h:211
source_print_policy(const context &)
Definition source-printing.cc:3924
enum diagnostics_escape_format get_escape_format() const
Definition diagnostics/context.h:190
const source_printing_options & get_options() const
Definition diagnostics/context.h:178
void print(pretty_printer &pp, const rich_location &richloc, enum kind diagnostic_kind, source_effect_info *effect_info) const
Definition source-printing.cc:3953
file_cache & get_file_cache() const
Definition diagnostics/context.h:187
start_span_fn< to_html > get_html_start_span_fn() const
Definition diagnostics/context.h:184
text_art::theme * m_diagram_theme
Definition diagnostics/context.h:216
Definition text-sink.h:35
Definition lazily-created.h:31
Definition pretty-print.h:241
Definition pretty-print-urlifier.h:27
Definition xml-printer.h:33
diagnostics_escape_format
Definition context-options.h:41
diagnostic_text_art_charset
Definition context-options.h:101
diagnostic_path_format
Definition context-options.h:67
diagnostics_extra_output_kind
Definition context-options.h:86
const char *(* diagnostic_input_charset_callback)(const char *)
Definition coretypes.h:178
void ATTRIBUTE_NORETURN
Definition diagnostic-core.h:76
#define ATTRIBUTE_GCC_DIAG(m, n)
Definition diagnostic-core.h:71
Definition diagnostics/context.h:39
Definition diagnostics/context.h:41
pretty_printer * get_printer(to_text &)
Definition source-printing.cc:713
text_starter_fn & text_starter(context *dc)
Definition diagnostics/context.h:864
start_span_fn< to_text > & start_span(context *dc)
Definition diagnostics/context.h:873
text_finalizer_fn & text_finalizer(context *dc)
Definition diagnostics/context.h:881
void(* text_finalizer_fn)(text_sink &, const diagnostic_info *, enum kind)
Definition diagnostics/context.h:86
void(* text_starter_fn)(text_sink &, const diagnostic_info *)
Definition diagnostics/context.h:73
void(*)(const location_print_policy &, TextOrHtml &text_or_html, expanded_location) start_span_fn
Definition diagnostics/context.h:82
kind
Definition kinds.h:27
Definition analyzer-logging.h:28
bool(* printer_fn)(pretty_printer *, text_info *, const char *, int, bool, bool, bool, bool *, pp_token_list &)
Definition pretty-print.h:190
diagnostic_prefixing_rule_t
Definition pretty-print.h:66
static void const char va_list ap
Definition read-md.cc:205
Definition libgdiagnostics.cc:1131
Definition column-options.h:28
Definition diagnostics/context.h:753
bool m_owned
Definition diagnostics/context.h:755
urlifier * m_urlifier
Definition diagnostics/context.h:754
Definition diagnostic-info.h:32
Definition option-id.h:32
Definition source-printing-options.h:31
Definition source-printing.cc:545
Definition source-printing.cc:409
Definition pretty-print.h:34
Definition unique-argv.h:28
#define gcc_assert(EXPR)
Definition system.h:820
#define DEBUG_FUNCTION
Definition system.h:1192