Move selftest::test_diagnostic_context to its own header
It's useful to not rely on global_dc in selftests, so this patch moves class selftest::test_diagnostic_context from diagnostic-show-locus.c to a new header and source file. gcc/ChangeLog: * Makefile.in (OBJS-libcommon): Add selftest-diagnostic.o. * diagnostic-show-locus.c: Include "selftest-diagnostic.h". (class selftest::test_diagnostic_context): Move to... * selftest-diagnostic.c: New file. * selftest-diagnostic.h: New file. From-SVN: r254354
This commit is contained in:
parent
7c42a3675c
commit
ba7bfd9f04
@ -1,3 +1,11 @@
|
||||
2017-11-02 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
* Makefile.in (OBJS-libcommon): Add selftest-diagnostic.o.
|
||||
* diagnostic-show-locus.c: Include "selftest-diagnostic.h".
|
||||
(class selftest::test_diagnostic_context): Move to...
|
||||
* selftest-diagnostic.c: New file.
|
||||
* selftest-diagnostic.h: New file.
|
||||
|
||||
2017-11-02 James Bowman <james.bowman@ftdichip.com>
|
||||
|
||||
* config/ft32/ft32.c (ft32_addr_space_legitimate_address_p): increase
|
||||
|
@ -1591,7 +1591,7 @@ OBJS-libcommon = diagnostic.o diagnostic-color.o diagnostic-show-locus.o \
|
||||
pretty-print.o intl.o \
|
||||
sbitmap.o \
|
||||
vec.o input.o version.o hash-table.o ggc-none.o memory-block.o \
|
||||
selftest.o
|
||||
selftest.o selftest-diagnostic.o
|
||||
|
||||
# Objects in libcommon-target.a, used by drivers and by the core
|
||||
# compiler and containing target-dependent code.
|
||||
|
@ -29,6 +29,7 @@ along with GCC; see the file COPYING3. If not see
|
||||
#include "diagnostic-color.h"
|
||||
#include "gcc-rich-location.h"
|
||||
#include "selftest.h"
|
||||
#include "selftest-diagnostic.h"
|
||||
|
||||
#ifdef HAVE_TERMIOS_H
|
||||
# include <termios.h>
|
||||
@ -1987,34 +1988,6 @@ namespace selftest {
|
||||
|
||||
/* Selftests for diagnostic_show_locus. */
|
||||
|
||||
/* Convenience subclass of diagnostic_context for testing
|
||||
diagnostic_show_locus. */
|
||||
|
||||
class test_diagnostic_context : public diagnostic_context
|
||||
{
|
||||
public:
|
||||
test_diagnostic_context ()
|
||||
{
|
||||
diagnostic_initialize (this, 0);
|
||||
show_caret = true;
|
||||
show_column = true;
|
||||
start_span = start_span_cb;
|
||||
}
|
||||
~test_diagnostic_context ()
|
||||
{
|
||||
diagnostic_finish (this);
|
||||
}
|
||||
|
||||
/* Implementation of diagnostic_start_span_fn, hiding the
|
||||
real filename (to avoid printing the names of tempfiles). */
|
||||
static void
|
||||
start_span_cb (diagnostic_context *context, expanded_location exploc)
|
||||
{
|
||||
exploc.file = "FILENAME";
|
||||
default_diagnostic_start_span_fn (context, exploc);
|
||||
}
|
||||
};
|
||||
|
||||
/* Verify that diagnostic_show_locus works sanely on UNKNOWN_LOCATION. */
|
||||
|
||||
static void
|
||||
|
62
gcc/selftest-diagnostic.c
Normal file
62
gcc/selftest-diagnostic.c
Normal file
@ -0,0 +1,62 @@
|
||||
/* Selftest support for diagnostics.
|
||||
Copyright (C) 2016-2017 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/>. */
|
||||
|
||||
#include "config.h"
|
||||
#include "system.h"
|
||||
#include "coretypes.h"
|
||||
#include "diagnostic.h"
|
||||
#include "selftest.h"
|
||||
#include "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 {
|
||||
|
||||
/* Implementation of class selftest::test_diagnostic_context. */
|
||||
|
||||
test_diagnostic_context::test_diagnostic_context ()
|
||||
{
|
||||
diagnostic_initialize (this, 0);
|
||||
show_caret = true;
|
||||
show_column = true;
|
||||
start_span = start_span_cb;
|
||||
}
|
||||
|
||||
test_diagnostic_context::~test_diagnostic_context ()
|
||||
{
|
||||
diagnostic_finish (this);
|
||||
}
|
||||
|
||||
/* Implementation of diagnostic_start_span_fn, hiding the
|
||||
real filename (to avoid printing the names of tempfiles). */
|
||||
|
||||
void
|
||||
test_diagnostic_context::start_span_cb (diagnostic_context *context,
|
||||
expanded_location exploc)
|
||||
{
|
||||
exploc.file = "FILENAME";
|
||||
default_diagnostic_start_span_fn (context, exploc);
|
||||
}
|
||||
|
||||
} // namespace selftest
|
||||
|
||||
#endif /* #if CHECKING_P */
|
49
gcc/selftest-diagnostic.h
Normal file
49
gcc/selftest-diagnostic.h
Normal file
@ -0,0 +1,49 @@
|
||||
/* Selftest support for diagnostics.
|
||||
Copyright (C) 2016-2017 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 (diagnostic_context *context, expanded_location exploc);
|
||||
};
|
||||
|
||||
} // namespace selftest
|
||||
|
||||
#endif /* #if CHECKING_P */
|
||||
|
||||
#endif /* GCC_SELFTEST_DIAGNOSTIC_H */
|
Loading…
x
Reference in New Issue
Block a user