summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Kornienko <alexfh@google.com>2015-03-05 13:53:21 +0000
committerAlexander Kornienko <alexfh@google.com>2015-03-05 13:53:21 +0000
commited07a255da4e5131439cb465cee750c3dc9d13a6 (patch)
treec79e897223ebfdfa8a8ba120d0773e2098801aec
parented824e0e4b1f45159aafd032421e3c81ab76db1b (diff)
downloadbcm5719-llvm-ed07a255da4e5131439cb465cee750c3dc9d13a6.tar.gz
bcm5719-llvm-ed07a255da4e5131439cb465cee750c3dc9d13a6.zip
[clang-tidy] Fix diag message in clang-tidy misc-uniqueptr-reset-release if right side is rvalue
http://reviews.llvm.org/D8071 Patch by Alexey Sokolov! llvm-svn: 231365
-rw-r--r--clang-tools-extra/clang-tidy/misc/UniqueptrResetRelease.cpp11
-rw-r--r--clang-tools-extra/test/clang-tidy/misc-uniqueptr-reset-release.cpp2
2 files changed, 9 insertions, 4 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/UniqueptrResetRelease.cpp b/clang-tools-extra/clang-tidy/misc/UniqueptrResetRelease.cpp
index e7782c1f684..3f3a68c1ecb 100644
--- a/clang-tools-extra/clang-tidy/misc/UniqueptrResetRelease.cpp
+++ b/clang-tools-extra/clang-tidy/misc/UniqueptrResetRelease.cpp
@@ -52,13 +52,18 @@ void UniqueptrResetRelease::check(const MatchFinder::MatchResult &Result) {
LeftText = "*" + LeftText;
if (ReleaseMember->isArrow())
RightText = "*" + RightText;
+ std::string DiagText;
// Even if x was rvalue, *x is not rvalue anymore.
- if (!Right->isRValue() || ReleaseMember->isArrow())
+ if (!Right->isRValue() || ReleaseMember->isArrow()) {
RightText = "std::move(" + RightText + ")";
+ DiagText = "prefer ptr1 = std::move(ptr2) over ptr1.reset(ptr2.release())";
+ } else {
+ DiagText =
+ "prefer ptr = ReturnUnique() over ptr.reset(ReturnUnique().release())";
+ }
std::string NewText = LeftText + " = " + RightText;
- diag(ResetMember->getExprLoc(),
- "prefer ptr1 = std::move(ptr2) over ptr1.reset(ptr2.release())")
+ diag(ResetMember->getExprLoc(), DiagText)
<< FixItHint::CreateReplacement(
CharSourceRange::getTokenRange(ResetCall->getSourceRange()), NewText);
}
diff --git a/clang-tools-extra/test/clang-tidy/misc-uniqueptr-reset-release.cpp b/clang-tools-extra/test/clang-tidy/misc-uniqueptr-reset-release.cpp
index 763a428ecd9..2839f167b9f 100644
--- a/clang-tools-extra/test/clang-tidy/misc-uniqueptr-reset-release.cpp
+++ b/clang-tools-extra/test/clang-tidy/misc-uniqueptr-reset-release.cpp
@@ -33,7 +33,7 @@ void f() {
// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: prefer ptr1 = std::move(ptr2)
// CHECK-FIXES: a = std::move(c);
a.reset(Create().release());
- // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: prefer ptr1 = std::move(ptr2)
+ // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: prefer ptr = ReturnUnique() over ptr.reset(ReturnUnique().release()) [misc-uniqueptr-reset-release]
// CHECK-FIXES: a = Create();
x->reset(y->release());
// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: prefer ptr1 = std::move(ptr2)
OpenPOWER on IntegriCloud