20#ifndef GCC_DIAGNOSTICS_CONTEXT_H
21#define GCC_DIAGNOSTICS_CONTEXT_H
80template <
typename TextOrHtml>
82 TextOrHtml &text_or_html,
102 bool colorize)
const;
129 const expanded_location &exploc);
134 const expanded_location &exploc);
165 const rich_location &richloc,
166 enum kind diagnostic_kind,
171 const rich_location &richloc,
172 enum kind diagnostic_kind,
279 void dump (FILE *out,
int indent)
const;
299 bool should_skip_bom);
316 rich_location &richloc,
319 const char *gmsgid, ...)
322 rich_location &richloc,
325 const
char *gmsgid, va_list *
ap)
342 (
m_logger,
"diagnostics::context::classify_diagnostics")
357 (
m_logger,
"diagnostics::context::push_diagnostics")
366 (
m_logger,
"diagnostics::context::pop_diagnostics")
375 enum kind diagnostic_kind,
380 enum kind diagnostic_kind,
388 void set_sink (std::unique_ptr<sink> sink_);
481 enum kind orig_diag_kind,
482 enum kind diag_kind)
const
512 const char *,
const char *, va_list *,
Definition buffering.h:59
Definition client-data-hooks.h:35
Definition diagnostics/context.h:94
int get_tabstop() const
Definition diagnostics/context.h:104
file_cache & m_file_cache
Definition diagnostics/context.h:107
column_options m_column_options
Definition diagnostics/context.h:108
label_text get_location_text(const expanded_location &s, bool show_column, bool colorize) const
Definition diagnostics/context.cc:797
int converted_column(expanded_location s) const
Definition diagnostics/context.cc:789
column_policy(const context &dc)
Definition diagnostics/context.cc:779
Definition diagnostics/context.h:253
void set_report_bug(bool val)
Definition diagnostics/context.h:401
start_span_fn< to_text > m_text_start_span
Definition diagnostics/context.h:724
void set_main_input_filename(const char *filename)
Definition diagnostics/context.cc:519
pretty_printer * m_reference_printer
Definition diagnostics/context.h:641
bool diagnostic_impl(rich_location *, const metadata *, option_id, const char *, va_list *, enum kind) ATTRIBUTE_GCC_DIAG(5
Definition diagnostics/context.cc:1632
void set_show_nesting(bool val)
Definition diagnostics/context.cc:315
text_starter_fn m_begin_diagnostic
Definition diagnostics/context.h:719
void get_any_inlining_info(diagnostic_info *diagnostic)
Definition diagnostics/context.cc:1192
bool option_enabled_p(option_id opt_id) const
Definition diagnostics/context.h:473
set_locations_callback_t m_set_locations_cb
Definition diagnostics/context.h:817
bool m_abort_on_error
Definition diagnostics/context.h:679
void set_diagnostic_buffer(buffer *)
Definition buffering.cc:40
bool m_show_path_depths
Definition diagnostics/context.h:672
bool supports_fnotice_on_stderr_p() const
Definition diagnostics/context.cc:510
buffer * m_diagnostic_buffer
Definition diagnostics/context.h:848
void(* m_internal_error)(context *, const char *, va_list *)
Definition diagnostics/context.h:732
text_finalizer_fn m_end_diagnostic
Definition diagnostics/context.h:728
enum diagnostic_path_format m_path_format
Definition diagnostics/context.h:669
enum diagnostics_escape_format m_escape_format
Definition diagnostics/context.h:779
void refresh_output_sinks()
Definition diagnostics/context.cc:615
const client_data_hooks * get_client_data_hooks() const
Definition diagnostics/context.h:451
bool warning_enabled_at(location_t loc, option_id opt_id)
Definition diagnostics/context.cc:1268
int diagnostic_count(enum kind kind) const
Definition diagnostics/context.h:467
void * m_client_aux_data
Definition diagnostics/context.h:756
void flush_diagnostic_buffer(buffer &)
Definition buffering.cc:90
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:652
void DEBUG_FUNCTION dump() const
Definition diagnostics/context.h:280
int m_n_opts
Definition diagnostics/context.h:656
column_options m_column_options
Definition diagnostics/context.h:767
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:1286
option_id m_opt_permissive
Definition diagnostics/context.h:694
void pop_urlifier()
Definition diagnostics/context.cc:572
void set_option_id_manager(std::unique_ptr< option_id_manager > option_id_mgr, unsigned lang_mask)
Definition diagnostics/context.cc:547
const char *const * get_original_argv()
Definition diagnostics/context.h:287
friend class text_sink
Definition diagnostics/context.h:265
friend start_span_fn< to_text > & start_span(context *dc)
Definition diagnostics/context.h:868
void set_show_cwe(bool val)
Definition diagnostics/context.h:406
changes::change_set * get_fixits_change_set() const
Definition diagnostics/context.h:447
counters m_diagnostic_counters
Definition diagnostics/context.h:649
text_art::theme * m_theme
Definition diagnostics/context.h:834
int pch_restore(FILE *f)
Definition diagnostics/context.h:529
unsigned m_lang_mask
Definition diagnostics/context.h:741
buffer * get_diagnostic_buffer() const
Definition diagnostics/context.h:536
void pop_nesting_level()
Definition diagnostics/context.cc:1829
void report_global_digraph(const lazily_created< digraphs::digraph > &)
Definition diagnostics/context.cc:1567
void set_escape_format(enum diagnostics_escape_format val)
Definition diagnostics/context.h:419
void push_diagnostics(location_t where)
Definition diagnostics/context.h:354
void set_nesting_level(int new_level)
Definition diagnostics/context.cc:1837
logging::logger * get_logger()
Definition diagnostics/context.h:282
void set_fatal_errors(bool fatal_errors)
Definition diagnostics/context.h:583
void remove_all_output_sinks()
Definition diagnostics/context.cc:474
void set_abort_on_error(bool val)
Definition diagnostics/context.h:562
bool m_permissive
Definition diagnostics/context.h:689
void(* m_adjust_diagnostic_info)(const context &, diagnostic_info *)
Definition diagnostics/context.h:736
void set_show_highlight_colors(bool val)
Definition diagnostics/context.cc:633
bool m_inhibit_notes_p
Definition diagnostics/context.h:764
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:1801
void set_format_decoder(printer_fn format_decoder)
Definition diagnostics/context.cc:625
int m_group_nesting_depth
Definition diagnostics/context.h:790
int m_emission_count
Definition diagnostics/context.h:797
file_cache * m_file_cache
Definition diagnostics/context.h:646
bool m_show_rules
Definition diagnostics/context.h:666
client_data_hooks * m_client_data_hooks
Definition diagnostics/context.h:825
void inhibit_notes()
Definition diagnostics/context.h:604
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:1672
friend text_finalizer_fn & text_finalizer(context *dc)
Definition diagnostics/context.h:876
bool notes_inhibited_in_group() const
Definition diagnostics/context.cc:1066
int m_diagnostic_nesting_level
Definition diagnostics/context.h:793
int & diagnostic_count(enum kind kind)
Definition diagnostics/context.h:463
void clear_diagnostic_buffer(buffer &)
Definition buffering.cc:74
bool show_path_depths_p() const
Definition diagnostics/context.h:432
int m_max_errors
Definition diagnostics/context.h:708
void set_adjust_diagnostic_info_callback(void(*cb)(const context &, diagnostic_info *))
Definition diagnostics/context.h:597
unsigned get_lang_mask() const
Definition diagnostics/context.h:502
const logical_locations::manager * get_logical_location_manager() const
Definition diagnostics/context.cc:583
void set_set_locations_callback(set_locations_callback_t cb)
Definition diagnostics/context.h:292
bool m_show_column
Definition diagnostics/context.h:683
auto_vec< urlifier_stack_node > * m_urlifier_stack
Definition diagnostics/context.h:752
bool m_warn_system_headers
Definition diagnostics/context.h:704
const column_options & get_column_options() const
Definition diagnostics/context.h:618
pretty_printer * get_reference_printer() const
Definition diagnostics/context.h:548
void color_init(int value)
Definition diagnostics/context.cc:255
char ** m_original_argv
Definition diagnostics/context.h:839
void report_verbatim(text_info &)
Definition diagnostics/context.cc:1553
void set_prefixing_rule(diagnostic_prefixing_rule_t rule)
Definition diagnostics/context.cc:642
void set_warning_as_error_requested(bool val)
Definition diagnostics/context.h:397
source_printing_options & get_source_printing_options()
Definition diagnostics/context.h:607
void set_extra_output_kind(enum diagnostics_extra_output_kind kind)
Definition diagnostics/context.h:402
void set_show_path_depths(bool val)
Definition diagnostics/context.h:413
start_span_fn< to_html > m_html_start_span
Definition diagnostics/context.h:725
void set_show_option_requested(bool val)
Definition diagnostics/context.h:414
void(* set_locations_callback_t)(const context &, diagnostic_info *)
Definition diagnostics/context.h:268
void push_borrowed_urlifier(const urlifier &)
Definition diagnostics/context.cc:564
location_t m_last_location
Definition diagnostics/context.h:759
option_classifier m_option_classifier
Definition diagnostics/context.h:659
char * build_indent_prefix() const
void set_original_argv(unique_argv original_argv)
Definition diagnostics/context.cc:534
option_id_manager * m_option_id_mgr
Definition diagnostics/context.h:740
bool bool bool report_diagnostic(diagnostic_info *)
Definition diagnostics/context.cc:1331
std::unique_ptr< pretty_printer > clone_printer() const
Definition diagnostics/context.h:543
void initialize(int n_opts)
Definition diagnostics/context.cc:138
friend class source_print_policy
Definition diagnostics/context.h:264
void set_internal_error_callback(void(*cb)(context *, const char *, va_list *))
Definition diagnostics/context.h:589
enum kind classify_diagnostic(option_id opt_id, enum kind new_kind, location_t where)
Definition diagnostics/context.h:337
void push_nesting_level()
Definition diagnostics/context.cc:1823
void set_max_errors(int val)
Definition diagnostics/context.h:418
char * make_option_name(option_id opt_id, enum kind orig_diag_kind, enum kind diag_kind) const
Definition diagnostics/context.h:480
void push_owned_urlifier(std::unique_ptr< urlifier >)
Definition diagnostics/context.cc:556
friend text_starter_fn & text_starter(context *dc)
Definition diagnostics/context.h:859
bool execution_failed_p() const
Definition diagnostics/context.cc:464
void add_sink(std::unique_ptr< sink >)
Definition diagnostics/context.cc:499
void pop_diagnostics(location_t where)
Definition diagnostics/context.h:363
file_cache & get_file_cache() const
Definition diagnostics/context.h:441
int m_lock
Definition diagnostics/context.h:762
bool m_fatal_errors
Definition diagnostics/context.h:697
void inhibit_notes_in_group(bool inhibit=true)
Definition diagnostics/context.cc:1036
void action_after_output(enum kind diag_kind)
Definition diagnostics/context.cc:959
void initialize_fixits_change_set()
Definition diagnostics/context.cc:651
bool warning_as_error_requested_p() const
Definition diagnostics/context.h:428
struct diagnostics::context::@341201264073143215367363357234376160363014117137 m_diagnostic_groups
void set_client_data_hooks(std::unique_ptr< client_data_hooks > hooks)
Definition diagnostics/context.cc:526
text_art::theme * get_diagram_theme() const
Definition diagnostics/context.h:461
logging::logger * m_logger
Definition diagnostics/context.h:853
bool option_unspecified_p(option_id opt_id) const
Definition diagnostics/context.h:310
void set_permissive_option(option_id opt_permissive)
Definition diagnostics/context.h:577
void emit_diagram(const diagram &diag)
Definition diagnostics/context.cc:1714
bool bool int get_diagnostic_nesting_level() const
Definition diagnostics/context.h:515
struct diagnostics::context::@315143341136332350101266143205316065242223315254 m_diagrams
char * make_option_url(option_id opt_id) const
Definition diagnostics/context.h:491
bool m_inhibit_warnings
Definition diagnostics/context.h:701
bool m_report_bug
Definition diagnostics/context.h:770
enum diagnostic_path_format get_path_format() const
Definition diagnostics/context.h:434
void set_pretty_printer(std::unique_ptr< pretty_printer > pp)
Definition diagnostics/context.cc:605
const source_printing_options & get_source_printing_options() const
Definition diagnostics/context.h:612
void set_caret_max_width(int value)
Definition diagnostics/context.cc:122
int pch_save(FILE *f)
Definition diagnostics/context.h:523
source_printing_options m_source_printing
Definition diagnostics/context.h:766
const urlifier * get_urlifier() const
Definition diagnostics/context.cc:591
void set_sink(std::unique_ptr< sink > sink_)
Definition diagnostics/context.cc:481
enum diagnostics_extra_output_kind m_extra_output_kind
Definition diagnostics/context.h:775
void error_recursion() ATTRIBUTE_NORETURN
Definition diagnostics/context.cc:1729
void begin_group()
Definition diagnostics/context.cc:1795
bool m_pedantic_errors
Definition diagnostics/context.h:686
void check_max_errors(bool flush)
Definition diagnostics/context.cc:935
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:800
column_options & get_column_options()
Definition diagnostics/context.h:617
bool m_show_cwe
Definition diagnostics/context.h:663
auto_vec< sink * > m_sinks
Definition diagnostics/context.h:811
void set_show_rules(bool val)
Definition diagnostics/context.h:407
sink & get_sink(size_t idx) const
Definition diagnostics/context.cc:491
void set_show_nesting_locations(bool val)
Definition diagnostics/context.cc:324
auto & get_classification_history()
Definition diagnostics/context.h:569
changes::change_set * m_fixits_change_set
Definition diagnostics/context.h:785
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:1896
void set_path_format(enum diagnostic_path_format val)
Definition diagnostics/context.h:409
bool m_show_option_requested
Definition diagnostics/context.h:676
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:1308
bool diagnostic_enabled(diagnostic_info *diagnostic)
Definition diagnostics/context.cc:1224
enum diagnostics_escape_format get_escape_format() const
Definition diagnostics/context.h:435
friend class buffer
Definition diagnostics/context.h:266
void set_show_nesting_levels(bool val)
Definition diagnostics/context.cc:333
Definition file-cache.h:82
Definition diagnostics/context.h:145
virtual ~html_label_writer()
Definition diagnostics/context.h:147
virtual void end_label()=0
virtual void begin_label()=0
Definition diagnostics/context.h:116
bool show_column_p() const
Definition diagnostics/context.h:121
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:137
bool m_show_column
Definition diagnostics/context.h:138
location_print_policy(const context &dc)
Definition diagnostics/context.cc:819
const column_policy & get_column_policy() const
Definition diagnostics/context.h:124
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:33
Definition option-id-manager.h:29
Definition source-printing-effects.h:43
Definition diagnostics/context.h:157
location_print_policy m_location_policy
Definition diagnostics/context.h:209
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:211
const location_print_policy & get_location_policy() const
Definition diagnostics/context.h:202
file_cache & m_file_cache
Definition diagnostics/context.h:212
start_span_fn< to_text > get_text_start_span_fn() const
Definition diagnostics/context.h:180
text_art::theme * get_diagram_theme() const
Definition diagnostics/context.h:195
enum diagnostics_escape_format m_escape_format
Definition diagnostics/context.h:216
const column_policy & get_column_policy() const
Definition diagnostics/context.h:197
const source_printing_options & m_options
Definition diagnostics/context.h:208
start_span_fn< to_text > m_text_start_span_cb
Definition diagnostics/context.h:210
source_print_policy(const context &)
Definition source-printing.cc:3924
enum diagnostics_escape_format get_escape_format() const
Definition diagnostics/context.h:189
const source_printing_options & get_options() const
Definition diagnostics/context.h:177
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:186
start_span_fn< to_html > get_html_start_span_fn() const
Definition diagnostics/context.h:183
text_art::theme * m_diagram_theme
Definition diagnostics/context.h:215
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:173
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
Definition coretypes.h:167
pretty_printer * get_printer(to_text &)
Definition source-printing.cc:713
text_starter_fn & text_starter(context *dc)
Definition diagnostics/context.h:859
start_span_fn< to_text > & start_span(context *dc)
Definition diagnostics/context.h:868
text_finalizer_fn & text_finalizer(context *dc)
Definition diagnostics/context.h:876
void(* text_finalizer_fn)(text_sink &, const diagnostic_info *, enum kind)
Definition diagnostics/context.h:85
void(* text_starter_fn)(text_sink &, const diagnostic_info *)
Definition diagnostics/context.h:72
kind
Definition kinds.h:27
void(*)(const location_print_policy &, TextOrHtml &text_or_html, expanded_location) start_span_fn
Definition diagnostics/context.h:81
Definition diagnostics/context.h:56
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:1249
Definition column-options.h:28
Definition diagnostics/context.h:748
bool m_owned
Definition diagnostics/context.h:750
urlifier * m_urlifier
Definition diagnostics/context.h:749
Definition diagnostic-info.h:32
Definition option-id.h:32
Definition source-printing-options.h:29
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:814
#define DEBUG_FUNCTION
Definition system.h:1236