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_);
482 enum kind orig_diag_kind,
483 enum kind diag_kind)
const
513 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:813
int converted_column(expanded_location s) const
Definition diagnostics/context.cc:805
column_policy(const context &dc)
Definition diagnostics/context.cc:795
Definition diagnostics/context.h:254
void set_report_bug(bool val)
Definition diagnostics/context.h:402
start_span_fn< to_text > m_text_start_span
Definition diagnostics/context.h:725
void set_main_input_filename(const char *filename)
Definition diagnostics/context.cc:523
pretty_printer * m_reference_printer
Definition diagnostics/context.h:642
bool diagnostic_impl(rich_location *, const metadata *, option_id, const char *, va_list *, enum kind) ATTRIBUTE_GCC_DIAG(5
Definition diagnostics/context.cc:1648
void set_show_nesting(bool val)
Definition diagnostics/context.cc:315
text_starter_fn m_begin_diagnostic
Definition diagnostics/context.h:720
void get_any_inlining_info(diagnostic_info *diagnostic)
Definition diagnostics/context.cc:1208
bool option_enabled_p(option_id opt_id) const
Definition diagnostics/context.h:474
set_locations_callback_t m_set_locations_cb
Definition diagnostics/context.h:818
bool m_abort_on_error
Definition diagnostics/context.h:680
void set_diagnostic_buffer(buffer *)
Definition buffering.cc:39
bool m_show_path_depths
Definition diagnostics/context.h:673
bool supports_fnotice_on_stderr_p() const
Definition diagnostics/context.cc:514
buffer * m_diagnostic_buffer
Definition diagnostics/context.h:849
void(* m_internal_error)(context *, const char *, va_list *)
Definition diagnostics/context.h:733
text_finalizer_fn m_end_diagnostic
Definition diagnostics/context.h:729
enum diagnostic_path_format m_path_format
Definition diagnostics/context.h:670
enum diagnostics_escape_format m_escape_format
Definition diagnostics/context.h:780
void refresh_output_sinks()
Definition diagnostics/context.cc:619
const client_data_hooks * get_client_data_hooks() const
Definition diagnostics/context.h:452
bool warning_enabled_at(location_t loc, option_id opt_id)
Definition diagnostics/context.cc:1284
int diagnostic_count(enum kind kind) const
Definition diagnostics/context.h:468
void * m_client_aux_data
Definition diagnostics/context.h:757
void flush_diagnostic_buffer(buffer &)
Definition buffering.cc:94
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:653
void DEBUG_FUNCTION dump() const
Definition diagnostics/context.h:281
int m_n_opts
Definition diagnostics/context.h:657
column_options m_column_options
Definition diagnostics/context.h:768
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:1302
option_id m_opt_permissive
Definition diagnostics/context.h:695
void pop_urlifier()
Definition diagnostics/context.cc:576
void set_option_id_manager(std::unique_ptr< option_id_manager > option_id_mgr, unsigned lang_mask)
Definition diagnostics/context.cc:551
const char *const * get_original_argv()
Definition diagnostics/context.h:288
friend class text_sink
Definition diagnostics/context.h:266
friend start_span_fn< to_text > & start_span(context *dc)
Definition diagnostics/context.h:869
void set_show_cwe(bool val)
Definition diagnostics/context.h:407
changes::change_set * get_fixits_change_set() const
Definition diagnostics/context.h:448
counters m_diagnostic_counters
Definition diagnostics/context.h:650
text_art::theme * m_theme
Definition diagnostics/context.h:835
int pch_restore(FILE *f)
Definition diagnostics/context.h:530
unsigned m_lang_mask
Definition diagnostics/context.h:742
buffer * get_diagnostic_buffer() const
Definition diagnostics/context.h:537
void pop_nesting_level()
Definition diagnostics/context.cc:1845
void report_global_digraph(const lazily_created< digraphs::digraph > &)
Definition diagnostics/context.cc:1583
void set_escape_format(enum diagnostics_escape_format val)
Definition diagnostics/context.h:420
void push_diagnostics(location_t where)
Definition diagnostics/context.h:355
void set_nesting_level(int new_level)
Definition diagnostics/context.cc:1853
logging::logger * get_logger()
Definition diagnostics/context.h:283
void set_fatal_errors(bool fatal_errors)
Definition diagnostics/context.h:584
void remove_all_output_sinks()
Definition diagnostics/context.cc:478
void set_abort_on_error(bool val)
Definition diagnostics/context.h:563
bool m_permissive
Definition diagnostics/context.h:690
void(* m_adjust_diagnostic_info)(const context &, diagnostic_info *)
Definition diagnostics/context.h:737
void set_show_highlight_colors(bool val)
Definition diagnostics/context.cc:637
bool m_inhibit_notes_p
Definition diagnostics/context.h:765
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:1817
void set_format_decoder(printer_fn format_decoder)
Definition diagnostics/context.cc:629
int m_group_nesting_depth
Definition diagnostics/context.h:791
int m_emission_count
Definition diagnostics/context.h:798
file_cache * m_file_cache
Definition diagnostics/context.h:647
bool m_show_rules
Definition diagnostics/context.h:667
client_data_hooks * m_client_data_hooks
Definition diagnostics/context.h:826
void inhibit_notes()
Definition diagnostics/context.h:605
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:1688
friend text_finalizer_fn & text_finalizer(context *dc)
Definition diagnostics/context.h:877
bool notes_inhibited_in_group() const
Definition diagnostics/context.cc:1082
int m_diagnostic_nesting_level
Definition diagnostics/context.h:794
int & diagnostic_count(enum kind kind)
Definition diagnostics/context.h:464
void clear_diagnostic_buffer(buffer &)
Definition buffering.cc:78
bool show_path_depths_p() const
Definition diagnostics/context.h:433
int m_max_errors
Definition diagnostics/context.h:709
void set_adjust_diagnostic_info_callback(void(*cb)(const context &, diagnostic_info *))
Definition diagnostics/context.h:598
unsigned get_lang_mask() const
Definition diagnostics/context.h:503
const logical_locations::manager * get_logical_location_manager() const
Definition diagnostics/context.cc:587
void set_set_locations_callback(set_locations_callback_t cb)
Definition diagnostics/context.h:293
bool m_show_column
Definition diagnostics/context.h:684
auto_vec< urlifier_stack_node > * m_urlifier_stack
Definition diagnostics/context.h:753
bool m_warn_system_headers
Definition diagnostics/context.h:705
const column_options & get_column_options() const
Definition diagnostics/context.h:619
pretty_printer * get_reference_printer() const
Definition diagnostics/context.h:549
void color_init(int value)
Definition diagnostics/context.cc:255
char ** m_original_argv
Definition diagnostics/context.h:840
void report_verbatim(text_info &)
Definition diagnostics/context.cc:1569
void set_prefixing_rule(diagnostic_prefixing_rule_t rule)
Definition diagnostics/context.cc:646
void set_warning_as_error_requested(bool val)
Definition diagnostics/context.h:398
source_printing_options & get_source_printing_options()
Definition diagnostics/context.h:608
void set_extra_output_kind(enum diagnostics_extra_output_kind kind)
Definition diagnostics/context.h:403
void set_show_path_depths(bool val)
Definition diagnostics/context.h:414
start_span_fn< to_html > m_html_start_span
Definition diagnostics/context.h:726
void set_show_option_requested(bool val)
Definition diagnostics/context.h:415
void(* set_locations_callback_t)(const context &, diagnostic_info *)
Definition diagnostics/context.h:269
void push_borrowed_urlifier(const urlifier &)
Definition diagnostics/context.cc:568
location_t m_last_location
Definition diagnostics/context.h:760
option_classifier m_option_classifier
Definition diagnostics/context.h:660
char * build_indent_prefix() const
void set_original_argv(unique_argv original_argv)
Definition diagnostics/context.cc:538
option_id_manager * m_option_id_mgr
Definition diagnostics/context.h:741
bool bool bool report_diagnostic(diagnostic_info *)
Definition diagnostics/context.cc:1347
std::unique_ptr< pretty_printer > clone_printer() const
Definition diagnostics/context.h:544
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:590
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:1839
void set_max_errors(int val)
Definition diagnostics/context.h:419
char * make_option_name(option_id opt_id, enum kind orig_diag_kind, enum kind diag_kind) const
Definition diagnostics/context.h:481
void push_owned_urlifier(std::unique_ptr< urlifier >)
Definition diagnostics/context.cc:560
friend text_starter_fn & text_starter(context *dc)
Definition diagnostics/context.h:860
bool execution_failed_p() const
Definition diagnostics/context.cc:469
void add_sink(std::unique_ptr< sink >)
Definition diagnostics/context.cc:503
void pop_diagnostics(location_t where)
Definition diagnostics/context.h:364
file_cache & get_file_cache() const
Definition diagnostics/context.h:442
int m_lock
Definition diagnostics/context.h:763
bool m_fatal_errors
Definition diagnostics/context.h:698
void inhibit_notes_in_group(bool inhibit=true)
Definition diagnostics/context.cc:1052
void action_after_output(enum kind diag_kind)
Definition diagnostics/context.cc:975
void initialize_fixits_change_set()
Definition diagnostics/context.cc:655
bool warning_as_error_requested_p() const
Definition diagnostics/context.h:429
struct diagnostics::context::@341201264073143215367363357234376160363014117137 m_diagnostic_groups
void set_client_data_hooks(std::unique_ptr< client_data_hooks > hooks)
Definition diagnostics/context.cc:530
text_art::theme * get_diagram_theme() const
Definition diagnostics/context.h:462
logging::logger * m_logger
Definition diagnostics/context.h:854
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:578
void emit_diagram(const diagram &diag)
Definition diagnostics/context.cc:1730
bool bool int get_diagnostic_nesting_level() const
Definition diagnostics/context.h:516
struct diagnostics::context::@315143341136332350101266143205316065242223315254 m_diagrams
char * make_option_url(option_id opt_id) const
Definition diagnostics/context.h:492
bool m_inhibit_warnings
Definition diagnostics/context.h:702
bool m_report_bug
Definition diagnostics/context.h:771
enum diagnostic_path_format get_path_format() const
Definition diagnostics/context.h:435
void set_pretty_printer(std::unique_ptr< pretty_printer > pp)
Definition diagnostics/context.cc:609
const source_printing_options & get_source_printing_options() const
Definition diagnostics/context.h:613
void set_caret_max_width(int value)
Definition diagnostics/context.cc:122
int pch_save(FILE *f)
Definition diagnostics/context.h:524
source_printing_options m_source_printing
Definition diagnostics/context.h:767
const urlifier * get_urlifier() const
Definition diagnostics/context.cc:595
void set_sink(std::unique_ptr< sink > sink_)
Definition diagnostics/context.cc:485
enum diagnostics_extra_output_kind m_extra_output_kind
Definition diagnostics/context.h:776
void error_recursion() ATTRIBUTE_NORETURN
Definition diagnostics/context.cc:1745
void begin_group()
Definition diagnostics/context.cc:1811
bool m_pedantic_errors
Definition diagnostics/context.h:687
void check_max_errors(bool flush)
Definition diagnostics/context.cc:951
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:801
column_options & get_column_options()
Definition diagnostics/context.h:618
bool m_show_cwe
Definition diagnostics/context.h:664
auto_vec< sink * > m_sinks
Definition diagnostics/context.h:812
void set_show_rules(bool val)
Definition diagnostics/context.h:408
sink & get_sink(size_t idx) const
Definition diagnostics/context.cc:495
void set_show_nesting_locations(bool val)
Definition diagnostics/context.cc:324
auto & get_classification_history()
Definition diagnostics/context.h:570
changes::change_set * m_fixits_change_set
Definition diagnostics/context.h:786
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:1912
void set_path_format(enum diagnostic_path_format val)
Definition diagnostics/context.h:410
bool m_show_option_requested
Definition diagnostics/context.h:677
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:1324
bool diagnostic_enabled(diagnostic_info *diagnostic)
Definition diagnostics/context.cc:1240
enum diagnostics_escape_format get_escape_format() const
Definition diagnostics/context.h:436
friend class buffer
Definition diagnostics/context.h:267
void set_show_nesting_levels(bool val)
Definition diagnostics/context.cc:333
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:835
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: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:860
start_span_fn< to_text > & start_span(context *dc)
Definition diagnostics/context.h:869
text_finalizer_fn & text_finalizer(context *dc)
Definition diagnostics/context.h:877
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
kind
Definition kinds.h:27
void(*)(const location_print_policy &, TextOrHtml &text_or_html, expanded_location) start_span_fn
Definition diagnostics/context.h:82
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:1256
Definition column-options.h:28
Definition diagnostics/context.h:749
bool m_owned
Definition diagnostics/context.h:751
urlifier * m_urlifier
Definition diagnostics/context.h:750
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:814
#define DEBUG_FUNCTION
Definition system.h:1236