From: Ted Kremenek Date: Wed, 17 Nov 2010 02:18:35 +0000 (+0000) Subject: CursorVisitor: Migrate handling of X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6d0a00d9b02499d6c1253ea03d4dc7c32f8f289e;p=clang CursorVisitor: Migrate handling of 'SizeOfAlignOfExpr' and 'CXXSCalarValueInitExpr' to data-recursion algorithm. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119452 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp index 17e2c7c5c7..585c9c8d7a 100644 --- a/tools/libclang/CIndex.cpp +++ b/tools/libclang/CIndex.cpp @@ -339,9 +339,7 @@ public: // Expression visitors bool VisitOffsetOfExpr(OffsetOfExpr *E); - bool VisitSizeOfAlignOfExpr(SizeOfAlignOfExpr *E); bool VisitDesignatedInitExpr(DesignatedInitExpr *E); - bool VisitCXXScalarValueInitExpr(CXXScalarValueInitExpr *E); bool VisitCXXPseudoDestructorExpr(CXXPseudoDestructorExpr *E); bool VisitDependentScopeDeclRefExpr(DependentScopeDeclRefExpr *E); bool VisitCXXDependentScopeMemberExpr(CXXDependentScopeMemberExpr *E); @@ -1476,17 +1474,6 @@ bool CursorVisitor::VisitOffsetOfExpr(OffsetOfExpr *E) { return false; } -bool CursorVisitor::VisitSizeOfAlignOfExpr(SizeOfAlignOfExpr *E) { - if (E->isArgumentType()) { - if (TypeSourceInfo *TSInfo = E->getArgumentTypeInfo()) - return Visit(TSInfo->getTypeLoc()); - - return false; - } - - return VisitExpr(E); -} - bool CursorVisitor::VisitDesignatedInitExpr(DesignatedInitExpr *E) { // Visit the designators. typedef DesignatedInitExpr::Designator Designator; @@ -1518,13 +1505,6 @@ bool CursorVisitor::VisitDesignatedInitExpr(DesignatedInitExpr *E) { return Visit(MakeCXCursor(E->getInit(), StmtParent, TU)); } -bool CursorVisitor::VisitCXXScalarValueInitExpr(CXXScalarValueInitExpr *E) { - if (TypeSourceInfo *TSInfo = E->getTypeSourceInfo()) - return Visit(TSInfo->getTypeLoc()); - - return false; -} - bool CursorVisitor::VisitCXXPseudoDestructorExpr(CXXPseudoDestructorExpr *E) { // Visit base expression. if (Visit(MakeCXCursor(E->getBase(), StmtParent, TU))) @@ -1688,6 +1668,7 @@ public: void VisitCompoundStmt(CompoundStmt *S); void VisitCXXDefaultArgExpr(CXXDefaultArgExpr *E) { /* Do nothing. */ } void VisitCXXNewExpr(CXXNewExpr *E); + void VisitCXXScalarValueInitExpr(CXXScalarValueInitExpr *E); void VisitCXXOperatorCallExpr(CXXOperatorCallExpr *E); void VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *E); void VisitCXXTypeidExpr(CXXTypeidExpr *E); @@ -1704,6 +1685,7 @@ public: void VisitObjCEncodeExpr(ObjCEncodeExpr *E); void VisitObjCMessageExpr(ObjCMessageExpr *M); void VisitOverloadExpr(OverloadExpr *E); + void VisitSizeOfAlignOfExpr(SizeOfAlignOfExpr *E); void VisitStmt(Stmt *S); void VisitSwitchStmt(SwitchStmt *S); void VisitTypesCompatibleExpr(TypesCompatibleExpr *E); @@ -1786,6 +1768,9 @@ void EnqueueVisitor::VisitCXXOperatorCallExpr(CXXOperatorCallExpr *CE) { AddStmt(CE->getCallee()); AddStmt(CE->getArg(0)); } +void EnqueueVisitor::VisitCXXScalarValueInitExpr(CXXScalarValueInitExpr *E) { + AddTypeLoc(E->getTypeSourceInfo()); +} void EnqueueVisitor::VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *E) { EnqueueChildren(E); AddTypeLoc(E->getTypeSourceInfo()); @@ -1868,6 +1853,11 @@ void EnqueueVisitor::VisitOverloadExpr(OverloadExpr *E) { AddExplicitTemplateArgs(E->getOptionalExplicitTemplateArgs()); WL.push_back(OverloadExprParts(E, Parent)); } +void EnqueueVisitor::VisitSizeOfAlignOfExpr(SizeOfAlignOfExpr *E) { + EnqueueChildren(E); + if (E->isArgumentType()) + AddTypeLoc(E->getArgumentTypeInfo()); +} void EnqueueVisitor::VisitStmt(Stmt *S) { EnqueueChildren(S); } @@ -1970,9 +1960,7 @@ bool CursorVisitor::RunVisitorWorkList(VisitorWorkList &WL) { // Cases not yet handled by the data-recursion // algorithm. case Stmt::OffsetOfExprClass: - case Stmt::SizeOfAlignOfExprClass: case Stmt::DesignatedInitExprClass: - case Stmt::CXXScalarValueInitExprClass: case Stmt::CXXPseudoDestructorExprClass: case Stmt::DependentScopeDeclRefExprClass: case Stmt::CXXDependentScopeMemberExprClass: