[cfe-commits] Properly visit CXXForRangeStmts in RecursiveASTVisitor

James Dennett jdennett at google.com
Tue Jun 12 22:57:43 PDT 2012


On Tue, Jun 12, 2012 at 10:48 PM, Richard Smith <richard at metafoo.co.uk> wrote:
> Hi Daniel,
>
>
> On Tue, Jun 12, 2012 at 10:36 PM, Daniel Jasper <djasper at google.com> wrote:
>>
>> Please find the attached patch, which changes the RecursiveASTVisitor
>> behavior for CXXForRangeStmts, for review.
>>
>> Depending on whether a RecursiveASTVisitor should visit implicit
>> declarations, we need to do different things when visiting a range-based for
>> loop.
>>
>> If visiting implicit declarations, we can simply visit all children as we
>> currently do.
>>
>> If not, we should explicitly visit the loop variable (but not its implicit
>> initialization) and the range initialization. Otherwise, we would not visit
>> the range initialization at all (although it is explicit) because it is part
>> of an implicit VarDecl.
>
>
> The patch looks great, but please update the comment for
> shouldVisitImplicitDeclarations to indicate that it also controls whether we
> visit implicit expressions in some cases. (I'm wary of renaming it, because
> that might silently break external RAV users...)

While breakage is possible (and worthy of caution),
shouldVisitImplicitDeclarations() was added just a week ago.  As one
of its users, I'd happily pay the price of updating my code if it
meant avoiding a misleading function name.  (One of those eternal
tradeoffs: the more specific a name is, the more resistant it is to
future changes.)

That said, I don't have a good suggestion for a name;
shouldVisitImplicitCode, maybe.  By the time we cover declarations and
expressions, there's not a whole lot left (well, other statements, I
guess, but why make the name so specific that it rules that out).

-- James



More information about the cfe-commits mailing list