forked from OSchip/llvm-project
[AST] Respect shouldTraversePostOrder when traversing type locs
Summary: Copy of https://reviews.llvm.org/D72072, submitting with ilya-biryukov's permission. Reviewers: gribozavr2 Reviewed By: gribozavr2 Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D76001
This commit is contained in:
parent
05343588e3
commit
b720543926
|
@ -1127,10 +1127,17 @@ DEF_TRAVERSE_TYPE(PipeType, { TRY_TO(TraverseType(T->getElementType())); })
|
|||
#define DEF_TRAVERSE_TYPELOC(TYPE, CODE) \
|
||||
template <typename Derived> \
|
||||
bool RecursiveASTVisitor<Derived>::Traverse##TYPE##Loc(TYPE##Loc TL) { \
|
||||
if (getDerived().shouldWalkTypesOfTypeLocs()) \
|
||||
TRY_TO(WalkUpFrom##TYPE(const_cast<TYPE *>(TL.getTypePtr()))); \
|
||||
TRY_TO(WalkUpFrom##TYPE##Loc(TL)); \
|
||||
if (!getDerived().shouldTraversePostOrder()) { \
|
||||
TRY_TO(WalkUpFrom##TYPE##Loc(TL)); \
|
||||
if (getDerived().shouldWalkTypesOfTypeLocs()) \
|
||||
TRY_TO(WalkUpFrom##TYPE(const_cast<TYPE *>(TL.getTypePtr()))); \
|
||||
} \
|
||||
{ CODE; } \
|
||||
if (getDerived().shouldTraversePostOrder()) { \
|
||||
TRY_TO(WalkUpFrom##TYPE##Loc(TL)); \
|
||||
if (getDerived().shouldWalkTypesOfTypeLocs()) \
|
||||
TRY_TO(WalkUpFrom##TYPE(const_cast<TYPE *>(TL.getTypePtr()))); \
|
||||
} \
|
||||
return true; \
|
||||
}
|
||||
|
||||
|
@ -1199,22 +1206,22 @@ bool RecursiveASTVisitor<Derived>::TraverseArrayTypeLocHelper(ArrayTypeLoc TL) {
|
|||
|
||||
DEF_TRAVERSE_TYPELOC(ConstantArrayType, {
|
||||
TRY_TO(TraverseTypeLoc(TL.getElementLoc()));
|
||||
return TraverseArrayTypeLocHelper(TL);
|
||||
TRY_TO(TraverseArrayTypeLocHelper(TL));
|
||||
})
|
||||
|
||||
DEF_TRAVERSE_TYPELOC(IncompleteArrayType, {
|
||||
TRY_TO(TraverseTypeLoc(TL.getElementLoc()));
|
||||
return TraverseArrayTypeLocHelper(TL);
|
||||
TRY_TO(TraverseArrayTypeLocHelper(TL));
|
||||
})
|
||||
|
||||
DEF_TRAVERSE_TYPELOC(VariableArrayType, {
|
||||
TRY_TO(TraverseTypeLoc(TL.getElementLoc()));
|
||||
return TraverseArrayTypeLocHelper(TL);
|
||||
TRY_TO(TraverseArrayTypeLocHelper(TL));
|
||||
})
|
||||
|
||||
DEF_TRAVERSE_TYPELOC(DependentSizedArrayType, {
|
||||
TRY_TO(TraverseTypeLoc(TL.getElementLoc()));
|
||||
return TraverseArrayTypeLocHelper(TL);
|
||||
TRY_TO(TraverseArrayTypeLocHelper(TL));
|
||||
})
|
||||
|
||||
DEF_TRAVERSE_TYPELOC(DependentAddressSpaceType, {
|
||||
|
|
Loading…
Reference in New Issue