Error.cpp revision 3f2d5f60b31fd057c10f77b2e607b23a8c94f6d3
10b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach//===- Error.cpp - tblgen error handling helper routines --------*- C++ -*-===//
20b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach//
30b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach//                     The LLVM Compiler Infrastructure
40b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach//
50b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach// This file is distributed under the University of Illinois Open Source
60b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach// License. See LICENSE.TXT for details.
70b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach//
80b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach//===----------------------------------------------------------------------===//
90b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach//
100b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach// This file contains error handling helper routines to pretty-print diagnostic
110b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach// messages from tblgen.
120b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach//
130b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach//===----------------------------------------------------------------------===//
140b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach
157c788888872233748da10a8177a9a1eb176c1bc8Peter Collingbourne#include "llvm/TableGen/Error.h"
160b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach#include "llvm/ADT/Twine.h"
170b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach#include "llvm/Support/raw_ostream.h"
180b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach
190b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbachnamespace llvm {
200b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach
210b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim GrosbachSourceMgr SrcMgr;
220b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach
230b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbachvoid PrintError(SMLoc ErrorLoc, const Twine &Msg) {
243f2d5f60b31fd057c10f77b2e607b23a8c94f6d3Chris Lattner  SrcMgr.PrintMessage(ErrorLoc, SourceMgr::DK_Error, Msg);
250b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach}
260b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach
270b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbachvoid PrintError(const char *Loc, const Twine &Msg) {
283f2d5f60b31fd057c10f77b2e607b23a8c94f6d3Chris Lattner  SrcMgr.PrintMessage(SMLoc::getFromPointer(Loc), SourceMgr::DK_Error, Msg);
290b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach}
300b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach
310b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbachvoid PrintError(const Twine &Msg) {
320b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach  errs() << "error:" << Msg << "\n";
330b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach}
340b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach
350b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbachvoid PrintError(const TGError &Error) {
360b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach  PrintError(Error.getLoc(), Error.getMessage());
370b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach}
380b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach
390b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach} // end namespace llvm
40