diff options
author | Than McIntosh <thanm@google.com> | 2016-09-23 19:36:45 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2016-09-23 19:36:45 +0000 |
commit | 56bafc49a02cbff82b628e83c35e36d1872fdcc8 (patch) | |
tree | a45167990fa1fe860cc44939f3ec887785089c27 /gcc/go/go-gcc-diagnostics.cc | |
parent | 34a594e85618002815e2faf3b515ba1d7446a55b (diff) | |
download | gcc-56bafc49a02cbff82b628e83c35e36d1872fdcc8.zip gcc-56bafc49a02cbff82b628e83c35e36d1872fdcc8.tar.gz gcc-56bafc49a02cbff82b628e83c35e36d1872fdcc8.tar.bz2 |
compiler: better abstraction layer for diagnostics.
Introduce an abstraction layer for reporting diagnostics, so as to avoid
directly using the native GCC interfaces such as "error_at",
"warning_at", "open_quote", "close_quote", etc. The new interfaces have
the same look and feel as the GCC equivalents, but make calls into
back-end functions to allow the back end to select the proper final
reporting routine.
Reviewed-on: https://go-review.googlesource.com/29191
* go-gcc-diagnostics.cc: New file.
* go-location.h (Location): Remove operator source_location. Add
operator==.
* go-system.h: #include <sstream>.
* Make-lang.in (GO_OBJS): Add go/go-diagnostics.o and
go/go-gcc-diagnostics.o.
(CFLAGS-go/go-gcc-diagnostics.o): New variable.
From-SVN: r240453
Diffstat (limited to 'gcc/go/go-gcc-diagnostics.cc')
-rw-r--r-- | gcc/go/go-gcc-diagnostics.cc | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/gcc/go/go-gcc-diagnostics.cc b/gcc/go/go-gcc-diagnostics.cc new file mode 100644 index 0000000..893b31e --- /dev/null +++ b/gcc/go/go-gcc-diagnostics.cc @@ -0,0 +1,61 @@ +// go-gcc-diagnostics.cc -- GCC implementation of go diagnostics interface. +// Copyright (C) 2016 Free Software Foundation, Inc. +// Contributed by Than McIntosh, Google. + +// 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 "go-system.h" +#include "go-diagnostics.h" + +void +go_be_error_at(const Location location, const std::string& errmsg) +{ + source_location gcc_loc = location.gcc_location(); + error_at(gcc_loc, "%s", errmsg.c_str()); +} + + +void +go_be_warning_at(const Location location, + int opt, const std::string& warningmsg) +{ + source_location gcc_loc = location.gcc_location(); + warning_at(gcc_loc, opt, "%s", warningmsg.c_str()); +} + +void +go_be_fatal_error(const Location location, + const std::string& fatalmsg) +{ + source_location gcc_loc = location.gcc_location(); + fatal_error(gcc_loc, "%s", fatalmsg.c_str()); +} + +void +go_be_inform(const Location location, + const std::string& infomsg) +{ + source_location gcc_loc = location.gcc_location(); + inform(gcc_loc, "%s", infomsg.c_str()); +} + +void +go_be_get_quotechars(const char** open_qu, const char** close_qu) +{ + *open_qu = open_quote; + *close_qu = close_quote; +} |