diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-10-31 17:29:28 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-10-31 17:29:28 +0000 |
commit | 81939a752bfb4adbe302e2872271be195e2eacb2 (patch) | |
tree | ed6bbaf536cdfb5689e9b886e39eab94fbc88b59 /lib/Parse/ParseStmt.cpp | |
parent | 25893e0930c1241c3fdafc6f1b8661443bb19692 (diff) |
If skipping bodies is enabled outside code-completion, just skip the body directly
without using tentative parsing.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167142 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/ParseStmt.cpp')
-rw-r--r-- | lib/Parse/ParseStmt.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/Parse/ParseStmt.cpp b/lib/Parse/ParseStmt.cpp index 04d950fb7c..151167515e 100644 --- a/lib/Parse/ParseStmt.cpp +++ b/lib/Parse/ParseStmt.cpp @@ -2028,12 +2028,18 @@ bool Parser::trySkippingFunctionBody() { assert(SkipFunctionBodies && "Should only be called when SkipFunctionBodies is enabled"); + if (!PP.isCodeCompletionEnabled()) { + ConsumeBrace(); + SkipUntil(tok::r_brace, /*StopAtSemi=*/false, /*DontConsume=*/false); + return true; + } + // 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=*/PP.isCodeCompletionEnabled())) { + /*StopAtCodeCompletion=*/true)) { PA.Commit(); return true; } |