Traverse InitListExpr only once
Arbitrarily chosing to traverse the semantic instead of the syntactic form.
Change-Id: Id1b4e49421a5550bb2fa9f0d7e6f83bf7abb6ebb
diff --git a/compilerplugins/clang/redundantcast.cxx b/compilerplugins/clang/redundantcast.cxx
index 6a554a7..4ffef35 100644
--- a/compilerplugins/clang/redundantcast.cxx
+++ b/compilerplugins/clang/redundantcast.cxx
@@ -79,6 +79,15 @@ public:
}
}
bool TraverseInitListExpr(
InitListExpr * expr, DataRecursionQueue * queue = nullptr)
{
return WalkUpFromInitListExpr(expr)
&& TraverseSynOrSemInitListExpr(
expr->isSemanticForm() ? expr : expr->getSemanticForm(),
queue);
}
bool VisitImplicitCastExpr(ImplicitCastExpr const * expr);
bool VisitCXXStaticCastExpr(CXXStaticCastExpr const * expr);