mgehre marked 2 inline comments as done.
mgehre added inline comments.

================
Comment at: 
clang-tools-extra/clang-tidy/readability/ReadabilityTidyModule.cpp:96
+    CheckFactories.registerCheck<StaticMethodCheck>(
+        "readability-static-method");
     CheckFactories.registerCheck<StringCompareCheck>(
----------------
aaron.ballman wrote:
> I'm not super keen on the check name. It's not very descriptive -- does this 
> operate on static methods, does it make methods static, does it turn global 
> dynamic initialization into static method initialization?
> 
> How about: `readability-convert-functions-to-static` or something more 
> descriptive of the functionality?
I agree that we should find a better name. With 
`readability-convert-functions-to-static`, I miss the difference between adding 
`static` linkage to a free function versus making a member function static.
How about `readability-convert-member-functions-to-static` or 
`readability-convert-method-to-static`?


================
Comment at: clang-tools-extra/clang-tidy/readability/StaticMethodCheck.cpp:25
+public:
+  FindUsageOfThis() {}
+  bool Used = false;
----------------
aaron.ballman wrote:
> Do you need this constructor at all? If so, `= default;` it.
Removed


================
Comment at: clang-tools-extra/clang-tidy/readability/StaticMethodCheck.cpp:28-31
+  bool VisitCXXThisExpr(const CXXThisExpr *E) {
+    Used = true;
+    return false; // Stop traversal.
+  }
----------------
aaron.ballman wrote:
> Does this find a usage of `this` in unevaluated contexts? e.g.,
> ```
> struct S {
>   size_t derp() { return sizeof(this); }
> };
> ```
> I am hoping the answer is yes, because we wouldn't want to convert that into 
> a static function. Probably worth a test.
I added a test


================
Comment at: clang-tools-extra/clang-tidy/readability/StaticMethodCheck.cpp:56-57
+                                      const LangOptions &LangOpts) {
+  if (!TSI)
+    return {};
+  FunctionTypeLoc FTL =
----------------
aaron.ballman wrote:
> Under what circumstances can this happen?
I will check


================
Comment at: 
clang-tools-extra/clang-tidy/readability/StaticMethodCheck.cpp:136-149
+  if (Definition->isConst()) {
+    // Make sure that we either remove 'const' on both declaration and
+    // definition or emit no fix-it at all.
+    SourceRange DefConst = getLocationOfConst(Definition->getTypeSourceInfo(),
+                                       *Result.SourceManager,
+                                       Result.Context->getLangOpts());
+
----------------
aaron.ballman wrote:
> `const` isn't the only thing to worry about though, no? You need to handle 
> things like:
> ```
> struct S {
>   void f() volatile;
>   void g() &;
>   void h() &&;
> };
> ```
> Another one I am curious about are computed noexcept specifications and 
> whether those are handled properly. e.g.,
> ```
> struct S {
>   int i;
>   void foo(SomeClass C) noexcept(noexcept(C + i));
> };
> ```
I added tests for those cases and disabled fix-it generation for them to keep 
the code simple (for now).


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D61749/new/

https://reviews.llvm.org/D61749



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

Reply via email to