[clang] [clang][Sema] Refine unused-member-function diagnostic message for constructors (PR #84515)

via cfe-commits cfe-commits at lists.llvm.org
Sun Mar 10 05:47:42 PDT 2024


================
@@ -1398,11 +1398,16 @@ void Sema::ActOnEndOfTranslationUnit() {
           if (FD->getDescribedFunctionTemplate())
             Diag(DiagD->getLocation(), diag::warn_unused_template)
                 << /*function=*/0 << DiagD << DiagRange;
-          else
-            Diag(DiagD->getLocation(), isa<CXXMethodDecl>(DiagD)
-                                           ? diag::warn_unused_member_function
-                                           : diag::warn_unused_function)
-                << DiagD << DiagRange;
+          else {
+            if (isa<CXXMethodDecl>(DiagD))
+              Diag(DiagD->getLocation(), diag::warn_unused_member_function)
+                  << (!isa<CXXConstructorDecl>(DiagD) ? /*member function=*/0
+                                                      : /*constructor=*/1)
+                  << DiagD << DiagRange;
+            else
+              Diag(DiagD->getLocation(), diag::warn_unused_function)
+                  << DiagD << DiagRange;
+          }
----------------
guillem-bartina-sonarsource wrote:

Note that `warn_unused_function` and `warn_unused_member_function` are two different diagnostics, with different messages. The former has only one argument, whereas the latter now has two (one of them selects between `member function` and `constructor`).
Unless I'm missing some hidden logic regarding diagnostic constructors and the '<<' operator, we can't merge the two because the two diagnostics have different number of arguments.

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


More information about the cfe-commits mailing list