diff options
author | Erik Verbruggen <erikjv@me.com> | 2012-04-12 10:11:59 +0000 |
---|---|---|
committer | Erik Verbruggen <erikjv@me.com> | 2012-04-12 10:11:59 +0000 |
commit | 6e92251f9b8191e0bad9e73b4a2a5932a4f35f91 (patch) | |
tree | aa1068ef614617995355eae4f9d9d8a1b78fa52a /clang/lib/Parse/ParseStmt.cpp | |
parent | f2a8ea3afdc4f30061ca637d94a4f1974a93c8f2 (diff) | |
download | bcm5719-llvm-6e92251f9b8191e0bad9e73b4a2a5932a4f35f91.tar.gz bcm5719-llvm-6e92251f9b8191e0bad9e73b4a2a5932a4f35f91.zip |
Added a flag to the parser to skip method bodies.
llvm-svn: 154584
Diffstat (limited to 'clang/lib/Parse/ParseStmt.cpp')
-rw-r--r-- | clang/lib/Parse/ParseStmt.cpp | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp index 9f6a3a03daa..fdb97886676 100644 --- a/clang/lib/Parse/ParseStmt.cpp +++ b/clang/lib/Parse/ParseStmt.cpp @@ -1958,11 +1958,9 @@ Decl *Parser::ParseFunctionStatementBody(Decl *Decl, ParseScope &BodyScope) { assert(Tok.is(tok::l_brace)); SourceLocation LBraceLoc = Tok.getLocation(); - if (PP.isCodeCompletionEnabled()) { - if (trySkippingFunctionBodyForCodeCompletion()) { - BodyScope.Exit(); - return Actions.ActOnFinishFunctionBody(Decl, 0); - } + if (SkipFunctionBodies && trySkippingFunctionBody()) { + BodyScope.Exit(); + return Actions.ActOnFinishFunctionBody(Decl, 0); } PrettyDeclStackTraceEntry CrashInfo(Actions, Decl, LBraceLoc, @@ -2002,11 +2000,9 @@ Decl *Parser::ParseFunctionTryBlock(Decl *Decl, ParseScope &BodyScope) { else Actions.ActOnDefaultCtorInitializers(Decl); - if (PP.isCodeCompletionEnabled()) { - if (trySkippingFunctionBodyForCodeCompletion()) { - BodyScope.Exit(); - return Actions.ActOnFinishFunctionBody(Decl, 0); - } + if (SkipFunctionBodies && trySkippingFunctionBody()) { + BodyScope.Exit(); + return Actions.ActOnFinishFunctionBody(Decl, 0); } SourceLocation LBraceLoc = Tok.getLocation(); @@ -2023,17 +2019,17 @@ Decl *Parser::ParseFunctionTryBlock(Decl *Decl, ParseScope &BodyScope) { return Actions.ActOnFinishFunctionBody(Decl, FnBody.take()); } -bool Parser::trySkippingFunctionBodyForCodeCompletion() { +bool Parser::trySkippingFunctionBody() { assert(Tok.is(tok::l_brace)); - assert(PP.isCodeCompletionEnabled() && - "Should only be called when in code-completion mode"); + assert(SkipFunctionBodies && + "Should only be called when SkipFunctionBodies is enabled"); // We're in code-completion mode. Skip parsing for all function bodies unless // the body contains the code-completion point. TentativeParsingAction PA(*this); ConsumeBrace(); if (SkipUntil(tok::r_brace, /*StopAtSemi=*/false, /*DontConsume=*/false, - /*StopAtCodeCompletion=*/true)) { + /*StopAtCodeCompletion=*/PP.isCodeCompletionEnabled())) { PA.Commit(); return true; } |