]> granicus.if.org Git - clang/commitdiff
Fix typeid the same way I fixed sizeof. Sad I had missed it before.
authorCraig Silverstein <csilvers2000@yahoo.com>
Fri, 16 Jul 2010 21:15:34 +0000 (21:15 +0000)
committerCraig Silverstein <csilvers2000@yahoo.com>
Fri, 16 Jul 2010 21:15:34 +0000 (21:15 +0000)
Reviewed by chandlerc

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108557 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/RecursiveASTVisitor.h

index 1c3d04b4613856706c13e0b644e5303660df5259..fc6219779423bacefa03eee8d504af29424f2347 100644 (file)
@@ -1621,6 +1621,13 @@ DEF_TRAVERSE_STMT(SizeOfAlignOfExpr, {
       TRY_TO(TraverseTypeLoc(S->getArgumentTypeInfo()->getTypeLoc()));
   })
 
+DEF_TRAVERSE_STMT(CXXTypeidExpr, {
+    // The child-iterator will pick up the arg if it's an expression,
+    // but not if it's a type.
+    if (S->isTypeOperand())
+      TRY_TO(TraverseTypeLoc(S->getTypeOperandSourceInfo()->getTypeLoc()));
+  })
+
 DEF_TRAVERSE_STMT(TypesCompatibleExpr, {
     TRY_TO(TraverseType(S->getArgType1()));
     TRY_TO(TraverseType(S->getArgType2()));
@@ -1648,7 +1655,6 @@ DEF_TRAVERSE_STMT(CXXNullPtrLiteralExpr, { })
 DEF_TRAVERSE_STMT(CXXPseudoDestructorExpr, { })
 DEF_TRAVERSE_STMT(CXXThisExpr, { })
 DEF_TRAVERSE_STMT(CXXThrowExpr, { })
-DEF_TRAVERSE_STMT(CXXTypeidExpr, { })
 DEF_TRAVERSE_STMT(CXXUnresolvedConstructExpr, { })
 DEF_TRAVERSE_STMT(DesignatedInitExpr, { })
 DEF_TRAVERSE_STMT(ExtVectorElementExpr, { })