/// specified file. This is not a fast method.
unsigned FindLineNumber(SMLoc Loc, int BufferID = -1) const;
-
- /// PrintError - Emit an error message about the specified location with the
+ /// PrintMessage - Emit a message about the specified location with the
/// specified string.
- void PrintError(SMLoc ErrorLoc, const std::string &Msg) const;
+ void PrintMessage(SMLoc Loc, const std::string &Msg) const;
private:
void PrintIncludeStack(SMLoc IncludeLoc) const;
}
-void SourceMgr::PrintError(SMLoc ErrorLoc, const std::string &Msg) const {
+void SourceMgr::PrintMessage(SMLoc Loc, const std::string &Msg) const {
raw_ostream &OS = errs();
// First thing to do: find the current buffer containing the specified
// location.
- int CurBuf = FindBufferContainingLoc(ErrorLoc);
+ int CurBuf = FindBufferContainingLoc(Loc);
assert(CurBuf != -1 && "Invalid or unspecified location!");
PrintIncludeStack(getBufferInfo(CurBuf).IncludeLoc);
OS << "Parsing " << CurMB->getBufferIdentifier() << ":"
- << FindLineNumber(ErrorLoc, CurBuf) << ": ";
+ << FindLineNumber(Loc, CurBuf) << ": ";
OS << Msg << "\n";
// Scan backward to find the start of the line.
- const char *LineStart = ErrorLoc.getPointer();
+ const char *LineStart = Loc.getPointer();
while (LineStart != CurMB->getBufferStart() &&
LineStart[-1] != '\n' && LineStart[-1] != '\r')
--LineStart;
// Get the end of the line.
- const char *LineEnd = ErrorLoc.getPointer();
+ const char *LineEnd = Loc.getPointer();
while (LineEnd != CurMB->getBufferEnd() &&
LineEnd[0] != '\n' && LineEnd[0] != '\r')
++LineEnd;
// Print out the line.
OS << std::string(LineStart, LineEnd) << "\n";
// Print out spaces before the caret.
- for (const char *Pos = LineStart; Pos != ErrorLoc.getPointer(); ++Pos)
+ for (const char *Pos = LineStart; Pos != Loc.getPointer(); ++Pos)
OS << (*Pos == '\t' ? '\t' : ' ');
OS << "^\n";
}
return SMLoc::getFromPointer(TokStart);
}
-void AsmLexer::PrintError(const char *Loc, const std::string &Msg) const {
- SrcMgr.PrintError(SMLoc::getFromPointer(Loc), Msg);
-}
-
-void AsmLexer::PrintError(SMLoc Loc, const std::string &Msg) const {
- SrcMgr.PrintError(Loc, Msg);
+void AsmLexer::PrintMessage(SMLoc Loc, const std::string &Msg) const {
+ SrcMgr.PrintMessage(Loc, Msg);
}
/// 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) {
- PrintError(Loc, Msg);
+ SrcMgr.PrintMessage(SMLoc::getFromPointer(Loc), Msg);
return asmtok::Error;
}
CurChar = getNextChar();
}
- if (CurChar == EOF) {
- PrintError(TokStart, "unterminated string constant");
- return asmtok::Eof;
- }
+ if (CurChar == EOF)
+ return ReturnError(TokStart, "unterminated string constant");
CurChar = getNextChar();
}
SMLoc getLoc() const;
- void PrintError(const char *Loc, const std::string &Msg) const;
- void PrintError(SMLoc Loc, const std::string &Msg) const;
+ void PrintMessage(SMLoc Loc, const std::string &Msg) const;
private:
int getNextChar();
#include "llvm/Support/raw_ostream.h"
using namespace llvm;
+bool AsmParser::Error(SMLoc L, const char *Msg) {
+ Lexer.PrintMessage(L, Msg);
+ return true;
+}
+
+bool AsmParser::TokError(const char *Msg) {
+ Lexer.PrintMessage(Lexer.getLoc(), Msg);
+ return true;
+}
+
+
bool AsmParser::Run() {
// Prime the lexer.
Lexer.Lex();
bool AsmParser::ParseStatement() {
switch (Lexer.getKind()) {
default:
- Lexer.PrintError(Lexer.getLoc(), "unexpected token at start of statement");
- return true;
+ return TokError("unexpected token at start of statement");
case asmtok::EndOfStatement:
Lexer.Lex();
return false;
private:
bool ParseStatement();
+ bool Error(SMLoc L, const char *Msg);
+ bool TokError(const char *Msg);
};
} // end namespace llvm
while (Tok != asmtok::Eof) {
switch (Tok) {
default:
- Lexer.PrintError(Lexer.getLoc(), "driver: unknown token");
+ Lexer.PrintMessage(Lexer.getLoc(), "driver: unknown token");
Error = true;
break;
case asmtok::Error:
void TGLexer::PrintError(const char *Loc, const std::string &Msg) const {
- SrcMgr.PrintError(SMLoc::getFromPointer(Loc), Msg);
+ SrcMgr.PrintMessage(SMLoc::getFromPointer(Loc), Msg);
}
void TGLexer::PrintError(SMLoc Loc, const std::string &Msg) const {
- SrcMgr.PrintError(Loc, Msg);
+ SrcMgr.PrintMessage(Loc, Msg);
}
static SourceMgr SrcMgr;
void llvm::PrintError(SMLoc ErrorLoc, const std::string &Msg) {
- SrcMgr.PrintError(ErrorLoc, Msg);
+ SrcMgr.PrintMessage(ErrorLoc, Msg);
}