From 2caf7571e1020ae1024ab3f2d52ecc9aea85687d Mon Sep 17 00:00:00 2001 From: Alfonso Gregory Date: Wed, 20 Oct 2021 10:29:02 -0700 Subject: [PATCH] [Clang][AST] Resolve FIXME: Remove ObjCObjectPointer from isSpecifierType There is no reason to have this here, (since all tests pass) and it isn't even a specifier anyway. We can just treat it as a pointer instead. Differential Revision: https://reviews.llvm.org/D110068 --- clang/lib/AST/DeclPrinter.cpp | 7 +++++-- clang/lib/AST/Type.cpp | 1 - 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/clang/lib/AST/DeclPrinter.cpp b/clang/lib/AST/DeclPrinter.cpp index 4dcf3d0..f2d7a79 100644 --- a/clang/lib/AST/DeclPrinter.cpp +++ b/clang/lib/AST/DeclPrinter.cpp @@ -153,11 +153,14 @@ static QualType GetBaseType(QualType T) { while (!BaseType->isSpecifierType()) { if (const PointerType *PTy = BaseType->getAs()) BaseType = PTy->getPointeeType(); + else if (const ObjCObjectPointerType *OPT = + BaseType->getAs()) + BaseType = OPT->getPointeeType(); else if (const BlockPointerType *BPy = BaseType->getAs()) BaseType = BPy->getPointeeType(); - else if (const ArrayType* ATy = dyn_cast(BaseType)) + else if (const ArrayType *ATy = dyn_cast(BaseType)) BaseType = ATy->getElementType(); - else if (const FunctionType* FTy = BaseType->getAs()) + else if (const FunctionType *FTy = BaseType->getAs()) BaseType = FTy->getReturnType(); else if (const VectorType *VTy = BaseType->getAs()) BaseType = VTy->getElementType(); diff --git a/clang/lib/AST/Type.cpp b/clang/lib/AST/Type.cpp index 58cae03..e7cdf58 100644 --- a/clang/lib/AST/Type.cpp +++ b/clang/lib/AST/Type.cpp @@ -2785,7 +2785,6 @@ bool Type::isSpecifierType() const { case DependentTemplateSpecialization: case ObjCInterface: case ObjCObject: - case ObjCObjectPointer: // FIXME: object pointers aren't really specifiers return true; default: return false; -- 2.7.4