From f88836d949e42452167d312e57a1425b3859d36b Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Tue, 27 Nov 2012 21:57:34 +0000 Subject: [PATCH] Move PrettyStackTraceParserEntry to ParseAST.cpp r128056 moved PrettyStackTraceParserEntry construction from Parser.h to ParseAST.cpp, so there's no need to keep this class in a header. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168731 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Parse/Parser.h | 9 --------- lib/Parse/ParseAST.cpp | 38 +++++++++++++++++++++++++++++++++--- lib/Parse/Parser.cpp | 23 ---------------------- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/include/clang/Parse/Parser.h b/include/clang/Parse/Parser.h index 4c9efc71bc..4f4f464e11 100644 --- a/include/clang/Parse/Parser.h +++ b/include/clang/Parse/Parser.h @@ -44,15 +44,6 @@ namespace clang { class PoisonSEHIdentifiersRAIIObject; class VersionTuple; -/// PrettyStackTraceParserEntry - If a crash happens while the parser is active, -/// an entry is printed for it. -class PrettyStackTraceParserEntry : public llvm::PrettyStackTraceEntry { - const Parser &P; -public: - PrettyStackTraceParserEntry(const Parser &p) : P(p) {} - virtual void print(raw_ostream &OS) const; -}; - /// PrecedenceLevels - These are precedences for the binary/ternary /// operators in the C99 grammar. These have been named to relate /// with the C99 grammar productions. Low precedences numbers bind diff --git a/lib/Parse/ParseAST.cpp b/lib/Parse/ParseAST.cpp index 7d68e1f37e..560febebc6 100644 --- a/lib/Parse/ParseAST.cpp +++ b/lib/Parse/ParseAST.cpp @@ -29,6 +29,40 @@ using namespace clang; +namespace { + +/// If a crash happens while the parser is active, an entry is printed for it. +class PrettyStackTraceParserEntry : public llvm::PrettyStackTraceEntry { + const Parser &P; +public: + PrettyStackTraceParserEntry(const Parser &p) : P(p) {} + virtual void print(raw_ostream &OS) const; +}; + +/// If a crash happens while the parser is active, print out a line indicating +/// what the current token is. +void PrettyStackTraceParserEntry::print(raw_ostream &OS) const { + const Token &Tok = P.getCurToken(); + if (Tok.is(tok::eof)) { + OS << " parser at end of file\n"; + return; + } + + if (Tok.getLocation().isInvalid()) { + OS << " parser at unknown location\n"; + return; + } + + const Preprocessor &PP = P.getPreprocessor(); + Tok.getLocation().print(OS, PP.getSourceManager()); + if (Tok.isAnnotation()) + OS << ": at annotation token \n"; + else + OS << ": current parser token '" << PP.getSpelling(Tok) << "'\n"; +} + +} // namespace + //===----------------------------------------------------------------------===// // Public interface to the file //===----------------------------------------------------------------------===// @@ -43,9 +77,7 @@ void clang::ParseAST(Preprocessor &PP, ASTConsumer *Consumer, CodeCompleteConsumer *CompletionConsumer, bool SkipFunctionBodies) { - OwningPtr S(new Sema(PP, Ctx, *Consumer, - TUKind, - CompletionConsumer)); + OwningPtr S(new Sema(PP, Ctx, *Consumer, TUKind, CompletionConsumer)); // Recover resources if we crash before exiting this method. llvm::CrashRecoveryContextCleanupRegistrar CleanupSema(S.get()); diff --git a/lib/Parse/Parser.cpp b/lib/Parse/Parser.cpp index dfffe8150f..12cced13b6 100644 --- a/lib/Parse/Parser.cpp +++ b/lib/Parse/Parser.cpp @@ -103,29 +103,6 @@ Parser::Parser(Preprocessor &pp, Sema &actions, bool skipFunctionBodies) PP.setCodeCompletionHandler(*this); } -/// If a crash happens while the parser is active, print out a line indicating -/// what the current token is. -void PrettyStackTraceParserEntry::print(raw_ostream &OS) const { - const Token &Tok = P.getCurToken(); - if (Tok.is(tok::eof)) { - OS << " parser at end of file\n"; - return; - } - - if (Tok.getLocation().isInvalid()) { - OS << " parser at unknown location\n"; - return; - } - - const Preprocessor &PP = P.getPreprocessor(); - Tok.getLocation().print(OS, PP.getSourceManager()); - if (Tok.isAnnotation()) - OS << ": at annotation token \n"; - else - OS << ": current parser token '" << PP.getSpelling(Tok) << "'\n"; -} - - DiagnosticBuilder Parser::Diag(SourceLocation Loc, unsigned DiagID) { return Diags.Report(Loc, DiagID); } -- 2.40.0