diff options
| author | Alexander Kornienko <alexfh@google.com> | 2015-03-05 13:53:21 +0000 |
|---|---|---|
| committer | Alexander Kornienko <alexfh@google.com> | 2015-03-05 13:53:21 +0000 |
| commit | ed07a255da4e5131439cb465cee750c3dc9d13a6 (patch) | |
| tree | c79e897223ebfdfa8a8ba120d0773e2098801aec | |
| parent | ed824e0e4b1f45159aafd032421e3c81ab76db1b (diff) | |
| download | bcm5719-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.cpp | 11 | ||||
| -rw-r--r-- | clang-tools-extra/test/clang-tidy/misc-uniqueptr-reset-release.cpp | 2 |
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) |

