Index: test/clang-tidy/bugprone-unused-return-value-custom.cpp =================================================================== --- test/clang-tidy/bugprone-unused-return-value-custom.cpp +++ test/clang-tidy/bugprone-unused-return-value-custom.cpp @@ -47,32 +47,40 @@ void warning() { fun(); - // CHECK-MESSAGES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:3: note: cast the expression to void to silence this warning (fun()); - // CHECK-MESSAGES: [[@LINE-1]]:4: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:4: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:4: note: cast the expression to void to silence this warning ns::Outer::Inner ObjA1; ObjA1.memFun(); - // CHECK-MESSAGES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:3: note: cast the expression to void to silence this warning ns::AliasName::Inner ObjA2; ObjA2.memFun(); - // CHECK-MESSAGES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:3: note: cast the expression to void to silence this warning ns::Derived ObjA3; ObjA3.memFun(); - // CHECK-MESSAGES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:3: note: cast the expression to void to silence this warning ns::Type::staticFun(); - // CHECK-MESSAGES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:3: note: cast the expression to void to silence this warning ns::ClassTemplate ObjA4; ObjA4.memFun(); - // CHECK-MESSAGES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:3: note: cast the expression to void to silence this warning ns::ClassTemplate::staticFun(); - // CHECK-MESSAGES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:3: note: cast the expression to void to silence this warning } void noWarning() { Index: test/clang-tidy/bugprone-unused-return-value.cpp =================================================================== --- test/clang-tidy/bugprone-unused-return-value.cpp +++ test/clang-tidy/bugprone-unused-return-value.cpp @@ -74,93 +74,116 @@ void warning() { std::async(increment, 42); - // CHECK-MESSAGES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:3: note: cast the expression to void to silence this warning std::async(std::launch::async, increment, 42); - // CHECK-MESSAGES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:3: note: cast the expression to void to silence this warning Foo F; std::launder(&F); - // CHECK-MESSAGES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:3: note: cast the expression to void to silence this warning std::remove(nullptr, nullptr, 1); - // CHECK-MESSAGES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:3: note: cast the expression to void to silence this warning std::remove_if(nullptr, nullptr, nullptr); - // CHECK-MESSAGES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:3: note: cast the expression to void to silence this warning std::unique(nullptr, nullptr); - // CHECK-MESSAGES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:3: note: cast the expression to void to silence this warning std::unique_ptr UPtr; UPtr.release(); - // CHECK-MESSAGES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:3: note: cast the expression to void to silence this warning std::string Str; Str.empty(); - // CHECK-MESSAGES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:3: note: cast the expression to void to silence this warning std::vector Vec; Vec.empty(); - // CHECK-MESSAGES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:3: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:3: note: cast the expression to void to silence this warning // test discarding return values inside different kinds of statements auto Lambda = [] { std::remove(nullptr, nullptr, 1); }; - // CHECK-MESSAGES: [[@LINE-1]]:22: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:22: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:22: note: cast the expression to void to silence this warning if (true) std::remove(nullptr, nullptr, 1); - // CHECK-MESSAGES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:5: note: cast the expression to void to silence this warning else if (true) std::remove(nullptr, nullptr, 1); - // CHECK-MESSAGES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:5: note: cast the expression to void to silence this warning else std::remove(nullptr, nullptr, 1); - // CHECK-MESSAGES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:5: note: cast the expression to void to silence this warning while (true) std::remove(nullptr, nullptr, 1); - // CHECK-MESSAGES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:5: note: cast the expression to void to silence this warning do std::remove(nullptr, nullptr, 1); - // CHECK-MESSAGES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:5: note: cast the expression to void to silence this warning while (true); for (;;) std::remove(nullptr, nullptr, 1); - // CHECK-MESSAGES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:5: note: cast the expression to void to silence this warning for (std::remove(nullptr, nullptr, 1);;) - // CHECK-MESSAGES: [[@LINE-1]]:8: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:8: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:8: note: cast the expression to void to silence this warning ; for (;; std::remove(nullptr, nullptr, 1)) - // CHECK-MESSAGES: [[@LINE-1]]:11: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:11: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:11: note: cast the expression to void to silence this warning ; for (auto C : "foo") std::remove(nullptr, nullptr, 1); - // CHECK-MESSAGES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:5: note: cast the expression to void to silence this warning switch (1) { case 1: std::remove(nullptr, nullptr, 1); - // CHECK-MESSAGES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:5: note: cast the expression to void to silence this warning break; default: std::remove(nullptr, nullptr, 1); - // CHECK-MESSAGES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:5: note: cast the expression to void to silence this warning break; } try { std::remove(nullptr, nullptr, 1); - // CHECK-MESSAGES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:5: note: cast the expression to void to silence this warning } catch (...) { std::remove(nullptr, nullptr, 1); - // CHECK-MESSAGES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-1]]:5: warning: the value returned by this function should be used [bugprone-unused-return-value] + // CHECK-NOTES: [[@LINE-2]]:5: note: cast the expression to void to silence this warning } }