blob: 5dd688cb6750b51914390b46b829e15f734de061 [file] [log] [blame]
Jim Grosbach0b6a44a2011-06-21 22:55:50 +00001//===- Error.cpp - tblgen error handling helper routines --------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file contains error handling helper routines to pretty-print diagnostic
11// messages from tblgen.
12//
13//===----------------------------------------------------------------------===//
14
Peter Collingbourne7c788882011-10-01 16:41:13 +000015#include "llvm/TableGen/Error.h"
Jim Grosbach0b6a44a2011-06-21 22:55:50 +000016#include "llvm/ADT/Twine.h"
17#include "llvm/Support/raw_ostream.h"
18
19namespace llvm {
20
21SourceMgr SrcMgr;
22
Jakob Stoklund Olesen376a8a72012-08-22 23:33:58 +000023static void PrintMessage(ArrayRef<SMLoc> Loc, SourceMgr::DiagKind Kind,
24 const Twine &Msg) {
25 SMLoc NullLoc;
26 if (Loc.empty())
27 Loc = NullLoc;
28 SrcMgr.PrintMessage(Loc.front(), Kind, Msg);
29 for (unsigned i = 1; i < Loc.size(); ++i)
30 SrcMgr.PrintMessage(Loc[i], SourceMgr::DK_Note,
31 "instantiated from multiclass");
32}
33
34void PrintWarning(ArrayRef<SMLoc> WarningLoc, const Twine &Msg) {
35 PrintMessage(WarningLoc, SourceMgr::DK_Warning, Msg);
Jim Grosbach97c02bf2012-04-18 17:46:31 +000036}
37
38void PrintWarning(const char *Loc, const Twine &Msg) {
39 SrcMgr.PrintMessage(SMLoc::getFromPointer(Loc), SourceMgr::DK_Warning, Msg);
40}
41
42void PrintWarning(const Twine &Msg) {
Jim Grosbach28b810e2012-04-18 18:09:53 +000043 errs() << "warning:" << Msg << "\n";
Jim Grosbach97c02bf2012-04-18 17:46:31 +000044}
45
46void PrintWarning(const TGError &Warning) {
47 PrintWarning(Warning.getLoc(), Warning.getMessage());
48}
49
Jakob Stoklund Olesen376a8a72012-08-22 23:33:58 +000050void PrintError(ArrayRef<SMLoc> ErrorLoc, const Twine &Msg) {
51 PrintMessage(ErrorLoc, SourceMgr::DK_Error, Msg);
Jim Grosbach0b6a44a2011-06-21 22:55:50 +000052}
53
54void PrintError(const char *Loc, const Twine &Msg) {
Chris Lattner3f2d5f62011-10-16 05:43:57 +000055 SrcMgr.PrintMessage(SMLoc::getFromPointer(Loc), SourceMgr::DK_Error, Msg);
Jim Grosbach0b6a44a2011-06-21 22:55:50 +000056}
57
58void PrintError(const Twine &Msg) {
59 errs() << "error:" << Msg << "\n";
60}
61
62void PrintError(const TGError &Error) {
63 PrintError(Error.getLoc(), Error.getMessage());
64}
65
66} // end namespace llvm