gAlfonso-bit updated this revision to Diff 366451. gAlfonso-bit added a comment.
Add ObjectPointerType to GetBaseType CHANGES SINCE LAST ACTION https://reviews.llvm.org/D107775/new/ https://reviews.llvm.org/D107775 Files: clang/lib/AST/DeclPrinter.cpp clang/lib/AST/Type.cpp Index: clang/lib/AST/Type.cpp =================================================================== --- clang/lib/AST/Type.cpp +++ clang/lib/AST/Type.cpp @@ -2785,7 +2785,6 @@ case DependentTemplateSpecialization: case ObjCInterface: case ObjCObject: - case ObjCObjectPointer: // FIXME: object pointers aren't really specifiers return true; default: return false; Index: clang/lib/AST/DeclPrinter.cpp =================================================================== --- clang/lib/AST/DeclPrinter.cpp +++ clang/lib/AST/DeclPrinter.cpp @@ -151,13 +151,16 @@ // FIXME: This should be on the Type class! QualType BaseType = T; while (!BaseType->isSpecifierType()) { - if (const PointerType *PTy = BaseType->getAs<PointerType>()) + if (const ObjCObjectPointerType *OPT = + BaseType->getAs<ObjCObjectPointerType>()) + BaseType = OPT->getPointeeType(); + else if (const PointerType *PTy = BaseType->getAs<PointerType>()) BaseType = PTy->getPointeeType(); else if (const BlockPointerType *BPy = BaseType->getAs<BlockPointerType>()) BaseType = BPy->getPointeeType(); - else if (const ArrayType* ATy = dyn_cast<ArrayType>(BaseType)) + else if (const ArrayType *ATy = dyn_cast<ArrayType>(BaseType)) BaseType = ATy->getElementType(); - else if (const FunctionType* FTy = BaseType->getAs<FunctionType>()) + else if (const FunctionType *FTy = BaseType->getAs<FunctionType>()) BaseType = FTy->getReturnType(); else if (const VectorType *VTy = BaseType->getAs<VectorType>()) BaseType = VTy->getElementType();
Index: clang/lib/AST/Type.cpp =================================================================== --- clang/lib/AST/Type.cpp +++ clang/lib/AST/Type.cpp @@ -2785,7 +2785,6 @@ case DependentTemplateSpecialization: case ObjCInterface: case ObjCObject: - case ObjCObjectPointer: // FIXME: object pointers aren't really specifiers return true; default: return false; Index: clang/lib/AST/DeclPrinter.cpp =================================================================== --- clang/lib/AST/DeclPrinter.cpp +++ clang/lib/AST/DeclPrinter.cpp @@ -151,13 +151,16 @@ // FIXME: This should be on the Type class! QualType BaseType = T; while (!BaseType->isSpecifierType()) { - if (const PointerType *PTy = BaseType->getAs<PointerType>()) + if (const ObjCObjectPointerType *OPT = + BaseType->getAs<ObjCObjectPointerType>()) + BaseType = OPT->getPointeeType(); + else if (const PointerType *PTy = BaseType->getAs<PointerType>()) BaseType = PTy->getPointeeType(); else if (const BlockPointerType *BPy = BaseType->getAs<BlockPointerType>()) BaseType = BPy->getPointeeType(); - else if (const ArrayType* ATy = dyn_cast<ArrayType>(BaseType)) + else if (const ArrayType *ATy = dyn_cast<ArrayType>(BaseType)) BaseType = ATy->getElementType(); - else if (const FunctionType* FTy = BaseType->getAs<FunctionType>()) + else if (const FunctionType *FTy = BaseType->getAs<FunctionType>()) BaseType = FTy->getReturnType(); else if (const VectorType *VTy = BaseType->getAs<VectorType>()) BaseType = VTy->getElementType();
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits