[cfe-commits] [Patch 5 of 7] -verify fixes and enhancement

Andy Gibbs andyg1001 at hotmail.co.uk
Tue Jul 10 10:25:43 PDT 2012

On Monday, July 02, 2012 11:15 PM, Jordan Rose wrote:
> On Jun 30, 2012, at 14:12 , Andy Gibbs <andyg1001 at hotmail.co.uk> wrote:
>> Part 5: Renamed Seen and Unseen to FilesWithDirectives and
>> FilesWithDiagnostics as requested; moved changes specific to part 6
>> into part 6 patch; added FIXME on post-process loop.
>> This patch must be combined with part 7 which includes the test-cases. 
>> <verify-part5.diff>
>   // FIXME: Const hack, we screw up the preprocessor but in practice its ok
>   // because it doesn't get reused. It would be better if we could make a copy
>   // though.
>   CurrentPreprocessor = const_cast<Preprocessor*>(PP);
> +  if (CurrentPreprocessor) CurrentPreprocessor->addCommentHandler(this);
>   PrimaryClient->BeginSourceFile(LangOpts, PP);
> }
> void VerifyDiagnosticConsumer::EndSourceFile() {
> +  if (CurrentPreprocessor) CurrentPreprocessor->removeCommentHandler(this);
> The "const hack" isn't actually being used in current code, but
> would be necessary to add and remove your comment handler. However,
> we'll be able to take this out completely after the tests are updated,
> right?

Not exactly, in the sense that add/removeCommentHandler still requires non-
const access.  But I don't believe we're "screwing up" the preprocessor, so
I've taken out the "FIXME".

Apart from the add/removeCommentHandler interface, no non-const access is
made to CurrentPreprocessor, and once the post-processing loop is removed
then CurrentPreprocessor will only be used for this purpose.

As a side-note, if EndSourceFile could be altered to pass the Preprocessor
as an argument like BeginSourceFile then CurrentPreprocessor becomes utterly
obsolete (and along with it, the unsightly const_cast).

> +  std::string C(SM.getCharacterData(Comment.getBegin()),
> +                SM.getCharacterData(Comment.getEnd()));
> StringRef :-) But I'm wondering now if this can share any code with Dmitri's
> doc-comment-parsing work, at least for \<EOL> folding.

Changed to StringRef as suggested.  I've had a look over the recent changes
regarding comment parsing and I will consider moving over to this code once
it has settled down a little (I note that revisions are still being made to

Attached is the revised patch.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: verify-part5.diff
Type: application/octet-stream
Size: 8589 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120710/1d41d485/attachment.obj>

More information about the cfe-commits mailing list