[clang] [clang] Generate note on declaration for nodiscard-related attributes (PR #112289)

Erich Keane via cfe-commits cfe-commits at lists.llvm.org
Tue Oct 15 08:22:57 PDT 2024


================
@@ -204,23 +205,29 @@ static bool DiagnoseUnusedComparison(Sema &S, const Expr *E) {
   return true;
 }
 
-static bool DiagnoseNoDiscard(Sema &S, const WarnUnusedResultAttr *A,
-                              SourceLocation Loc, SourceRange R1,
-                              SourceRange R2, bool IsCtor) {
+static bool DiagnoseNoDiscard(Sema &S, const NamedDecl *OffendingDecl,
+                              const WarnUnusedResultAttr *A, SourceLocation Loc,
+                              SourceRange R1, SourceRange R2, bool IsCtor) {
   if (!A)
     return false;
   StringRef Msg = A->getMessage();
 
+  bool result;
   if (Msg.empty()) {
     if (IsCtor)
-      return S.Diag(Loc, diag::warn_unused_constructor) << A << R1 << R2;
-    return S.Diag(Loc, diag::warn_unused_result) << A << R1 << R2;
-  }
+      result = S.Diag(Loc, diag::warn_unused_constructor) << A << R1 << R2;
----------------
erichkeane wrote:

I'm a bit confused about this section here... We don't really need all of this, right?  All you want to do is add the diag at the bottom, right?

Also, 'result' is always going to be true.  `Diag` always returns true, it is just a shortcut to return early with a common pattern we have.

So I think this is the wrong way of doing a refactor here.

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


More information about the cfe-commits mailing list