[clang] [alpha.webkit.RawPtrRefMemberChecker] The checker doesn't warn Objective-C types in ivars. (PR #132833)
Ryosuke Niwa via cfe-commits
cfe-commits at lists.llvm.org
Fri Mar 28 12:07:27 PDT 2025
================
@@ -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
More information about the cfe-commits
mailing list