GCC Middle and Back End API Reference
rich_location_with_details Class Reference

#include <diagnostic-context-rich-location.h>

Inheritance diagram for rich_location_with_details:
Collaboration diagram for rich_location_with_details:

Public Member Functions

 rich_location_with_details (location_t location, gimple *stmt)
 rich_location_with_details (location_t location, tree exp)
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 diagnostics::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 diagnostics::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)

Private Attributes

const tree_logical_location_manager m_logical_loc_mgr
lazy_diagnostic_context_path m_lazy_diagnostic_context_path

Constructor & Destructor Documentation

◆ rich_location_with_details() [1/2]

rich_location_with_details::rich_location_with_details ( location_t location,
gimple * stmt )
inline

◆ rich_location_with_details() [2/2]

rich_location_with_details::rich_location_with_details ( location_t location,
tree exp )
inline

Member Function Documentation

◆ add_expr()

void gcc_rich_location::add_expr ( tree expr,
range_label * label,
const char * highlight_color )
inherited
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().

◆ add_fixit_insert_formatted()

void gcc_rich_location::add_fixit_insert_formatted ( const char * content,
location_t insertion_point,
location_t indent )
inherited
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().

◆ add_fixit_misspelled_id()

void gcc_rich_location::add_fixit_misspelled_id ( location_t misspelled_token_loc,
tree hint_id )
inherited
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.

◆ add_location_if_nearby() [1/2]

bool gcc_rich_location::add_location_if_nearby ( const diagnostics::context & dc,
location_t loc,
bool restrict_to_current_line_spans = true,
const range_label * label = NULL )
inherited

◆ add_location_if_nearby() [2/2]

bool gcc_rich_location::add_location_if_nearby ( const diagnostics::source_print_policy & policy,
location_t loc,
bool restrict_to_current_line_spans = true,
const range_label * label = NULL )
inherited
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().

◆ maybe_add_expr()

void gcc_rich_location::maybe_add_expr ( tree t,
range_label * label,
const char * highlight_color )
inherited
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.

Field Documentation

◆ m_lazy_diagnostic_context_path

lazy_diagnostic_context_path rich_location_with_details::m_lazy_diagnostic_context_path
private

◆ m_logical_loc_mgr

const tree_logical_location_manager rich_location_with_details::m_logical_loc_mgr
private

The documentation for this class was generated from the following file: