#include <gcc-rich-location.h>
Public Member Functions | |
gcc_rich_location (location_t loc) | |
gcc_rich_location (location_t loc, const range_label *label, const char *highlight_color) | |
void | add_expr (tree expr, range_label *label, const char *highlight_color) |
void | maybe_add_expr (tree t, range_label *label, const char *highlight_color) |
void | add_fixit_misspelled_id (location_t misspelled_token_loc, tree hint_id) |
bool | add_location_if_nearby (const diagnostic_source_print_policy &policy, location_t loc, bool restrict_to_current_line_spans=true, const range_label *label=NULL) |
bool | add_location_if_nearby (const diagnostic_context &dc, location_t loc, bool restrict_to_current_line_spans=true, const range_label *label=NULL) |
void | add_fixit_insert_formatted (const char *content, location_t insertion_point, location_t indent) |
A gcc_rich_location is libcpp's rich_location with additional helper methods for working with gcc's types. The class is not copyable or assignable because rich_location isn't.
|
inlineexplicit |
References line_table.
|
inlineexplicit |
References line_table.
void gcc_rich_location::add_expr | ( | tree | expr, |
range_label * | label, | ||
const char * | highlight_color ) |
Implementation of gcc_rich_location class Copyright (C) 2014-2025 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>.
Add a range to the rich_location, covering expression EXPR, using LABEL if non-NULL.
References CAN_HAVE_RANGE_P, EXPR_LOCATION, and gcc_assert.
Referenced by maybe_add_expr().
void gcc_rich_location::add_fixit_insert_formatted | ( | const char * | content, |
location_t | insertion_point, | ||
location_t | indent ) |
Add a fix-it hint suggesting the insertion of CONTENT before INSERTION_POINT. Attempt to handle formatting: if INSERTION_POINT is the first thing on its line, and INDENT is sufficiently sane, then add CONTENT on its own line, using the indentation of INDENT. Otherwise, add CONTENT directly before INSERTION_POINT. For example, adding "CONTENT;" with the closing brace as the insertion point and "INDENT;" as the indentation point: if () { INDENT; } would lead to: if () { INDENT; CONTENT; } but adding it to: if () {INDENT;} would lead to: if () {INDENT;CONTENT;}
References get_start(), global_dc, LOCATION_COLUMN, pp_formatted_text(), pp_newline(), pp_space, pp_string(), and use_new_line().
void gcc_rich_location::add_fixit_misspelled_id | ( | location_t | misspelled_token_loc, |
tree | hint_id ) |
Add a fixit hint suggesting replacing the range at MISSPELLED_TOKEN_LOC with the identifier HINT_ID.
References gcc_assert, IDENTIFIER_POINTER, and TREE_CODE.
bool gcc_rich_location::add_location_if_nearby | ( | const diagnostic_context & | dc, |
location_t | loc, | ||
bool | restrict_to_current_line_spans = true, | ||
const range_label * | label = NULL ) |
References add_location_if_nearby(), and diagnostic_context::m_source_printing.
bool gcc_rich_location::add_location_if_nearby | ( | const diagnostic_source_print_policy & | policy, |
location_t | loc, | ||
bool | restrict_to_current_line_spans = true, | ||
const range_label * | label = NULL ) |
If LOC is within the spans of lines that will already be printed for this gcc_rich_location, then add it as a secondary location and return true. Otherwise return false. Use POLICY for determining how spans of lines would be printed.
Referenced by add_location_if_nearby().
void gcc_rich_location::maybe_add_expr | ( | tree | t, |
range_label * | label, | ||
const char * | highlight_color ) |
If T is an expression, add a range for it to the rich_location, using LABEL if non-NULL.
References add_expr(), and EXPR_P.