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 | 6a91d385618ea4d28236c496f540a26877c95525 (patch) | |
tree | 519b6349002f939312dbf362c992bd0507211beb /lib/Parse/ParseStmt.cpp | |
parent | f33d549b16a4d2f7325a099eee0ab7ee50c9528f (diff) |
Added a flag to the parser to skip method bodies.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154584 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/ParseStmt.cpp')
-rw-r--r-- | lib/Parse/ParseStmt.cpp | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/lib/Parse/ParseStmt.cpp b/lib/Parse/ParseStmt.cpp index 9f6a3a03da..fdb9788667 100644 --- a/lib/Parse/ParseStmt.cpp +++ b/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; } |