On Apr 10, 2012, at 15:30, Douglas Gregor wrote:
>
> On Apr 6, 2012, at 11:50 AM, Erik Verbruggen <[email protected]> wrote:
>
>>
>> On Mar 14, 2012, at 17:43, Erik Verbruggen wrote:
>>
>>>
>>>
>>> On 14 mrt. 2012, at 17:34, Douglas Gregor <[email protected]> wrote:
>>>
>>>>
>>>> On Dec 14, 2011, at 7:51 AM, Erik Verbruggen wrote:
>>>>
>>>>> Attached is a patch to have the parser skip method bodies. The beef of
>>>>> the patch is propagating the flag down to the constructor of the Parser
>>>>> class. I also changed the code-completion (which also uses it) to set
>>>>> this flag.
>>>>
>>>>
>>>> This patch seems to have gotten dropped on the floor. I'm fine with this
>>>> patch (although I suspect it's gone rather stale).
>>>
>>> It's very stale. I'll revisit it when I have time and send a new patch.
>>
>>
>> Attached is a revised/updated version of the patch which applies cleanly
>> against trunk rev. #154168.
>
> Two minor comments, then I think this can go in
>
> First, please add a test to the test suite that makes use of this feature
> (verifying that function bodies *don't* get parsed)
Done.
> Second, it doesn't look like SkipFunctionBodies will always get set when
> code-completion is on, with rather unfortunate performance consequences. For
> example, here:
>
> @@ -38,7 +38,8 @@ using namespace clang;
> void clang::ParseAST(Preprocessor &PP, ASTConsumer *Consumer,
> ASTContext &Ctx, bool PrintStats,
> TranslationUnitKind TUKind,
> - CodeCompleteConsumer *CompletionConsumer) {
> + CodeCompleteConsumer *CompletionConsumer,
> + bool SkipFunctionBodies) {
>
> OwningPtr<Sema> S(new Sema(PP, Ctx, *Consumer,
> TUKind,
> @@ -47,10 +48,10 @@ void clang::ParseAST(Preprocessor &PP, ASTConsumer
> *Consumer,
> // Recover resources if we crash before exiting this method.
> llvm::CrashRecoveryContextCleanupRegistrar<Sema> CleaupSema(S.get());
>
> - ParseAST(*S.get(), PrintStats);
> + ParseAST(*S.get(), PrintStats, SkipFunctionBodies);
> }
>
> it seems that we should either have
>
> if (CompletionConsumer) SkipFunctionBodies = true;
>
> or, more directly, have CompilerInstance ensure that, when code completion is
> turned on, SkipFunctionBodies is enabled.
That if got dropped when I updated the patch. I added it to
CompilerInstance::setCodeCompletionConsumer.
> (Also, there's a typo 'CleaupSema' above).
Fixed that one too (and another occurrence). Submitted as r154584.
-- Erik.
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits