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
2397c02bf2409bccdb43c3822c438e3ff977d8514eJim Grosbachvoid PrintWarning(SMLoc WarningLoc, const Twine &Msg) {
2497c02bf2409bccdb43c3822c438e3ff977d8514eJim Grosbach  SrcMgr.PrintMessage(WarningLoc, SourceMgr::DK_Warning, Msg);
2597c02bf2409bccdb43c3822c438e3ff977d8514eJim Grosbach}
2697c02bf2409bccdb43c3822c438e3ff977d8514eJim Grosbach
2797c02bf2409bccdb43c3822c438e3ff977d8514eJim Grosbachvoid PrintWarning(const char *Loc, const Twine &Msg) {
2897c02bf2409bccdb43c3822c438e3ff977d8514eJim Grosbach  SrcMgr.PrintMessage(SMLoc::getFromPointer(Loc), SourceMgr::DK_Warning, Msg);
2997c02bf2409bccdb43c3822c438e3ff977d8514eJim Grosbach}
3097c02bf2409bccdb43c3822c438e3ff977d8514eJim Grosbach
3197c02bf2409bccdb43c3822c438e3ff977d8514eJim Grosbachvoid PrintWarning(const Twine &Msg) {
3228b810e9e4b11074a241aad87e1e09ec7859a691Jim Grosbach  errs() << "warning:" << Msg << "\n";
3397c02bf2409bccdb43c3822c438e3ff977d8514eJim Grosbach}
3497c02bf2409bccdb43c3822c438e3ff977d8514eJim Grosbach
3597c02bf2409bccdb43c3822c438e3ff977d8514eJim Grosbachvoid PrintWarning(const TGError &Warning) {
3697c02bf2409bccdb43c3822c438e3ff977d8514eJim Grosbach  PrintWarning(Warning.getLoc(), Warning.getMessage());
3797c02bf2409bccdb43c3822c438e3ff977d8514eJim Grosbach}
3897c02bf2409bccdb43c3822c438e3ff977d8514eJim Grosbach
390b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbachvoid PrintError(SMLoc ErrorLoc, const Twine &Msg) {
403f2d5f60b31fd057c10f77b2e607b23a8c94f6d3Chris Lattner  SrcMgr.PrintMessage(ErrorLoc, SourceMgr::DK_Error, Msg);
410b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach}
420b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach
430b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbachvoid PrintError(const char *Loc, const Twine &Msg) {
443f2d5f60b31fd057c10f77b2e607b23a8c94f6d3Chris Lattner  SrcMgr.PrintMessage(SMLoc::getFromPointer(Loc), SourceMgr::DK_Error, Msg);
450b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach}
460b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach
470b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbachvoid PrintError(const Twine &Msg) {
480b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach  errs() << "error:" << Msg << "\n";
490b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach}
500b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach
510b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbachvoid PrintError(const TGError &Error) {
520b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach  PrintError(Error.getLoc(), Error.getMessage());
530b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach}
540b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach
550b6a44afb92fed0365b6709c1f46b0c5e49e1a72Jim Grosbach} // end namespace llvm
56