https://github.com/rniwa updated 
https://github.com/llvm/llvm-project/pull/224463

>From fdeb9c468f539cc279b69ae62710c9abd7c597e6 Mon Sep 17 00:00:00 2001
From: Ryosuke Niwa <[email protected]>
Date: Thu, 17 Sep 2026 15:39:00 -0700
Subject: [PATCH] [WebKit checkers] Revert bf1d278. It caused too many
 warnings.

---
 .../lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp  |  2 --
 .../Checkers/WebKit/RawPtrRefCallArgsChecker.cpp     |  3 ---
 .../Checkers/WebKit/RawPtrRefSafetyModel.cpp         |  6 ++++++
 .../test/Analysis/Checkers/WebKit/objc-mock-types.h  |  4 ----
 .../Checkers/WebKit/retain-ptr-ctor-adopt-use-arc.mm |  8 --------
 .../Checkers/WebKit/retain-ptr-ctor-adopt-use.mm     | 11 -----------
 .../Analysis/Checkers/WebKit/unretained-call-args.mm | 12 ------------
 7 files changed, 6 insertions(+), 40 deletions(-)

diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp 
b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
index e8f69f1aac757..d2d37e780b7f7 100644
--- a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
@@ -214,8 +214,6 @@ bool tryToFindPtrOrigin(
         if (isSafePtrType(Method->getReturnType()))
           return callback(E, true);
       }
-      if (ObjCMsgExpr->isClassMessage())
-        return callback(E, true);
       auto Selector = ObjCMsgExpr->getSelector();
       auto NameForFirstSlot = Selector.getNameForSlot(0);
       if ((NameForFirstSlot == "class" || NameForFirstSlot == "superclass") &&
diff --git 
a/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefCallArgsChecker.cpp 
b/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefCallArgsChecker.cpp
index 4942e7125cd5c..7e5261723014a 100644
--- a/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefCallArgsChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefCallArgsChecker.cpp
@@ -181,9 +181,6 @@ class RawPtrRefCallArgsChecker
       if (IsUnsafe && *IsUnsafe && !isPtrOriginSafe(Receiver)) {
         if (isAllocInit(E))
           return;
-        auto SelectorName = E->getSelector().getNameForSlot(0);
-        if (SelectorName == "isEqual" || SelectorName == "isEqualToString")
-          return;
         reportBugOnReceiver(E->getMethodDecl(), Receiver, D);
       }
     }
diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefSafetyModel.cpp 
b/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefSafetyModel.cpp
index f0e375087fa81..0104cb295d7ef 100644
--- a/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefSafetyModel.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefSafetyModel.cpp
@@ -9,7 +9,9 @@
 #include "RawPtrRefSafetyModel.h"
 #include "ASTUtils.h"
 #include "clang/AST/Decl.h"
+#include "clang/AST/ExprObjC.h"
 #include "clang/AST/Type.h"
+#include "clang/Analysis/DomainSpecific/CocoaConventions.h"
 #include "clang/Basic/SourceManager.h"
 
 using namespace clang;
