Issue 141381
Summary False-positive `readability-convert-member-functions-to-static` when using explicit object parameters
Labels new issue
Assignees
Reporter chriselrod
    ```c++
#include <print>
#include <string>

struct Hello {
  std::string str_;

  void hello(this Hello &self) { std::println("Hello, {0}!", self.str_); }
};

int main() {
 Hello hi{"world"};
  hi.hello();
  return 0;
}
```
Saving this file as `explicit_object_param.cpp`, I get
```
$ clang-tidy --checks=readability-convert-member-functions-to-static explicit_object_param.cpp -- --std=c++23
1 warning generated.
/home/chriselrod/Documents/progwork/cxx/misc/explicit_object_param.cpp:7:8: warning: method 'hello' can be made static [readability-convert-member-functions-to-static]
    7 |   void hello(this Hello &self) { std::println("Hello, {0}!", self.str_); }
      | ^
      |   static 
```

Of course, `static` is illegal there
```
explicit_object_param.cpp:7:21: error: an explicit object parameter cannot appear in a static function
    7 |   static void hello(this Hello &self) { std::println("Hello, {0}!", self.str_); }
 |   ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
1 error generated.
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to