[clang-tools-extra] [clang-tidy] support string::contains (PR #110351)

Nicolas van Kempen via cfe-commits cfe-commits at lists.llvm.org
Sat Sep 28 13:36:23 PDT 2024


================
@@ -29,6 +29,43 @@ struct multimap {
   bool contains(const Key &K) const;
 };
 
+using size_t = decltype(sizeof(int));
+
+// Lightweight standin for std::string_view.
+template <typename C>
+class basic_string_view {
+public:
+  basic_string_view();
+  basic_string_view(const basic_string_view &);
+  basic_string_view(const C *);
+  ~basic_string_view();
+  int find(basic_string_view s, int pos = 0);
+  int find(const C *s, int pos = 0);
+  int find(const C *s, int pos, int n);
+  int find(char c, int pos = 0);
+  static constexpr size_t npos = -1;
+};
+typedef basic_string_view<char> string_view;
+
+// Lightweight standin for std::string.
+template <typename C>
+class basic_string {
+public:
+  basic_string();
+  basic_string(const basic_string &);
+  basic_string(const C *);
+  ~basic_string();
+  int find(basic_string s, int pos = 0);
+  int find(const C *s, int pos = 0);
+  int find(const C *s, int pos, int n);
+  int find(char c, int pos = 0);
+  bool contains(const C *s) const;
+  bool contains(C s) const;
+  bool contains(basic_string_view<C> s) const;
+  static constexpr size_t npos = -1;
+};
+typedef basic_string<char> string;
+
----------------
nicovank wrote:

There's [already a string mock you can import](https://github.com/llvm/llvm-project/blob/6022a3a05f951632022c84416209fe6d70d9105c/clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/string), you need to edit the `RUN` command at the top of this file to have it in the search path.

Check [here for an example](https://github.com/llvm/llvm-project/blob/6022a3a05f951632022c84416209fe6d70d9105c/clang-tools-extra/test/clang-tidy/checkers/modernize/use-starts-ends-with.cpp).

https://github.com/llvm/llvm-project/pull/110351


More information about the cfe-commits mailing list