diff options
author | Sanjoy Das <thedigitalangel@gmail.com> | 2011-11-29 19:10:50 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2011-11-29 19:10:50 +0000 |
commit | 8afa2bfbdc60088acd7f199245244890a6e7773e (patch) | |
tree | f79cf7c9d2d4e5b74c516201a60c5753fe79c93f /gcc/go/go-location.h | |
parent | 09ad58e618b0145ed98ee081ffc8117824390972 (diff) | |
download | gcc-8afa2bfbdc60088acd7f199245244890a6e7773e.zip gcc-8afa2bfbdc60088acd7f199245244890a6e7773e.tar.gz gcc-8afa2bfbdc60088acd7f199245244890a6e7773e.tar.bz2 |
compiler: Define and use backend-independent Location class.
From Sanjoy Das.
* go-location.h: New file.
* go-linemap.cc: New file.
* go-gcc.cc: Change all uses of source_location to Location.
* Make-lang.in (GO_OBJS): Add go/go-linemap.o.
(GO_LINEMAP_H): New variable.
(GO_LEX_H): Use $(GO_LINEMAP_H).
(GO_GOGO_H, GO_TYPES_H, GO_IMPORT_H): Likewise.
(go/go-linemap.o): New target.
Co-Authored-By: Ian Lance Taylor <iant@google.com>
From-SVN: r181813
Diffstat (limited to 'gcc/go/go-location.h')
-rw-r--r-- | gcc/go/go-location.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/gcc/go/go-location.h b/gcc/go/go-location.h new file mode 100644 index 0000000..f2731d9 --- /dev/null +++ b/gcc/go/go-location.h @@ -0,0 +1,45 @@ +// go-location.h -- GCC specific Location declaration. -*- C++ -*- + +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#ifndef GO_LOCATION_H +#define GO_LOCATION_H + +#include "go-system.h" + +// A location in an input source file. + +class Location +{ + public: + Location() + : gcc_loc_(UNKNOWN_LOCATION) + { } + + explicit Location(source_location loc) + : gcc_loc_(loc) + { } + + source_location + gcc_location() const + { return this->gcc_loc_; } + + // Temporary hack till error_at and warning_at can deal with a Location. + operator source_location() const + { return this->gcc_loc_; } + + private: + source_location gcc_loc_; +}; + +// The Go frontend requires the ability to compare Locations. + +inline bool +operator<(Location loca, Location locb) +{ + return loca.gcc_location() < locb.gcc_location(); +} + +#endif // !defined(GO_LOCATION_H) |