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

Jordan Rose jordan_rose at apple.com
Thu Jul 5 09:36:37 PDT 2012


On Jul 5, 2012, at 0:18 , Andy Gibbs <andyg1001 at hotmail.co.uk> wrote:

> On Wednesday, July 04, 2012 5:41 PM, Andy Gibbs wrote:
>> On Wednesday, July 04, 2012 2:35 AM, Jordan Rose wrote:
>>> [...snip...]
>>> Oops, I see that's already been taken care of. Wait, so why do
>>> we need the additional check at the end? Referring to this part
>>> of the patch:
>>> 
>>>> -    if (D.Location.isInvalid() || !SourceMgr)
>>>> +    if (D.DiagnosticLoc.isInvalid() || !SourceMgr)
>>> 
>>> I see that it's not /your/ isInvalid() originally, but I don't
>>> think anything should break if you take it away. ...probably.
>> 
>> Well it passed the simple check which was to stick an assert in
>> and see if anything broke!  I also cannot conceive of a reason
>> why DiagnosticLoc could be invalid at this point.
>> 
>> However, I would be tempted to leave it in since it was in before.
>> I can only think that the originator had some reason for making
>> the check rather than asserting, meaning that he may have foreseen
>> a situation where DiagnosticLoc may be invalid.  I will check
>> through the commit logs to see if anything comes up.
> 
> I have checked through the commits and I believe that the isInvalid
> check comes from r102516 when the PrintProblem function was
> duplicated.  I believe it is safe therefore to remove the check in
> this duplicated version of PrintProblem since it is only used in
> the situation where DiagnosticLoc must be valid.
> 
> Attached then is a patch which tidies up the PrintProblem functions.
> It renames them PrintUnexpected and PrintExpected according to their
> application.  The SourceManager pointer in PrintExpected has been
> changed to a reference and the "if" clause has subsequently dropped
> out.
> 
> A similar change can not be made to PrintUnexpected since it may be
> used in a situation either where there is not a SourceManager or
> where the diagnostic location is invalid.
> 
> This patch is in addition to patches 1, 2 and 3 posted recently.
> It should be possible to apply it directly after patch 2, but I
> have only tested it applied after patch 3.
> 
> Cheers,
> Andy
> <verify-part2a.diff>

Looks good to me! One thing that could make it even better: don't print the directive location if it's on the same line as the diagnostic location.

Jordan



More information about the cfe-commits mailing list