[cfe-commits] r118989 - /cfe/trunk/tools/libclang/CIndex.cpp
Ted Kremenek
kremenek at apple.com
Fri Nov 12 21:55:54 PST 2010
Author: kremenek
Date: Fri Nov 12 23:55:53 2010
New Revision: 118989
URL: http://llvm.org/viewvc/llvm-project?rev=118989&view=rev
Log:
CursorVisitor: migrate CXXNewExpr and CXXDefaultArgExpr over to data-recursive algorithm.
Modified:
cfe/trunk/tools/libclang/CIndex.cpp
Modified: cfe/trunk/tools/libclang/CIndex.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndex.cpp?rev=118989&r1=118988&r2=118989&view=diff
==============================================================================
--- cfe/trunk/tools/libclang/CIndex.cpp (original)
+++ cfe/trunk/tools/libclang/CIndex.cpp Fri Nov 12 23:55:53 2010
@@ -320,9 +320,7 @@
bool VisitDesignatedInitExpr(DesignatedInitExpr *E);
bool VisitCXXTypeidExpr(CXXTypeidExpr *E);
bool VisitCXXUuidofExpr(CXXUuidofExpr *E);
- bool VisitCXXDefaultArgExpr(CXXDefaultArgExpr *E) { return false; }
bool VisitCXXScalarValueInitExpr(CXXScalarValueInitExpr *E);
- bool VisitCXXNewExpr(CXXNewExpr *E);
bool VisitCXXPseudoDestructorExpr(CXXPseudoDestructorExpr *E);
bool VisitUnaryTypeTraitExpr(UnaryTypeTraitExpr *E);
bool VisitDependentScopeDeclRefExpr(DependentScopeDeclRefExpr *E);
@@ -334,7 +332,9 @@
DATA_RECURSIVE_VISIT(BinaryOperator)
DATA_RECURSIVE_VISIT(BlockExpr)
DATA_RECURSIVE_VISIT(CompoundLiteralExpr)
+ DATA_RECURSIVE_VISIT(CXXDefaultArgExpr)
DATA_RECURSIVE_VISIT(CXXMemberCallExpr)
+ DATA_RECURSIVE_VISIT(CXXNewExpr)
DATA_RECURSIVE_VISIT(CXXOperatorCallExpr)
DATA_RECURSIVE_VISIT(CXXTemporaryObjectExpr)
DATA_RECURSIVE_VISIT(DeclRefExpr)
@@ -1569,29 +1569,6 @@
return false;
}
-bool CursorVisitor::VisitCXXNewExpr(CXXNewExpr *E) {
- // Visit placement arguments.
- for (unsigned I = 0, N = E->getNumPlacementArgs(); I != N; ++I)
- if (Visit(MakeCXCursor(E->getPlacementArg(I), StmtParent, TU)))
- return true;
-
- // Visit the allocated type.
- if (TypeSourceInfo *TSInfo = E->getAllocatedTypeSourceInfo())
- if (Visit(TSInfo->getTypeLoc()))
- return true;
-
- // Visit the array size, if any.
- if (E->isArray() && Visit(MakeCXCursor(E->getArraySize(), StmtParent, TU)))
- return true;
-
- // Visit the initializer or constructor arguments.
- for (unsigned I = 0, N = E->getNumConstructorArgs(); I != N; ++I)
- if (Visit(MakeCXCursor(E->getConstructorArg(I), StmtParent, TU)))
- return true;
-
- return false;
-}
-
bool CursorVisitor::VisitCXXPseudoDestructorExpr(CXXPseudoDestructorExpr *E) {
// Visit base expression.
if (Visit(MakeCXCursor(E->getBase(), StmtParent, TU)))
@@ -1750,6 +1727,8 @@
void VisitBlockExpr(BlockExpr *B);
void VisitCompoundLiteralExpr(CompoundLiteralExpr *E);
void VisitCompoundStmt(CompoundStmt *S);
+ void VisitCXXDefaultArgExpr(CXXDefaultArgExpr *E) { /* Do nothing. */ }
+ void VisitCXXNewExpr(CXXNewExpr *E);
void VisitCXXOperatorCallExpr(CXXOperatorCallExpr *E);
void VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *E);
void VisitDeclRefExpr(DeclRefExpr *D);
@@ -1812,7 +1791,19 @@
E = S->body_rend(); I != E; ++I) {
AddStmt(*I);
}
-}
+}
+void EnqueueVisitor::VisitCXXNewExpr(CXXNewExpr *E) {
+ // Enqueue the initializer or constructor arguments.
+ for (unsigned I = E->getNumConstructorArgs(); I > 0; --I)
+ AddStmt(E->getConstructorArg(I-1));
+ // Enqueue the array size, if any.
+ AddStmt(E->getArraySize());
+ // Enqueue the allocated type.
+ AddTypeLoc(E->getAllocatedTypeSourceInfo());
+ // Enqueue the placement arguments.
+ for (unsigned I = E->getNumPlacementArgs(); I > 0; --I)
+ AddStmt(E->getPlacementArg(I-1));
+}
void EnqueueVisitor::VisitCXXOperatorCallExpr(CXXOperatorCallExpr *CE) {
// Note that we enqueue things in reverse order so that
// they are visited correctly by the DFS.
@@ -1972,7 +1963,9 @@
case Stmt::CaseStmtClass:
case Stmt::CompoundLiteralExprClass:
case Stmt::CompoundStmtClass:
+ case Stmt::CXXDefaultArgExprClass:
case Stmt::CXXMemberCallExprClass:
+ case Stmt::CXXNewExprClass:
case Stmt::CXXOperatorCallExprClass:
case Stmt::CXXTemporaryObjectExprClass:
case Stmt::DefaultStmtClass:
More information about the cfe-commits
mailing list