================ @@ -133,6 +141,36 @@ class RawPtrRefMemberChecker std::optional<bool> IsCompatible = isPtrCompatible(QT, IvarCXXRD); if (IsCompatible && *IsCompatible) reportBug(Ivar, IvarType, IvarCXXRD, CD); + } else { + std::optional<bool> IsCompatible = isPtrCompatible(QT, nullptr); + auto *PointeeType = IvarType->getPointeeType().getTypePtrOrNull(); + if (IsCompatible && *IsCompatible) { + auto *Desugared = PointeeType->getUnqualifiedDesugaredType(); + if (auto *ObjCType = dyn_cast_or_null<ObjCInterfaceType>(Desugared)) + reportBug(Ivar, IvarType, ObjCType->getDecl(), CD); + } + } + } + + void visitObjCPropertyDecl(const ObjCContainerDecl *CD, + const ObjCPropertyDecl *PD) const { + auto QT = PD->getType(); + const Type *PropType = QT.getTypePtrOrNull(); + if (!PropType) + return; + if (auto *PropCXXRD = PropType->getPointeeCXXRecordDecl()) { + std::optional<bool> IsCompatible = isPtrCompatible(QT, PropCXXRD); + fprintf(stderr, "IsCompatible=%d\n", IsCompatible ? *IsCompatible : -1); ---------------- rniwa wrote:
Oh oops, I forgot to remove this. https://github.com/llvm/llvm-project/pull/132833 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits