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);
317 rich_location &richloc,
320 const char *gmsgid, ...)
323 rich_location &richloc,
326 const
char *gmsgid, va_list *
ap)
343 (
m_logger,
"diagnostics::context::classify_diagnostics")
358 (
m_logger,
"diagnostics::context::push_diagnostics")
367 (
m_logger,
"diagnostics::context::pop_diagnostics")
376 enum kind diagnostic_kind,
381 enum kind diagnostic_kind,
389 void set_sink (std::unique_ptr<sink> sink_);
392 std::unique_ptr<client_data_hooks>
484 enum kind orig_diag_kind,
485 enum kind diag_kind)
const
515 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:404
start_span_fn< to_text > m_text_start_span
Definition diagnostics/context.h:727
void set_main_input_filename(const char *filename)
Definition diagnostics/context.cc:526
pretty_printer * m_reference_printer
Definition diagnostics/context.h:644
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:722
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:476
set_locations_callback_t m_set_locations_cb
Definition diagnostics/context.h:820
bool m_abort_on_error
Definition diagnostics/context.h:682
void set_diagnostic_buffer(buffer *)
Definition buffering.cc:40
bool m_show_path_depths
Definition diagnostics/context.h:675
bool supports_fnotice_on_stderr_p() const
Definition diagnostics/context.cc:517
buffer * m_diagnostic_buffer
Definition diagnostics/context.h:851
void(* m_internal_error)(context *, const char *, va_list *)
Definition diagnostics/context.h:735
text_finalizer_fn m_end_diagnostic
Definition diagnostics/context.h:731
enum diagnostic_path_format m_path_format
Definition diagnostics/context.h:672
enum diagnostics_escape_format m_escape_format
Definition diagnostics/context.h:782
void refresh_output_sinks()
Definition diagnostics/context.cc:623
const client_data_hooks * get_client_data_hooks() const
Definition diagnostics/context.h:454
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:470
void * m_client_aux_data
Definition diagnostics/context.h:759
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:655
void DEBUG_FUNCTION dump() const
Definition diagnostics/context.h:281
int m_n_opts
Definition diagnostics/context.h:659
column_options m_column_options
Definition diagnostics/context.h:770
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:697
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:871
void set_show_cwe(bool val)
Definition diagnostics/context.h:409
changes::change_set * get_fixits_change_set() const
Definition diagnostics/context.h:450
counters m_diagnostic_counters
Definition diagnostics/context.h:652
text_art::theme * m_theme
Definition diagnostics/context.h:837
int pch_restore(FILE *f)
Definition diagnostics/context.h:532
unsigned m_lang_mask
Definition diagnostics/context.h:744
buffer * get_diagnostic_buffer() const
Definition diagnostics/context.h:539
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:422
void push_diagnostics(location_t where)
Definition diagnostics/context.h:355
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:586
void remove_all_output_sinks()
Definition diagnostics/context.cc:481
void set_abort_on_error(bool val)
Definition diagnostics/context.h:565
bool m_permissive
Definition diagnostics/context.h:692
void(* m_adjust_diagnostic_info)(const context &, diagnostic_info *)
Definition diagnostics/context.h:739
void set_show_highlight_colors(bool val)
Definition diagnostics/context.cc:641
bool m_inhibit_notes_p
Definition diagnostics/context.h:767
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:793
int m_emission_count
Definition diagnostics/context.h:800
file_cache * m_file_cache
Definition diagnostics/context.h:649
bool m_show_rules
Definition diagnostics/context.h:669
client_data_hooks * m_client_data_hooks
Definition diagnostics/context.h:828
void inhibit_notes()
Definition diagnostics/context.h:607
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
friend text_finalizer_fn & text_finalizer(context *dc)
Definition diagnostics/context.h:879
bool notes_inhibited_in_group() const
Definition diagnostics/context.cc:1093
int m_diagnostic_nesting_level
Definition diagnostics/context.h:796
int & diagnostic_count(enum kind kind)
Definition diagnostics/context.h:466
void clear_diagnostic_buffer(buffer &)
Definition buffering.cc:79
bool show_path_depths_p() const
Definition diagnostics/context.h:435
int m_max_errors
Definition diagnostics/context.h:711
void set_adjust_diagnostic_info_callback(void(*cb)(const context &, diagnostic_info *))
Definition diagnostics/context.h:600
unsigned get_lang_mask() const
Definition diagnostics/context.h:505
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:686
auto_vec< urlifier_stack_node > * m_urlifier_stack
Definition diagnostics/context.h:755
bool m_warn_system_headers
Definition diagnostics/context.h:707
const column_options & get_column_options() const
Definition diagnostics/context.h:621
pretty_printer * get_reference_printer() const
Definition diagnostics/context.h:551
void color_init(int value)
Definition diagnostics/context.cc:255
char ** m_original_argv
Definition diagnostics/context.h:842
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:400
source_printing_options & get_source_printing_options()
Definition diagnostics/context.h:610
void set_extra_output_kind(enum diagnostics_extra_output_kind kind)
Definition diagnostics/context.h:405
void set_show_path_depths(bool val)
Definition diagnostics/context.h:416
start_span_fn< to_html > m_html_start_span
Definition diagnostics/context.h:728
void set_show_option_requested(bool val)
Definition diagnostics/context.h:417
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:762
option_classifier m_option_classifier
Definition diagnostics/context.h:662
char * build_indent_prefix() const
void set_original_argv(unique_argv original_argv)
Definition diagnostics/context.cc:542
option_id_manager * m_option_id_mgr
Definition diagnostics/context.h:743
bool bool bool report_diagnostic(diagnostic_info *)
Definition diagnostics/context.cc:1358
std::unique_ptr< pretty_printer > clone_printer() const
Definition diagnostics/context.h:546
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:592
enum kind classify_diagnostic(option_id opt_id, enum kind new_kind, location_t where)
Definition diagnostics/context.h:338
void push_nesting_level()
Definition diagnostics/context.cc:1849
void set_max_errors(int val)
Definition diagnostics/context.h:421
char * make_option_name(option_id opt_id, enum kind orig_diag_kind, enum kind diag_kind) const
Definition diagnostics/context.h:483
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:862
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:364
file_cache & get_file_cache() const
Definition diagnostics/context.h:444
int m_lock
Definition diagnostics/context.h:765
bool m_fatal_errors
Definition diagnostics/context.h:700
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:431
struct diagnostics::context::@341201264073143215367363357234376160363014117137 m_diagnostic_groups
text_art::theme * get_diagram_theme() const
Definition diagnostics/context.h:464
logging::logger * m_logger
Definition diagnostics/context.h:856
bool option_unspecified_p(option_id opt_id) const
Definition diagnostics/context.h:311
void set_permissive_option(option_id opt_permissive)
Definition diagnostics/context.h:580
void emit_diagram(const diagram &diag)
Definition diagnostics/context.cc:1740
bool bool int get_diagnostic_nesting_level() const
Definition diagnostics/context.h:518
struct diagnostics::context::@315143341136332350101266143205316065242223315254 m_diagrams
char * make_option_url(option_id opt_id) const
Definition diagnostics/context.h:494
bool m_inhibit_warnings
Definition diagnostics/context.h:704
bool m_report_bug
Definition diagnostics/context.h:773
enum diagnostic_path_format get_path_format() const
Definition diagnostics/context.h:437
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:615
void set_caret_max_width(int value)
Definition diagnostics/context.cc:122
int pch_save(FILE *f)
Definition diagnostics/context.h:526
source_printing_options m_source_printing
Definition diagnostics/context.h:769
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:778
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:689
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:803
column_options & get_column_options()
Definition diagnostics/context.h:620
bool m_show_cwe
Definition diagnostics/context.h:666
auto_vec< sink * > m_sinks
Definition diagnostics/context.h:814
void set_show_rules(bool val)
Definition diagnostics/context.h:410
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:572
changes::change_set * m_fixits_change_set
Definition diagnostics/context.h:788
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:412
bool m_show_option_requested
Definition diagnostics/context.h:679
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:438
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:175
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:862
start_span_fn< to_text > & start_span(context *dc)
Definition diagnostics/context.h:871
text_finalizer_fn & text_finalizer(context *dc)
Definition diagnostics/context.h:879
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 diagnostics/context.h:57
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:1240
Definition column-options.h:28
Definition diagnostics/context.h:751
bool m_owned
Definition diagnostics/context.h:753
urlifier * m_urlifier
Definition diagnostics/context.h:752
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:817
#define DEBUG_FUNCTION
Definition system.h:1191