]> granicus.if.org Git - clang/commit
Move traverseunqualifiedtypeloc over to the 'main' typeloc tree.
authorCraig Silverstein <csilvers2000@yahoo.com>
Fri, 9 Jul 2010 15:19:34 +0000 (15:19 +0000)
committerCraig Silverstein <csilvers2000@yahoo.com>
Fri, 9 Jul 2010 15:19:34 +0000 (15:19 +0000)
commit6b3f1ebce775499aff03845193de78128671262f
tree144195ae0395f586892eebb777c470a92fb8ade5
parentab9e2f5aa498a5e0a67db4c823de3e995b86688e
Move traverseunqualifiedtypeloc over to the 'main' typeloc tree.
Note that this is a move -- we pretend that we were really looking
at the unqualified typeloc all along -- rather than a recursion, so
we don't follow the normal CRTP plan of going through
getDerived().TraverseTypeLoc.  If we did, we'd be traversing twice
for the same type (once as a QualifiedTypeLoc version of the type,
once as an UnqualifiedTypeLoc version of the type), which in effect
means we'd call VisitTypeLoc twice with the 'same' type.  This
solves that problem, at the cost of never seeing the qualified
version of the type (unless the client subclasses
TraverseQualifiedTypeLoc themselves).  It's not a perfect solution.
A perfect solution probably requires making QualifiedTypeLoc a
wrapper around TypeLoc -- like QualType is a wrapper around Type*
-- rather than being its own class in the type hierarchy.

Reviewed by wan.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107973 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/RecursiveASTVisitor.h