llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-tidy

Author: Victor Chernyakin (localspook)

<details>
<summary>Changes</summary>

As suggested in [this 
comment](https://github.com/llvm/llvm-project/pull/173340#discussion_r2810951335)!

---
Full diff: https://github.com/llvm/llvm-project/pull/182422.diff


5 Files Affected:

- (modified) clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.cpp 
(+9-4) 
- (modified) clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.h 
(+1-1) 
- (modified) clang-tools-extra/docs/ReleaseNotes.rst (+3) 
- (modified) 
clang-tools-extra/docs/clang-tidy/checks/modernize/redundant-void-arg.rst 
(+2-1) 
- (modified) 
clang-tools-extra/test/clang-tidy/checkers/modernize/redundant-void-arg.c 
(+37-1) 


``````````diff
diff --git a/clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.cpp 
b/clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.cpp
index 7be32987acb7b..535f0e156caa4 100644
--- a/clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.cpp
@@ -15,10 +15,15 @@ using namespace clang::ast_matchers;
 namespace clang::tidy::modernize {
 
 void RedundantVoidArgCheck::registerMatchers(MatchFinder *Finder) {
-  Finder->addMatcher(
-      functionTypeLoc(unless(hasParent(functionDecl(isExternC())))).bind("fn"),
-      this);
-  Finder->addMatcher(lambdaExpr().bind("fn"), this);
+  if (getLangOpts().CPlusPlus) {
+    Finder->addMatcher(
+        functionTypeLoc(unless(hasParent(functionDecl(isExternC()))))
+            .bind("fn"),
+        this);
+    Finder->addMatcher(lambdaExpr().bind("fn"), this);
+  } else {
+    Finder->addMatcher(functionTypeLoc().bind("fn"), this);
+  }
 }
 
 void RedundantVoidArgCheck::check(const MatchFinder::MatchResult &Result) {
diff --git a/clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.h 
b/clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.h
index d5f9356fab5a9..b92fce777f9af 100644
--- a/clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.h
@@ -29,7 +29,7 @@ class RedundantVoidArgCheck : public ClangTidyCheck {
       : ClangTidyCheck(Name, Context) {}
 
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-    return LangOpts.CPlusPlus;
+    return LangOpts.CPlusPlus || LangOpts.C23;
   }
   std::optional<TraversalKind> getCheckTraversalKind() const override {
     return TK_IgnoreUnlessSpelledInSource;
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst 
b/clang-tools-extra/docs/ReleaseNotes.rst
index 68bab88146241..22992c5a1d5d8 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -209,6 +209,9 @@ Changes in existing checks
   <clang-tidy/checks/modernize/pass-by-value>` check by adding `IgnoreMacros`
   option to suppress warnings in macros.
 
+- Improved :doc:`modernize-redundant-void-arg
+  <clang-tidy/checks/modernize/redundant-void-arg>` check to work in C23.
+
 - Improved :doc:`modernize-use-std-format
   <clang-tidy/checks/modernize/use-std-format>` check by fixing a crash
   when an argument is part of a macro expansion.
diff --git 
a/clang-tools-extra/docs/clang-tidy/checks/modernize/redundant-void-arg.rst 
b/clang-tools-extra/docs/clang-tidy/checks/modernize/redundant-void-arg.rst
index d1a03e3fbb61c..209d9ba7fd123 100644
--- a/clang-tools-extra/docs/clang-tidy/checks/modernize/redundant-void-arg.rst
+++ b/clang-tools-extra/docs/clang-tidy/checks/modernize/redundant-void-arg.rst
@@ -3,7 +3,8 @@
 modernize-redundant-void-arg
 ============================
 
-Find and remove redundant ``void`` argument lists.
+Finds and removes redundant ``void`` argument lists.
+Works in C++ and in C23 and up.
 
 Examples:
   ===================================  ===========================
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/redundant-void-arg.c 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/redundant-void-arg.c
index bbbf73f9c676a..8eb874a33c101 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/modernize/redundant-void-arg.c
+++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/redundant-void-arg.c
@@ -1,4 +1,7 @@
-// RUN: clang-tidy -checks=-*,modernize-redundant-void-arg %s -- 
-Wno-strict-prototypes -x c | count 0
+// RUN: clang-tidy %s -checks=-*,modernize-redundant-void-arg -- -std=c99 
-Wno-strict-prototypes | count 0
+// RUN: clang-tidy %s -checks=-*,modernize-redundant-void-arg -- -std=c11 
-Wno-strict-prototypes | count 0
+// RUN: clang-tidy %s -checks=-*,modernize-redundant-void-arg -- -std=c17 
-Wno-strict-prototypes | count 0
+// RUN: %check_clang_tidy -std=c23-or-later -check-suffixes=C23 %s 
modernize-redundant-void-arg %t
 
 #define NULL 0
 
@@ -11,6 +14,8 @@ int foo2() {
 int j = 1;
 
 int foo(void) {
+// CHECK-MESSAGES-C23: :[[@LINE-1]]:9: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-FIXES-C23: int foo() {
   return 0;
 }
 
@@ -21,24 +26,47 @@ typedef void my_void;
 // A function taking void and returning a pointer to function taking void
 // and returning int.
 int (*returns_fn_void_int(void))(void);
+// CHECK-MESSAGES-C23: :[[@LINE-1]]:27: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-MESSAGES-C23: :[[@LINE-2]]:34: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-FIXES-C23: int (*returns_fn_void_int())();
 
 typedef int (*returns_fn_void_int_t(void))(void);
+// CHECK-MESSAGES-C23: :[[@LINE-1]]:37: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-MESSAGES-C23: :[[@LINE-2]]:44: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-FIXES-C23: typedef int (*returns_fn_void_int_t())();
 
 int (*returns_fn_void_int(void))(void) {
+// CHECK-MESSAGES-C23: :[[@LINE-1]]:27: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-MESSAGES-C23: :[[@LINE-2]]:34: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-FIXES-C23: int (*returns_fn_void_int())() {
   return NULL;
 }
 
 // A function taking void and returning a pointer to a function taking void
 // and returning a pointer to a function taking void and returning void.
 void (*(*returns_fn_returns_fn_void_void(void))(void))(void);
+// CHECK-MESSAGES-C23: :[[@LINE-1]]:42: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-MESSAGES-C23: :[[@LINE-2]]:49: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-MESSAGES-C23: :[[@LINE-3]]:56: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-FIXES-C23: void (*(*returns_fn_returns_fn_void_void())())();
 
 typedef void (*(*returns_fn_returns_fn_void_void_t(void))(void))(void);
+// CHECK-MESSAGES-C23: :[[@LINE-1]]:52: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-MESSAGES-C23: :[[@LINE-2]]:59: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-MESSAGES-C23: :[[@LINE-3]]:66: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-FIXES-C23: typedef void (*(*returns_fn_returns_fn_void_void_t())())();
 
 void (*(*returns_fn_returns_fn_void_void(void))(void))(void) {
+// CHECK-MESSAGES-C23: :[[@LINE-1]]:42: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-MESSAGES-C23: :[[@LINE-2]]:49: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-MESSAGES-C23: :[[@LINE-3]]:56: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-FIXES-C23: void (*(*returns_fn_returns_fn_void_void())())() {
   return NULL;
 }
 
 void bar(void) {
+// CHECK-MESSAGES-C23: :[[@LINE-1]]:10: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-FIXES-C23: void bar() {
   int i;
   int *pi = NULL;
   void *pv = (void *) pi;
@@ -49,10 +77,18 @@ void bar(void) {
 }
 
 void (*f1)(void);
+// CHECK-MESSAGES-C23: :[[@LINE-1]]:12: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-FIXES-C23: void (*f1)();
 void (*f2)(void) = NULL;
+// CHECK-MESSAGES-C23: :[[@LINE-1]]:12: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-FIXES-C23: void (*f2)() = NULL;
 void (*f3)(void) = bar;
+// CHECK-MESSAGES-C23: :[[@LINE-1]]:12: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-FIXES-C23: void (*f3)() = bar;
 void (*fa)();
 void (*fb)() = NULL;
 void (*fc)() = bar;
 
 typedef void (function_ptr)(void);
+// CHECK-MESSAGES-C23: :[[@LINE-1]]:29: warning: redundant void argument list 
[modernize-redundant-void-arg]
+// CHECK-FIXES-C23: typedef void (function_ptr)();

``````````

</details>


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

Reply via email to