[clang] [clang][Sema] Refine unused-member-function diagnostic message for constructors (PR #84515)
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Tue Jun 3 09:06:44 PDT 2025
================
@@ -402,7 +402,7 @@ def warn_unused_function : Warning<"unused function %0">,
InGroup<UnusedFunction>, DefaultIgnore;
def warn_unused_template : Warning<"unused %select{function|variable}0 template %1">,
InGroup<UnusedTemplate>, DefaultIgnore;
-def warn_unused_member_function : Warning<"unused member function %0">,
+def warn_unused_member_function : Warning<"unused %select{constructor|member function %1}0">,
----------------
AaronBallman wrote:
> However, note that only default constructors are considered “special members” (see CXXSpecialMemberKind).
It supports more than just a default constructor:
https://github.com/llvm/llvm-project/blob/d0fb83531b07f608da064ed98e6213f32a5544e9/clang/include/clang/Sema/Sema.h#L422
So I was thinking something more like:
```
def warn_unused_member_function : Warning<
"unused %select{member function %1|%sub{select_special_member_kind}1}0">,
InGroup<UnusedMemberFunction>, DefaultIgnore;
```
and
```
DefaultedFunctionKind DFK = getDefaultedFunctionKind(DiagD);
if (DFK.isSpecialMember())
Diag(DiagD->getLocation(), diag::warn_unused_member_function) << /*special member*/1 << DFK.asSpecialMember()) << DiagRange;
else if (isa<CXXMethodDecl>(DiagD))
Diag(DiagD->getLocation(), diag::warn_unused_member_function) << /*member*/0 << DiagD << DiagRange;
else
Diag(DiagD->getLocation(), diag::warn_unused_function) << DiagD << DiagRange;
```
https://github.com/llvm/llvm-project/pull/84515
More information about the cfe-commits
mailing list