@@ -78,6 +80,10 @@ class RetainPtrSafetyModel : public PtrRefSafetyModel {
   bool isPtrType(const std::string &Name) const override {
     return isRetainPtrOrOSPtr(Name);
   }
+  bool isSafeExpr(const Expr *E) const override {
+    return ento::cocoa::isCocoaObjectRef(E->getType()) &&
+           isa<ObjCMessageExpr>(E);
+  }
   bool isSafeDecl(const Decl *D, const SourceManager &SM) const override {
     // Treat NS/CF globals in system header as immortal.
     return SM.isInSystemHeader(D->getLocation());
diff --git a/clang/test/Analysis/Checkers/WebKit/objc-mock-types.h 
b/clang/test/Analysis/Checkers/WebKit/objc-mock-types.h
index aad2a6185d0b0..63f6dd0960f81 100644
--- a/clang/test/Analysis/Checkers/WebKit/objc-mock-types.h
+++ b/clang/test/Analysis/Checkers/WebKit/objc-mock-types.h
@@ -174,8 +174,6 @@ __attribute__((objc_root_class))
 - ( const char *)UTF8String;
 - (id)initWithUTF8String:(const char *)nullTerminatedCString;
 - (NSString *)copy;
-- (NSString *)mutableCopy;
-- (BOOL)isEqualToString:(NSString *)aString;
 + (id)stringWithUTF8String:(const char *)nullTerminatedCString;
 @end
 
@@ -211,10 +209,8 @@ extern NSApplication * NSApp;
 @end
 
 @interface SomeObj : NSObject
-+ (SomeObj *)sharedInstance;
 - (instancetype)_init;
 - (SomeObj *)mutableCopy;
-- (BOOL)isEqual:(SomeObj *)other;
 - (SomeObj *)copyWithValue:(int)value;
 - (void)doWork;
 - (SomeObj *)other;
diff --git 
a/clang/test/Analysis/Checkers/WebKit/retain-ptr-ctor-adopt-use-arc.mm 
b/clang/test/Analysis/Checkers/WebKit/retain-ptr-ctor-adopt-use-arc.mm
index 4f27bb6e41557..135fe651a9f16 100644
--- a/clang/test/Analysis/Checkers/WebKit/retain-ptr-ctor-adopt-use-arc.mm
+++ b/clang/test/Analysis/Checkers/WebKit/retain-ptr-ctor-adopt-use-arc.mm
@@ -51,10 +51,6 @@ @implementation SomeObj {
   SomeObj *_other;
 }
 
-+ (SomeObj *)sharedInstance {
-  return nil;
-}
-
 - (instancetype)_init {
   self = [super init];
   _number = nil;
@@ -71,10 +67,6 @@ - (SomeObj *)mutableCopy {
   return copy;
 }
 
-- (BOOL)isEqual:(SomeObj *)other {
-  return self.value == other.value && self.next == other.next && _other == 
other.other;
-}
-
 - (SomeObj *)copyWithValue:(int)value {
   auto *copy = [[SomeObj alloc] init];
   [copy setValue:_number];
diff --git a/clang/test/Analysis/Checkers/WebKit/retain-ptr-ctor-adopt-use.mm 
b/clang/test/Analysis/Checkers/WebKit/retain-ptr-ctor-adopt-use.mm
index d84f0c12a57d2..c337752d6bd21 100644
--- a/clang/test/Analysis/Checkers/WebKit/retain-ptr-ctor-adopt-use.mm
+++ b/clang/test/Analysis/Checkers/WebKit/retain-ptr-ctor-adopt-use.mm
@@ -16,7 +16,6 @@ void basic_correct() {
   auto ns7 = retainPtr((SomeObj *)0);
   auto ns8 = adoptNS(nil);
   auto ns9 = adoptNSNullable([[SomeObj alloc] init]);
-  auto ns10 = adoptNS([[SomeObj allocWithZone:nullptr] _init]);
   CFMutableArrayRef cf1 = adoptCF(CFArrayCreateMutable(kCFAllocatorDefault, 
10));
   auto cf2 = adoptCF(SecTaskCreateFromSelf(kCFAllocatorDefault));
   auto cf3 = adoptCF(checked_cf_cast<CFArrayRef>(CFCopyArray(cf1)));
@@ -33,8 +32,6 @@ void basic_wrong() {
   // expected-warning@-1{{Incorrect use of adoptNS. The argument is +0 and 
results in an use-after-free [alpha.webkit.RetainPtrCtorAdoptChecker]}}
   auto ns3 = adoptNSNullable([ns1.get() next]);
   // expected-warning@-1{{Incorrect use of adoptNSNullable. The argument is +0 
and results in an use-after-free [alpha.webkit.RetainPtrCtorAdoptChecker]}}
-  RetainPtr<SomeObj> ns4 = [[SomeObj allocWithZone:nullptr] init];
-  // expected-warning@-1{{Incorrect use of RetainPtr constructor. The argument 
is +1 and results in a memory leak [alpha.webkit.RetainPtrCtorAdoptChecker]}}
   RetainPtr<CFMutableArrayRef> cf1 = CFArrayCreateMutable(kCFAllocatorDefault, 
10);
   // expected-warning@-1{{Incorrect use of RetainPtr constructor. The argument 
is +1 and results in a memory leak [alpha.webkit.RetainPtrCtorAdoptChecker]}}
   RetainPtr<CFMutableArrayRef> cf2 = adoptCF(provide_cf());
@@ -59,10 +56,6 @@ @implementation SomeObj {
   SomeObj *_other;
 }
 
-+ (SomeObj *)sharedInstance {
-  return nil;
-}
-
 - (instancetype)_init {
   self = [super init];
   _number = nil;
@@ -80,10 +73,6 @@ - (SomeObj *)mutableCopy {
   return copy;
 }
 
-- (BOOL)isEqual:(SomeObj *)other {
-  return self.value == other.value && self.next == other.next && _other == 
other.other;
-}
-
 - (SomeObj *)copyWithValue:(int)value {
   auto *copy = [[SomeObj alloc] init];
   // expected-warning@-1{{The return value is +1 and results in a memory leak 
[alpha.webkit.RetainPtrCtorAdoptChecker]}}
diff --git a/clang/test/Analysis/Checkers/WebKit/unretained-call-args.mm 
b/clang/test/Analysis/Checkers/WebKit/unretained-call-args.mm
index e0e867d783bb1..45174fc94878a 100644
--- a/clang/test/Analysis/Checkers/WebKit/unretained-call-args.mm
+++ b/clang/test/Analysis/Checkers/WebKit/unretained-call-args.mm
@@ -7,8 +7,6 @@
 SomeObj *provide();
 void consume_obj(SomeObj*);
 
-NSString *provide_str();
-
 CFMutableArrayRef provide_cf();
 void consume_cf(CFMutableArrayRef);
 
@@ -450,15 +448,6 @@ void foo() {
   void foo() {
     auto obj = adoptNS([[SomeObj alloc] init]);
     [obj doWork];
-    auto obj2 = adoptNS([[SomeObj alloc] _init]);
-    [obj2 doWork];
-  }
-
-  void bar(NSZone *zone) {
-    auto obj = adoptNS([[SomeObj allocWithZone:zone] init]);
-    [obj doWork];
-    auto obj2 = adoptNS([(SomeObj *)[SomeObj allocWithZone:zone] _init]);
-    [obj2 doWork];
   }
 }
 
@@ -645,7 +634,6 @@ @interface TestObject : NSObject
 - (void)doWork:(NSString *)msg, ...;
 - (void)doWorkOnSelf;
 - (SomeObj *)getSomeObj;
-+ (SomeObj *)sharedObj;
 @end
 
 @implementation TestObject

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to