diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-06-30 00:49:23 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-06-30 00:49:23 +0000 |
commit | 3fb7683bec8c8edb24e80c95f3b0668c6ecc0ae6 (patch) | |
tree | 814b198e69a8c9b1b21c8f1281d501e7a01adde0 | |
parent | 2bc29dc0bcb3c1441477a062e4a5cffff175c8ca (diff) | |
download | external_llvm-3fb7683bec8c8edb24e80c95f3b0668c6ecc0ae6.zip external_llvm-3fb7683bec8c8edb24e80c95f3b0668c6ecc0ae6.tar.gz external_llvm-3fb7683bec8c8edb24e80c95f3b0668c6ecc0ae6.tar.bz2 |
Normalize SourceMgr messages.
- Don't print "Parsing" in front of every message.
- Take additional "type" argument which is prepended to the message (with ": ")
if given.
- Update clients to print errors (warnings) as:
<filename>:<line number>: error(warning): ...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74489 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Support/SourceMgr.h | 5 | ||||
-rw-r--r-- | lib/Support/SourceMgr.cpp | 10 | ||||
-rw-r--r-- | tools/llvm-mc/AsmLexer.cpp | 7 | ||||
-rw-r--r-- | tools/llvm-mc/AsmLexer.h | 2 | ||||
-rw-r--r-- | tools/llvm-mc/AsmParser.cpp | 18 | ||||
-rw-r--r-- | tools/llvm-mc/AsmParser.h | 3 | ||||
-rw-r--r-- | tools/llvm-mc/llvm-mc.cpp | 2 | ||||
-rw-r--r-- | utils/TableGen/TGLexer.cpp | 4 | ||||
-rw-r--r-- | utils/TableGen/TableGen.cpp | 2 |
9 files changed, 33 insertions, 20 deletions
diff --git a/include/llvm/Support/SourceMgr.h b/include/llvm/Support/SourceMgr.h index 4170c8d..23044a8 100644 --- a/include/llvm/Support/SourceMgr.h +++ b/include/llvm/Support/SourceMgr.h @@ -111,7 +111,10 @@ public: /// PrintMessage - Emit a message about the specified location with the /// specified string. - void PrintMessage(SMLoc Loc, const std::string &Msg) const; + /// + /// @param Type - If non-null, the kind of message (e.g., "error") which is + /// prefixed to the message. + void PrintMessage(SMLoc Loc, const std::string &Msg, const char *Type) const; private: void PrintIncludeStack(SMLoc IncludeLoc) const; diff --git a/lib/Support/SourceMgr.cpp b/lib/Support/SourceMgr.cpp index d789f10..6232265 100644 --- a/lib/Support/SourceMgr.cpp +++ b/lib/Support/SourceMgr.cpp @@ -90,7 +90,8 @@ void SourceMgr::PrintIncludeStack(SMLoc IncludeLoc) const { } -void SourceMgr::PrintMessage(SMLoc Loc, const std::string &Msg) const { +void SourceMgr::PrintMessage(SMLoc Loc, const std::string &Msg, + const char *Type) const { raw_ostream &OS = errs(); // First thing to do: find the current buffer containing the specified @@ -103,9 +104,12 @@ void SourceMgr::PrintMessage(SMLoc Loc, const std::string &Msg) const { MemoryBuffer *CurMB = getBufferInfo(CurBuf).Buffer; - OS << "Parsing " << CurMB->getBufferIdentifier() << ":" + OS << CurMB->getBufferIdentifier() << ":" << FindLineNumber(Loc, CurBuf) << ": "; - + + if (Type) + OS << Type << ": "; + OS << Msg << "\n"; // Scan backward to find the start of the line. diff --git a/tools/llvm-mc/AsmLexer.cpp b/tools/llvm-mc/AsmLexer.cpp index 931f3b2..7b744fb 100644 --- a/tools/llvm-mc/AsmLexer.cpp +++ b/tools/llvm-mc/AsmLexer.cpp @@ -42,14 +42,15 @@ SMLoc AsmLexer::getLoc() const { return SMLoc::getFromPointer(TokStart); } -void AsmLexer::PrintMessage(SMLoc Loc, const std::string &Msg) const { - SrcMgr.PrintMessage(Loc, Msg); +void AsmLexer::PrintMessage(SMLoc Loc, const std::string &Msg, + const char *Type) const { + SrcMgr.PrintMessage(Loc, Msg, Type); } /// ReturnError - Set the error to the specified string at the specified /// location. This is defined to always return asmtok::Error. asmtok::TokKind AsmLexer::ReturnError(const char *Loc, const std::string &Msg) { - SrcMgr.PrintMessage(SMLoc::getFromPointer(Loc), Msg); + SrcMgr.PrintMessage(SMLoc::getFromPointer(Loc), Msg, "error"); return asmtok::Error; } diff --git a/tools/llvm-mc/AsmLexer.h b/tools/llvm-mc/AsmLexer.h index 5d0002d..6360b12 100644 --- a/tools/llvm-mc/AsmLexer.h +++ b/tools/llvm-mc/AsmLexer.h @@ -97,7 +97,7 @@ public: SMLoc getLoc() const; - void PrintMessage(SMLoc Loc, const std::string &Msg) const; + void PrintMessage(SMLoc Loc, const std::string &Msg, const char *Type) const; private: int getNextChar(); diff --git a/tools/llvm-mc/AsmParser.cpp b/tools/llvm-mc/AsmParser.cpp index 9a71139..9414f99 100644 --- a/tools/llvm-mc/AsmParser.cpp +++ b/tools/llvm-mc/AsmParser.cpp @@ -22,13 +22,17 @@ #include "llvm/Support/raw_ostream.h" using namespace llvm; +void AsmParser::Warning(SMLoc L, const char *Msg) { + Lexer.PrintMessage(L, Msg, "warning"); +} + bool AsmParser::Error(SMLoc L, const char *Msg) { - Lexer.PrintMessage(L, Msg); + Lexer.PrintMessage(L, Msg, "error"); return true; } bool AsmParser::TokError(const char *Msg) { - Lexer.PrintMessage(Lexer.getLoc(), Msg); + Lexer.PrintMessage(Lexer.getLoc(), Msg, "error"); return true; } @@ -482,7 +486,7 @@ bool AsmParser::ParseStatement() { if (!strcmp(IDVal, ".weak_reference")) return ParseDirectiveSymbolAttribute(MCStreamer::WeakReference); - Lexer.PrintMessage(IDLoc, "warning: ignoring directive for now"); + Warning(IDLoc, "ignoring directive for now"); EatToEndOfStatement(); return false; } @@ -810,14 +814,14 @@ bool AsmParser::ParseDirectiveAlign(bool IsPow2, unsigned ValueSize) { // Diagnose non-sensical max bytes to fill. if (MaxBytesLoc.isValid()) { if (MaxBytesToFill < 1) { - Lexer.PrintMessage(MaxBytesLoc, "warning: alignment directive can never " - "be satisfied in this many bytes, ignoring"); + Warning(MaxBytesLoc, "alignment directive can never be satisfied in this " + "many bytes, ignoring"); return false; } if (MaxBytesToFill >= Alignment) { - Lexer.PrintMessage(MaxBytesLoc, "warning: maximum bytes expression " - "exceeds alignment and has no effect"); + Warning(MaxBytesLoc, "maximum bytes expression exceeds alignment and " + "has no effect"); MaxBytesToFill = 0; } } diff --git a/tools/llvm-mc/AsmParser.h b/tools/llvm-mc/AsmParser.h index f5e372c..8cd40eb 100644 --- a/tools/llvm-mc/AsmParser.h +++ b/tools/llvm-mc/AsmParser.h @@ -39,7 +39,8 @@ public: private: bool ParseStatement(); - + + void Warning(SMLoc L, const char *Msg); bool Error(SMLoc L, const char *Msg); bool TokError(const char *Msg); diff --git a/tools/llvm-mc/llvm-mc.cpp b/tools/llvm-mc/llvm-mc.cpp index 4100cb1..e26d79d 100644 --- a/tools/llvm-mc/llvm-mc.cpp +++ b/tools/llvm-mc/llvm-mc.cpp @@ -80,7 +80,7 @@ static int AsLexInput(const char *ProgName) { while (Tok != asmtok::Eof) { switch (Tok) { default: - Lexer.PrintMessage(Lexer.getLoc(), "driver: unknown token"); + Lexer.PrintMessage(Lexer.getLoc(), "unknown token", "warning"); Error = true; break; case asmtok::Error: diff --git a/utils/TableGen/TGLexer.cpp b/utils/TableGen/TGLexer.cpp index 6fe8d82..04bbf38 100644 --- a/utils/TableGen/TGLexer.cpp +++ b/utils/TableGen/TGLexer.cpp @@ -44,11 +44,11 @@ tgtok::TokKind TGLexer::ReturnError(const char *Loc, const std::string &Msg) { void TGLexer::PrintError(const char *Loc, const std::string &Msg) const { - SrcMgr.PrintMessage(SMLoc::getFromPointer(Loc), Msg); + SrcMgr.PrintMessage(SMLoc::getFromPointer(Loc), Msg, "error"); } void TGLexer::PrintError(SMLoc Loc, const std::string &Msg) const { - SrcMgr.PrintMessage(Loc, Msg); + SrcMgr.PrintMessage(Loc, Msg, "error"); } diff --git a/utils/TableGen/TableGen.cpp b/utils/TableGen/TableGen.cpp index 038cde2..fb80302 100644 --- a/utils/TableGen/TableGen.cpp +++ b/utils/TableGen/TableGen.cpp @@ -127,7 +127,7 @@ RecordKeeper llvm::Records; static SourceMgr SrcMgr; void llvm::PrintError(SMLoc ErrorLoc, const std::string &Msg) { - SrcMgr.PrintMessage(ErrorLoc, Msg); + SrcMgr.PrintMessage(ErrorLoc, Msg, "error"); } |