https://github.com/rniwa created https://github.com/llvm/llvm-project/pull/90701

Reverts llvm/llvm-project#90180

>From 54ff88ab2b46e0ba82cc59077c6d3b367eecd497 Mon Sep 17 00:00:00 2001
From: Ryosuke Niwa <ryosuke.n...@gmail.com>
Date: Tue, 30 Apr 2024 21:28:03 -0700
Subject: [PATCH] =?UTF-8?q?Revert=20"[alpha.webkit.UncountedCallArgsChecke?=
 =?UTF-8?q?r]=20Ignore=20methods=20of=20WTF=20String=20=E2=80=A6"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This reverts commit 240592a772a40b4ffa75921f7b555d2a969b3383.
---
 .../WebKit/UncountedCallArgsChecker.cpp       |  13 +-
 .../WebKit/call-args-wtf-containers.cpp       | 118 ------------------
 .../Analysis/Checkers/WebKit/mock-types.h     |   2 +-
 3 files changed, 4 insertions(+), 129 deletions(-)

diff --git 
a/clang/lib/StaticAnalyzer/Checkers/WebKit/UncountedCallArgsChecker.cpp 
b/clang/lib/StaticAnalyzer/Checkers/WebKit/UncountedCallArgsChecker.cpp
index 0f40ecc7ba3000..ae494de58da3da 100644
--- a/clang/lib/StaticAnalyzer/Checkers/WebKit/UncountedCallArgsChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/UncountedCallArgsChecker.cpp
@@ -227,17 +227,10 @@ class UncountedCallArgsChecker
     return NamespaceName == "WTF" &&
            (MethodName == "find" || MethodName == "findIf" ||
             MethodName == "reverseFind" || MethodName == "reverseFindIf" ||
-            MethodName == "findIgnoringASCIICase" || MethodName == "get" ||
-            MethodName == "inlineGet" || MethodName == "contains" ||
-            MethodName == "containsIf" ||
-            MethodName == "containsIgnoringASCIICase" ||
-            MethodName == "startsWith" || MethodName == "endsWith" ||
-            MethodName == "startsWithIgnoringASCIICase" ||
-            MethodName == "endsWithIgnoringASCIICase" ||
-            MethodName == "substring") &&
+            MethodName == "get" || MethodName == "inlineGet" ||
+            MethodName == "contains" || MethodName == "containsIf") &&
            (ClsName.ends_with("Vector") || ClsName.ends_with("Set") ||
-            ClsName.ends_with("Map") || ClsName == "StringImpl" ||
-            ClsName.ends_with("String"));
+            ClsName.ends_with("Map"));
   }
 
   void reportBug(const Expr *CallArg, const ParmVarDecl *Param) const {
diff --git a/clang/test/Analysis/Checkers/WebKit/call-args-wtf-containers.cpp 
b/clang/test/Analysis/Checkers/WebKit/call-args-wtf-containers.cpp
index 17e25d9a627039..0a63a789856127 100644
--- a/clang/test/Analysis/Checkers/WebKit/call-args-wtf-containers.cpp
+++ b/clang/test/Analysis/Checkers/WebKit/call-args-wtf-containers.cpp
@@ -4,92 +4,6 @@
 
 namespace WTF {
 
-  constexpr unsigned long notFound = static_cast<unsigned long>(-1);
-
-  class String;
-  class StringImpl;
-
-  class StringView {
-  public:
-    StringView(const String&);
-  private:
-    RefPtr<StringImpl> m_impl;
-  };
-
-  class StringImpl {
-  public:
-    void ref() const { ++m_refCount; }
-    void deref() const {
-      if (!--m_refCount)
-        delete this;
-    }
-
-    static constexpr unsigned s_flagIs8Bit = 1u << 0;
-    bool is8Bit() const { return m_hashAndFlags & s_flagIs8Bit; }
-    const char* characters8() const { return m_char8; }
-    const short* characters16() const { return m_char16; }
-    unsigned length() const { return m_length; }
-    Ref<StringImpl> substring(unsigned position, unsigned length) const;
-
-    unsigned long find(char) const;
-    unsigned long find(StringView) const;
-    unsigned long contains(StringView) const;
-    unsigned long findIgnoringASCIICase(StringView) const;
-
-    bool startsWith(StringView) const;
-    bool startsWithIgnoringASCIICase(StringView) const;
-    bool endsWith(StringView) const;
-    bool endsWithIgnoringASCIICase(StringView) const;
-
-  private:
-    mutable unsigned m_refCount { 0 };
-    unsigned m_length { 0 };
-    union {
-      const char* m_char8;
-      const short* m_char16;
-    };
-    unsigned m_hashAndFlags { 0 };
-  };
-
-  class String {
-  public:
-    String() = default;
-    String(StringImpl& impl) : m_impl(&impl) { }
-    String(StringImpl* impl) : m_impl(impl) { }
-    String(Ref<StringImpl>&& impl) : m_impl(impl.get()) { }
-    StringImpl* impl() { return m_impl.get(); }
-    unsigned length() const { return m_impl ? m_impl->length() : 0; }
-    const char* characters8() const { return m_impl ? m_impl->characters8() : 
nullptr; }
-    const short* characters16() const { return m_impl ? m_impl->characters16() 
: nullptr; }
-
-    bool is8Bit() const { return !m_impl || m_impl->is8Bit(); }
-
-    unsigned long find(char character) const { return m_impl ? 
m_impl->find(character) : notFound; }
-    unsigned long find(StringView str) const { return m_impl ? 
m_impl->find(str) : notFound; }
-    unsigned long findIgnoringASCIICase(StringView) const;
-
-    bool contains(char character) const { return find(character) != notFound; }
-    bool contains(StringView) const;
-    bool containsIgnoringASCIICase(StringView) const;
-
-    bool startsWith(StringView) const;
-    bool startsWithIgnoringASCIICase(StringView) const;
-    bool endsWith(StringView) const;
-    bool endsWithIgnoringASCIICase(StringView) const;
-
-    String substring(unsigned position, unsigned length) const
-    {
-      if (!m_impl)
-        return { };
-      if (!position && length >= m_impl->length())
-        return *this;
-      return m_impl->substring(position, length);
-    }
-
-  private:
-    RefPtr<StringImpl> m_impl;
-  };
-
   template <typename T>
   class HashSet {
   public:
@@ -175,9 +89,6 @@ namespace WTF {
 
 }
 
-using WTF::StringView;
-using WTF::StringImpl;
-using WTF::String;
 using WTF::HashSet;
 using WTF::HashMap;
 using WTF::WeakHashSet;
@@ -190,37 +101,8 @@ class RefCounted {
 };
 
 RefCounted* object();
-StringImpl* strImpl();
-String* str();
-StringView strView();
 
 void test() {
-  strImpl()->is8Bit();
-  strImpl()->characters8();
-  strImpl()->characters16();
-  strImpl()->length();
-  strImpl()->substring(2, 4);
-  strImpl()->find(strView());
-  strImpl()->contains(strView());
-  strImpl()->findIgnoringASCIICase(strView());
-  strImpl()->startsWith(strView());
-  strImpl()->startsWithIgnoringASCIICase(strView());
-  strImpl()->endsWith(strView());
-  strImpl()->endsWithIgnoringASCIICase(strView());
-
-  str()->is8Bit();
-  str()->characters8();
-  str()->characters16();
-  str()->length();
-  str()->substring(2, 4);
-  str()->find(strView());
-  str()->contains(strView());
-  str()->findIgnoringASCIICase(strView());
-  str()->startsWith(strView());
-  str()->startsWithIgnoringASCIICase(strView());
-  str()->endsWith(strView());
-  str()->endsWithIgnoringASCIICase(strView());
-
   HashSet<RefPtr<RefCounted>> set;
   set.find(*object());
   set.contains(*object());
diff --git a/clang/test/Analysis/Checkers/WebKit/mock-types.h 
b/clang/test/Analysis/Checkers/WebKit/mock-types.h
index a22c332aeb911d..c27ea9baaf3bf5 100644
--- a/clang/test/Analysis/Checkers/WebKit/mock-types.h
+++ b/clang/test/Analysis/Checkers/WebKit/mock-types.h
@@ -76,7 +76,7 @@ template <typename T> struct RefPtr {
   const T *operator->() const { return t; }
   T &operator*() { return *t; }
   RefPtr &operator=(T *) { return *this; }
-  operator bool() const { return t; }
+  operator bool() { return t; }
 };
 
 template <typename T> bool operator==(const RefPtr<T> &, const RefPtr<T> &) {

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to