forked from OSchip/llvm-project
Revert RecursiveASTVisitor fixes.
This reverts commit8bf4c40af8
. This reverts commit7b0be962d6
. This reverts commit94454442c3
. Some compilers on some buildbots didn't accept the specialization of is_same_method_impl in a non-namespace scope.
This commit is contained in:
parent
8bf4c40af8
commit
19eaff650c
|
@ -331,32 +331,6 @@ private:
|
|||
struct has_same_member_pointer_type<R (T::*)(P...), R (U::*)(P...)>
|
||||
: std::true_type {};
|
||||
|
||||
template <bool has_same_type> struct is_same_method_impl {
|
||||
template <typename FirstMethodPtrTy, typename SecondMethodPtrTy>
|
||||
static bool isSameMethod(FirstMethodPtrTy FirstMethodPtr,
|
||||
SecondMethodPtrTy SecondMethodPtr) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
template <> struct is_same_method_impl<true> {
|
||||
template <typename FirstMethodPtrTy, typename SecondMethodPtrTy>
|
||||
static bool isSameMethod(FirstMethodPtrTy FirstMethodPtr,
|
||||
SecondMethodPtrTy SecondMethodPtr) {
|
||||
return FirstMethodPtr == SecondMethodPtr;
|
||||
}
|
||||
};
|
||||
|
||||
/// Returns true if and only if \p FirstMethodPtr and \p SecondMethodPtr
|
||||
/// are pointers to the same non-static member function.
|
||||
template <typename FirstMethodPtrTy, typename SecondMethodPtrTy>
|
||||
bool isSameMethod(FirstMethodPtrTy FirstMethodPtr,
|
||||
SecondMethodPtrTy SecondMethodPtr) {
|
||||
return is_same_method_impl<
|
||||
has_same_member_pointer_type<FirstMethodPtrTy, SecondMethodPtrTy>::
|
||||
value>::isSameMethod(FirstMethodPtr, SecondMethodPtr);
|
||||
}
|
||||
|
||||
// Traverse the given statement. If the most-derived traverse function takes a
|
||||
// data recursion queue, pass it on; otherwise, discard it. Note that the
|
||||
// first branch of this conditional must compile whether or not the derived
|
||||
|
@ -412,8 +386,6 @@ public:
|
|||
if (!getDerived().shouldTraversePostOrder()) \
|
||||
TRY_TO(WalkUpFromUnary##NAME(S)); \
|
||||
TRY_TO_TRAVERSE_OR_ENQUEUE_STMT(S->getSubExpr()); \
|
||||
if (!Queue && getDerived().shouldTraversePostOrder()) \
|
||||
TRY_TO(WalkUpFromUnary##NAME(S)); \
|
||||
return true; \
|
||||
} \
|
||||
bool WalkUpFromUnary##NAME(UnaryOperator *S) { \
|
||||
|
@ -435,8 +407,6 @@ public:
|
|||
TRY_TO(WalkUpFromBin##NAME(S)); \
|
||||
TRY_TO_TRAVERSE_OR_ENQUEUE_STMT(S->getLHS()); \
|
||||
TRY_TO_TRAVERSE_OR_ENQUEUE_STMT(S->getRHS()); \
|
||||
if (!Queue && getDerived().shouldTraversePostOrder()) \
|
||||
TRY_TO(WalkUpFromBin##NAME(S)); \
|
||||
return true; \
|
||||
} \
|
||||
bool WalkUpFromBin##NAME(BINOP_TYPE *S) { \
|
||||
|
@ -593,6 +563,7 @@ bool RecursiveASTVisitor<Derived>::dataTraverseNode(Stmt *S,
|
|||
|
||||
BINOP_LIST()
|
||||
#undef OPERATOR
|
||||
#undef BINOP_LIST
|
||||
|
||||
#define OPERATOR(NAME) \
|
||||
case BO_##NAME##Assign: \
|
||||
|
@ -600,6 +571,7 @@ bool RecursiveASTVisitor<Derived>::dataTraverseNode(Stmt *S,
|
|||
|
||||
CAO_LIST()
|
||||
#undef OPERATOR
|
||||
#undef CAO_LIST
|
||||
}
|
||||
} else if (UnaryOperator *UnOp = dyn_cast<UnaryOperator>(S)) {
|
||||
switch (UnOp->getOpcode()) {
|
||||
|
@ -609,6 +581,7 @@ bool RecursiveASTVisitor<Derived>::dataTraverseNode(Stmt *S,
|
|||
|
||||
UNARYOP_LIST()
|
||||
#undef OPERATOR
|
||||
#undef UNARYOP_LIST
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -630,84 +603,23 @@ bool RecursiveASTVisitor<Derived>::dataTraverseNode(Stmt *S,
|
|||
|
||||
template <typename Derived>
|
||||
bool RecursiveASTVisitor<Derived>::PostVisitStmt(Stmt *S) {
|
||||
// In pre-order traversal mode, each Traverse##STMT method is responsible for
|
||||
// calling WalkUpFrom. Therefore, if the user overrides Traverse##STMT and
|
||||
// does not call the default implementation, the WalkUpFrom callback is not
|
||||
// called. Post-order traversal mode should provide the same behavior
|
||||
// regarding method overrides.
|
||||
//
|
||||
// In post-order traversal mode the Traverse##STMT method, when it receives a
|
||||
// DataRecursionQueue, can't call WalkUpFrom after traversing children because
|
||||
// it only enqueues the children and does not traverse them. TraverseStmt
|
||||
// traverses the enqueued children, and we call WalkUpFrom here.
|
||||
//
|
||||
// However, to make pre-order and post-order modes identical with regards to
|
||||
// whether they call WalkUpFrom at all, we call WalkUpFrom if and only if the
|
||||
// user did not override the Traverse##STMT method. We implement the override
|
||||
// check with isSameMethod calls below.
|
||||
|
||||
if (BinaryOperator *BinOp = dyn_cast<BinaryOperator>(S)) {
|
||||
switch (BinOp->getOpcode()) {
|
||||
#define OPERATOR(NAME) \
|
||||
case BO_##NAME: \
|
||||
if (isSameMethod(&RecursiveASTVisitor::TraverseBin##NAME, \
|
||||
&Derived::TraverseBin##NAME)) { \
|
||||
TRY_TO(WalkUpFromBin##NAME(static_cast<BinaryOperator *>(S))); \
|
||||
} \
|
||||
return true;
|
||||
|
||||
BINOP_LIST()
|
||||
#undef OPERATOR
|
||||
|
||||
#define OPERATOR(NAME) \
|
||||
case BO_##NAME##Assign: \
|
||||
if (isSameMethod(&RecursiveASTVisitor::TraverseBin##NAME##Assign, \
|
||||
&Derived::TraverseBin##NAME##Assign)) { \
|
||||
TRY_TO(WalkUpFromBin##NAME##Assign( \
|
||||
static_cast<CompoundAssignOperator *>(S))); \
|
||||
} \
|
||||
return true;
|
||||
|
||||
CAO_LIST()
|
||||
#undef OPERATOR
|
||||
}
|
||||
} else if (UnaryOperator *UnOp = dyn_cast<UnaryOperator>(S)) {
|
||||
switch (UnOp->getOpcode()) {
|
||||
#define OPERATOR(NAME) \
|
||||
case UO_##NAME: \
|
||||
if (isSameMethod(&RecursiveASTVisitor::TraverseUnary##NAME, \
|
||||
&Derived::TraverseUnary##NAME)) { \
|
||||
TRY_TO(WalkUpFromUnary##NAME(static_cast<UnaryOperator *>(S))); \
|
||||
} \
|
||||
return true;
|
||||
|
||||
UNARYOP_LIST()
|
||||
#undef OPERATOR
|
||||
}
|
||||
}
|
||||
|
||||
switch (S->getStmtClass()) {
|
||||
case Stmt::NoStmtClass:
|
||||
break;
|
||||
#define ABSTRACT_STMT(STMT)
|
||||
#define STMT(CLASS, PARENT) \
|
||||
case Stmt::CLASS##Class: \
|
||||
if (isSameMethod(&RecursiveASTVisitor::Traverse##CLASS, \
|
||||
&Derived::Traverse##CLASS)) { \
|
||||
TRY_TO(WalkUpFrom##CLASS(static_cast<CLASS *>(S))); \
|
||||
} \
|
||||
break;
|
||||
TRY_TO(WalkUpFrom##CLASS(static_cast<CLASS *>(S))); break;
|
||||
#define INITLISTEXPR(CLASS, PARENT) \
|
||||
case Stmt::CLASS##Class: \
|
||||
if (isSameMethod(&RecursiveASTVisitor::Traverse##CLASS, \
|
||||
&Derived::Traverse##CLASS)) { \
|
||||
{ \
|
||||
auto ILE = static_cast<CLASS *>(S); \
|
||||
if (auto Syn = ILE->isSemanticForm() ? ILE->getSyntacticForm() : ILE) \
|
||||
TRY_TO(WalkUpFrom##CLASS(Syn)); \
|
||||
if (auto Sem = ILE->isSemanticForm() ? ILE : ILE->getSemanticForm()) \
|
||||
TRY_TO(WalkUpFrom##CLASS(Sem)); \
|
||||
} \
|
||||
break;
|
||||
break; \
|
||||
}
|
||||
#include "clang/AST/StmtNodes.inc"
|
||||
}
|
||||
|
||||
|
@ -2304,13 +2216,8 @@ DEF_TRAVERSE_DECL(RequiresExprBodyDecl, {})
|
|||
TRY_TO_TRAVERSE_OR_ENQUEUE_STMT(SubStmt); \
|
||||
} \
|
||||
} \
|
||||
/* Call WalkUpFrom if TRY_TO_TRAVERSE_OR_ENQUEUE_STMT has traversed the \
|
||||
* children already. If TRY_TO_TRAVERSE_OR_ENQUEUE_STMT only enqueued the \
|
||||
* children, PostVisitStmt will call WalkUpFrom after we are done visiting \
|
||||
* children. */ \
|
||||
if (!Queue && ReturnValue && getDerived().shouldTraversePostOrder()) { \
|
||||
if (!Queue && ReturnValue && getDerived().shouldTraversePostOrder()) \
|
||||
TRY_TO(WalkUpFrom##STMT(S)); \
|
||||
} \
|
||||
return ReturnValue; \
|
||||
}
|
||||
|
||||
|
@ -2481,9 +2388,6 @@ bool RecursiveASTVisitor<Derived>::TraverseSynOrSemInitListExpr(
|
|||
for (Stmt *SubStmt : S->children()) {
|
||||
TRY_TO_TRAVERSE_OR_ENQUEUE_STMT(SubStmt);
|
||||
}
|
||||
|
||||
if (!Queue && getDerived().shouldTraversePostOrder())
|
||||
TRY_TO(WalkUpFromInitListExpr(S));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -3705,10 +3609,6 @@ bool RecursiveASTVisitor<Derived>::VisitOMPAffinityClause(
|
|||
|
||||
#undef TRY_TO
|
||||
|
||||
#undef UNARYOP_LIST
|
||||
#undef BINOP_LIST
|
||||
#undef CAO_LIST
|
||||
|
||||
} // end namespace clang
|
||||
|
||||
#endif // LLVM_CLANG_AST_RECURSIVEASTVISITOR_H
|
||||
|
|
|
@ -578,19 +578,15 @@ public:
|
|||
// RAV traverses it as a statement, we produce invalid node kinds in that
|
||||
// case.
|
||||
// FIXME: should do this in RAV instead?
|
||||
bool Result = [&, this]() {
|
||||
if (S->getInit() && !TraverseStmt(S->getInit()))
|
||||
return false;
|
||||
if (S->getLoopVariable() && !TraverseDecl(S->getLoopVariable()))
|
||||
return false;
|
||||
if (S->getRangeInit() && !TraverseStmt(S->getRangeInit()))
|
||||
return false;
|
||||
if (S->getBody() && !TraverseStmt(S->getBody()))
|
||||
return false;
|
||||
return true;
|
||||
}();
|
||||
WalkUpFromCXXForRangeStmt(S);
|
||||
return Result;
|
||||
if (S->getInit() && !TraverseStmt(S->getInit()))
|
||||
return false;
|
||||
if (S->getLoopVariable() && !TraverseDecl(S->getLoopVariable()))
|
||||
return false;
|
||||
if (S->getRangeInit() && !TraverseStmt(S->getRangeInit()))
|
||||
return false;
|
||||
if (S->getBody() && !TraverseStmt(S->getBody()))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TraverseStmt(Stmt *S) {
|
||||
|
|
|
@ -154,17 +154,22 @@ TraverseIntegerLiteral IntegerLiteral(5)
|
|||
R"txt(
|
||||
TraverseIntegerLiteral IntegerLiteral(1)
|
||||
WalkUpFromStmt IntegerLiteral(1)
|
||||
WalkUpFromStmt IntegerLiteral(1)
|
||||
TraverseIntegerLiteral IntegerLiteral(2)
|
||||
WalkUpFromStmt IntegerLiteral(2)
|
||||
WalkUpFromStmt IntegerLiteral(2)
|
||||
TraverseIntegerLiteral IntegerLiteral(3)
|
||||
WalkUpFromStmt IntegerLiteral(3)
|
||||
WalkUpFromStmt IntegerLiteral(3)
|
||||
WalkUpFromStmt BinaryOperator(+)
|
||||
WalkUpFromStmt DeclRefExpr(add)
|
||||
WalkUpFromStmt ImplicitCastExpr
|
||||
TraverseIntegerLiteral IntegerLiteral(4)
|
||||
WalkUpFromStmt IntegerLiteral(4)
|
||||
WalkUpFromStmt IntegerLiteral(4)
|
||||
TraverseIntegerLiteral IntegerLiteral(5)
|
||||
WalkUpFromStmt IntegerLiteral(5)
|
||||
WalkUpFromStmt IntegerLiteral(5)
|
||||
WalkUpFromStmt CallExpr(add)
|
||||
WalkUpFromStmt CompoundStmt
|
||||
)txt"));
|
||||
|
@ -253,14 +258,23 @@ TraverseIntegerLiteral IntegerLiteral(1)
|
|||
WalkUpFromIntegerLiteral IntegerLiteral(1)
|
||||
WalkUpFromExpr IntegerLiteral(1)
|
||||
WalkUpFromStmt IntegerLiteral(1)
|
||||
WalkUpFromIntegerLiteral IntegerLiteral(1)
|
||||
WalkUpFromExpr IntegerLiteral(1)
|
||||
WalkUpFromStmt IntegerLiteral(1)
|
||||
TraverseIntegerLiteral IntegerLiteral(2)
|
||||
WalkUpFromIntegerLiteral IntegerLiteral(2)
|
||||
WalkUpFromExpr IntegerLiteral(2)
|
||||
WalkUpFromStmt IntegerLiteral(2)
|
||||
WalkUpFromIntegerLiteral IntegerLiteral(2)
|
||||
WalkUpFromExpr IntegerLiteral(2)
|
||||
WalkUpFromStmt IntegerLiteral(2)
|
||||
TraverseIntegerLiteral IntegerLiteral(3)
|
||||
WalkUpFromIntegerLiteral IntegerLiteral(3)
|
||||
WalkUpFromExpr IntegerLiteral(3)
|
||||
WalkUpFromStmt IntegerLiteral(3)
|
||||
WalkUpFromIntegerLiteral IntegerLiteral(3)
|
||||
WalkUpFromExpr IntegerLiteral(3)
|
||||
WalkUpFromStmt IntegerLiteral(3)
|
||||
WalkUpFromExpr BinaryOperator(+)
|
||||
WalkUpFromStmt BinaryOperator(+)
|
||||
WalkUpFromExpr DeclRefExpr(add)
|
||||
|
@ -271,10 +285,16 @@ TraverseIntegerLiteral IntegerLiteral(4)
|
|||
WalkUpFromIntegerLiteral IntegerLiteral(4)
|
||||
WalkUpFromExpr IntegerLiteral(4)
|
||||
WalkUpFromStmt IntegerLiteral(4)
|
||||
WalkUpFromIntegerLiteral IntegerLiteral(4)
|
||||
WalkUpFromExpr IntegerLiteral(4)
|
||||
WalkUpFromStmt IntegerLiteral(4)
|
||||
TraverseIntegerLiteral IntegerLiteral(5)
|
||||
WalkUpFromIntegerLiteral IntegerLiteral(5)
|
||||
WalkUpFromExpr IntegerLiteral(5)
|
||||
WalkUpFromStmt IntegerLiteral(5)
|
||||
WalkUpFromIntegerLiteral IntegerLiteral(5)
|
||||
WalkUpFromExpr IntegerLiteral(5)
|
||||
WalkUpFromStmt IntegerLiteral(5)
|
||||
WalkUpFromExpr CallExpr(add)
|
||||
WalkUpFromStmt CallExpr(add)
|
||||
WalkUpFromStmt CompoundStmt
|
||||
|
@ -612,7 +632,7 @@ WalkUpFromStmt IntegerLiteral(3)
|
|||
WalkUpFromStmt IntegerLiteral(1)
|
||||
TraverseUnaryMinus UnaryOperator(-)
|
||||
WalkUpFromStmt IntegerLiteral(2)
|
||||
WalkUpFromStmt UnaryOperator(-)
|
||||
WalkUpFromStmt UnaryOperator(-)
|
||||
WalkUpFromStmt IntegerLiteral(3)
|
||||
WalkUpFromStmt CompoundStmt
|
||||
)txt"));
|
||||
|
@ -674,6 +694,7 @@ WalkUpFromExpr IntegerLiteral(3)
|
|||
WalkUpFromStmt IntegerLiteral(3)
|
||||
)txt"));
|
||||
|
||||
// FIXME: The following log should include a call to WalkUpFromUnaryMinus.
|
||||
EXPECT_TRUE(visitorCallbackLogEqual(
|
||||
RecordingVisitor(ShouldTraversePostOrder::Yes), Code,
|
||||
R"txt(
|
||||
|
@ -682,9 +703,8 @@ WalkUpFromExpr IntegerLiteral(1)
|
|||
TraverseUnaryMinus UnaryOperator(-)
|
||||
WalkUpFromExpr IntegerLiteral(2)
|
||||
WalkUpFromStmt IntegerLiteral(2)
|
||||
WalkUpFromUnaryMinus UnaryOperator(-)
|
||||
WalkUpFromExpr UnaryOperator(-)
|
||||
WalkUpFromStmt UnaryOperator(-)
|
||||
WalkUpFromExpr UnaryOperator(-)
|
||||
WalkUpFromStmt UnaryOperator(-)
|
||||
WalkUpFromExpr IntegerLiteral(3)
|
||||
WalkUpFromStmt IntegerLiteral(3)
|
||||
WalkUpFromStmt CompoundStmt
|
||||
|
@ -739,6 +759,7 @@ WalkUpFromExpr IntegerLiteral(3)
|
|||
WalkUpFromStmt IntegerLiteral(3)
|
||||
)txt"));
|
||||
|
||||
// FIXME: The following log should include a call to WalkUpFromUnaryMinus.
|
||||
EXPECT_TRUE(visitorCallbackLogEqual(
|
||||
RecordingVisitor(ShouldTraversePostOrder::Yes), Code,
|
||||
R"txt(
|
||||
|
@ -746,9 +767,8 @@ WalkUpFromExpr IntegerLiteral(1)
|
|||
WalkUpFromStmt IntegerLiteral(1)
|
||||
WalkUpFromExpr IntegerLiteral(2)
|
||||
WalkUpFromStmt IntegerLiteral(2)
|
||||
WalkUpFromUnaryMinus UnaryOperator(-)
|
||||
WalkUpFromExpr UnaryOperator(-)
|
||||
WalkUpFromStmt UnaryOperator(-)
|
||||
WalkUpFromExpr UnaryOperator(-)
|
||||
WalkUpFromStmt UnaryOperator(-)
|
||||
WalkUpFromExpr IntegerLiteral(3)
|
||||
WalkUpFromStmt IntegerLiteral(3)
|
||||
WalkUpFromStmt CompoundStmt
|
||||
|
@ -1004,7 +1024,7 @@ WalkUpFromStmt IntegerLiteral(1)
|
|||
TraverseBinAdd BinaryOperator(+)
|
||||
WalkUpFromStmt IntegerLiteral(2)
|
||||
WalkUpFromStmt IntegerLiteral(3)
|
||||
WalkUpFromStmt BinaryOperator(+)
|
||||
WalkUpFromStmt BinaryOperator(+)
|
||||
WalkUpFromStmt IntegerLiteral(4)
|
||||
WalkUpFromStmt CompoundStmt
|
||||
)txt"));
|
||||
|
@ -1067,6 +1087,7 @@ WalkUpFromExpr IntegerLiteral(4)
|
|||
WalkUpFromStmt IntegerLiteral(4)
|
||||
)txt"));
|
||||
|
||||
// FIXME: The following log should include a call to WalkUpFromBinAdd.
|
||||
EXPECT_TRUE(visitorCallbackLogEqual(
|
||||
RecordingVisitor(ShouldTraversePostOrder::Yes), Code,
|
||||
R"txt(
|
||||
|
@ -1077,9 +1098,8 @@ TraverseBinAdd BinaryOperator(+)
|
|||
WalkUpFromStmt IntegerLiteral(2)
|
||||
WalkUpFromExpr IntegerLiteral(3)
|
||||
WalkUpFromStmt IntegerLiteral(3)
|
||||
WalkUpFromBinAdd BinaryOperator(+)
|
||||
WalkUpFromExpr BinaryOperator(+)
|
||||
WalkUpFromStmt BinaryOperator(+)
|
||||
WalkUpFromExpr BinaryOperator(+)
|
||||
WalkUpFromStmt BinaryOperator(+)
|
||||
WalkUpFromExpr IntegerLiteral(4)
|
||||
WalkUpFromStmt IntegerLiteral(4)
|
||||
WalkUpFromStmt CompoundStmt
|
||||
|
@ -1136,6 +1156,7 @@ WalkUpFromExpr IntegerLiteral(4)
|
|||
WalkUpFromStmt IntegerLiteral(4)
|
||||
)txt"));
|
||||
|
||||
// FIXME: The following log should include a call to WalkUpFromBinAdd.
|
||||
EXPECT_TRUE(visitorCallbackLogEqual(
|
||||
RecordingVisitor(ShouldTraversePostOrder::Yes), Code,
|
||||
R"txt(
|
||||
|
@ -1145,9 +1166,8 @@ WalkUpFromExpr IntegerLiteral(2)
|
|||
WalkUpFromStmt IntegerLiteral(2)
|
||||
WalkUpFromExpr IntegerLiteral(3)
|
||||
WalkUpFromStmt IntegerLiteral(3)
|
||||
WalkUpFromBinAdd BinaryOperator(+)
|
||||
WalkUpFromExpr BinaryOperator(+)
|
||||
WalkUpFromStmt BinaryOperator(+)
|
||||
WalkUpFromExpr BinaryOperator(+)
|
||||
WalkUpFromStmt BinaryOperator(+)
|
||||
WalkUpFromExpr IntegerLiteral(4)
|
||||
WalkUpFromStmt IntegerLiteral(4)
|
||||
WalkUpFromStmt CompoundStmt
|
||||
|
@ -1405,7 +1425,7 @@ WalkUpFromStmt IntegerLiteral(1)
|
|||
TraverseBinAddAssign CompoundAssignOperator(+=)
|
||||
WalkUpFromStmt DeclRefExpr(a)
|
||||
WalkUpFromStmt IntegerLiteral(2)
|
||||
WalkUpFromStmt CompoundAssignOperator(+=)
|
||||
WalkUpFromStmt CompoundAssignOperator(+=)
|
||||
WalkUpFromStmt IntegerLiteral(3)
|
||||
WalkUpFromStmt CompoundStmt
|
||||
)txt"));
|
||||
|
@ -1471,6 +1491,7 @@ WalkUpFromExpr IntegerLiteral(3)
|
|||
WalkUpFromStmt IntegerLiteral(3)
|
||||
)txt"));
|
||||
|
||||
// FIXME: The following log should include a call to WalkUpFromBinAddAssign.
|
||||
EXPECT_TRUE(visitorCallbackLogEqual(
|
||||
RecordingVisitor(ShouldTraversePostOrder::Yes), Code,
|
||||
R"txt(
|
||||
|
@ -1481,9 +1502,8 @@ TraverseBinAddAssign CompoundAssignOperator(+=)
|
|||
WalkUpFromStmt DeclRefExpr(a)
|
||||
WalkUpFromExpr IntegerLiteral(2)
|
||||
WalkUpFromStmt IntegerLiteral(2)
|
||||
WalkUpFromBinAddAssign CompoundAssignOperator(+=)
|
||||
WalkUpFromExpr CompoundAssignOperator(+=)
|
||||
WalkUpFromStmt CompoundAssignOperator(+=)
|
||||
WalkUpFromExpr CompoundAssignOperator(+=)
|
||||
WalkUpFromStmt CompoundAssignOperator(+=)
|
||||
WalkUpFromExpr IntegerLiteral(3)
|
||||
WalkUpFromStmt IntegerLiteral(3)
|
||||
WalkUpFromStmt CompoundStmt
|
||||
|
@ -1541,6 +1561,7 @@ WalkUpFromExpr IntegerLiteral(3)
|
|||
WalkUpFromStmt IntegerLiteral(3)
|
||||
)txt"));
|
||||
|
||||
// FIXME: The following log should include a call to WalkUpFromBinAddAssign.
|
||||
EXPECT_TRUE(visitorCallbackLogEqual(
|
||||
RecordingVisitor(ShouldTraversePostOrder::Yes), Code,
|
||||
R"txt(
|
||||
|
@ -1550,9 +1571,8 @@ WalkUpFromExpr DeclRefExpr(a)
|
|||
WalkUpFromStmt DeclRefExpr(a)
|
||||
WalkUpFromExpr IntegerLiteral(2)
|
||||
WalkUpFromStmt IntegerLiteral(2)
|
||||
WalkUpFromBinAddAssign CompoundAssignOperator(+=)
|
||||
WalkUpFromExpr CompoundAssignOperator(+=)
|
||||
WalkUpFromStmt CompoundAssignOperator(+=)
|
||||
WalkUpFromExpr CompoundAssignOperator(+=)
|
||||
WalkUpFromStmt CompoundAssignOperator(+=)
|
||||
WalkUpFromExpr IntegerLiteral(3)
|
||||
WalkUpFromStmt IntegerLiteral(3)
|
||||
WalkUpFromStmt CompoundStmt
|
||||
|
@ -1616,6 +1636,7 @@ TraverseCallExpr CallExpr(add)
|
|||
WalkUpFromStmt IntegerLiteral(4)
|
||||
WalkUpFromStmt IntegerLiteral(5)
|
||||
WalkUpFromStmt CallExpr(add)
|
||||
WalkUpFromStmt CallExpr(add)
|
||||
WalkUpFromStmt CompoundStmt
|
||||
)txt"));
|
||||
}
|
||||
|
@ -1709,6 +1730,9 @@ TraverseCallExpr CallExpr(add)
|
|||
WalkUpFromCallExpr CallExpr(add)
|
||||
WalkUpFromExpr CallExpr(add)
|
||||
WalkUpFromStmt CallExpr(add)
|
||||
WalkUpFromCallExpr CallExpr(add)
|
||||
WalkUpFromExpr CallExpr(add)
|
||||
WalkUpFromStmt CallExpr(add)
|
||||
WalkUpFromStmt CompoundStmt
|
||||
)txt"));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue