gcc/gcc/selftest-diagnostic.h
David Malcolm 9c14f9a9c1 diagnostics: return text buffer from test_show_locus [PR116613]
As work towards supporting multiple diagnostic outputs (where each
output has its own pretty_printer), avoid referencing dc.m_printer
throughout the selftests of diagnostic-show-locus.cc.  Instead
have test_diagnostic_context::test_show_locus return the result
buffer, hiding the specifics of which printer is in use in such
test cases.

No functional change intended.

gcc/ChangeLog:
	PR other/116613
	* diagnostic-show-locus.cc
	(selftest::test_diagnostic_show_locus_unknown_location): Move call
	to dc.test_show_locus into ASSERT_STREQ, and compare against its
	result, rather than explicitly using dc.m_printer.
	(selftest::test_one_liner_simple_caret): Likewise.
	(selftest::test_one_liner_no_column): Likewise.
	(selftest::test_one_liner_caret_and_range): Likewise.
	(selftest::test_one_liner_multiple_carets_and_ranges): Likewise.
	(selftest::test_one_liner_fixit_insert_before): Likewise.
	(selftest::test_one_liner_fixit_insert_after): Likewise.
	(selftest::test_one_liner_fixit_remove): Likewise.
	(selftest::test_one_liner_fixit_replace): Likewise.
	(selftest::test_one_liner_fixit_replace_non_equal_range):
	Likewise.
	(selftest::test_one_liner_fixit_replace_equal_secondary_range):
	Likewise.
	(selftest::test_one_liner_fixit_validation_adhoc_locations):
	Likewise.
	(selftest::test_one_liner_many_fixits_1): Likewise.
	(selftest::test_one_liner_many_fixits_2): Likewise.
	(selftest::test_one_liner_labels): Likewise.
	(selftest::test_one_liner_simple_caret_utf8): Likewise.
	(selftest::test_one_liner_multiple_carets_and_ranges_utf8):
	Likewise.
	(selftest::test_one_liner_fixit_insert_before_utf8): Likewise.
	(selftest::test_one_liner_fixit_insert_after_utf8): Likewise.
	(selftest::test_one_liner_fixit_remove_utf8): Likewise.
	(selftest::test_one_liner_fixit_replace_utf8): Likewise.
	(selftest::test_one_liner_fixit_replace_non_equal_range_utf8):
	Likewise.
	(selftest::test_one_liner_fixit_replace_equal_secondary_range_utf8):
	Likewise.
	(selftest::test_one_liner_fixit_validation_adhoc_locations_utf8):
	Likewise.
	(selftest::test_one_liner_many_fixits_1_utf8): Likewise.
	(selftest::test_one_liner_many_fixits_2_utf8): Likewise.
	(selftest::test_one_liner_labels_utf8): Likewise.
	(selftest::test_one_liner_colorized_utf8): Likewise.
	(selftest::test_add_location_if_nearby): Likewise.
	(selftest::test_diagnostic_show_locus_fixit_lines): Likewise.
	(selftest::test_overlapped_fixit_printing): Likewise.
	(selftest::test_overlapped_fixit_printing_utf8): Likewise.
	(selftest::test_overlapped_fixit_printing_utf8): Likewise.
	(selftest::test_overlapped_fixit_printing_2): Likewise.
	(selftest::test_fixit_insert_containing_newline): Likewise.
	(selftest::test_fixit_insert_containing_newline_2): Likewise.
	(selftest::test_fixit_replace_containing_newline): Likewise.
	(selftest::test_fixit_deletion_affecting_newline): Likewise.
	(selftest::test_tab_expansion): Likewise.
	(selftest::test_escaping_bytes_1): Likewise.
	(selftest::test_escaping_bytes_2): Likewise.
	(selftest::test_line_numbers_multiline_range): Likewise.
	* selftest-diagnostic.cc
	(selftest::test_diagnostic_context::test_show_locus): Return the
	formatted text of m_printer.
	* selftest-diagnostic.h
	(selftest::test_diagnostic_context::test_show_locus): Convert
	return type from void to const char *.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
2024-09-30 11:48:30 -04:00

64 lines
1.9 KiB
C++

/* Selftest support for diagnostics.
Copyright (C) 2016-2024 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/>. */
#ifndef GCC_SELFTEST_DIAGNOSTIC_H
#define GCC_SELFTEST_DIAGNOSTIC_H
/* The selftest code should entirely disappear in a production
configuration, hence we guard all of it with #if CHECKING_P. */
#if CHECKING_P
namespace selftest {
/* Convenience subclass of diagnostic_context for testing
the diagnostic subsystem. */
class test_diagnostic_context : public diagnostic_context
{
public:
test_diagnostic_context ();
~test_diagnostic_context ();
/* Implementation of diagnostic_start_span_fn, hiding the
real filename (to avoid printing the names of tempfiles). */
static void
start_span_cb (const diagnostic_location_print_policy &,
pretty_printer *,
expanded_location exploc);
/* Report a diagnostic to this context. For a selftest, this
should only be called on a context that uses a non-standard formatter
that e.g. gathers the results in memory, rather than emits to stderr. */
bool
report (diagnostic_t kind,
rich_location &richloc,
const diagnostic_metadata *metadata,
int option,
const char * fmt, ...) ATTRIBUTE_GCC_DIAG(6,7);
const char *test_show_locus (rich_location &richloc);
};
} // namespace selftest
#endif /* #if CHECKING_P */
#endif /* GCC_SELFTEST_DIAGNOSTIC_H */