summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/clang-tidy/misc/MoveConstructorInitCheck.cpp3
-rw-r--r--clang-tools-extra/test/clang-tidy/misc-move-constructor-init.cpp10
2 files changed, 13 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/MoveConstructorInitCheck.cpp b/clang-tools-extra/clang-tidy/misc/MoveConstructorInitCheck.cpp
index 5d09872295a..081c439f3c7 100644
--- a/clang-tools-extra/clang-tidy/misc/MoveConstructorInitCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/MoveConstructorInitCheck.cpp
@@ -57,6 +57,9 @@ void MoveConstructorInitCheck::check(const MatchFinder::MatchResult &Result) {
if (QT.isTriviallyCopyableType(*Result.Context))
return;
+ if (QT.isConstQualified())
+ return;
+
const auto *RD = QT->getAsCXXRecordDecl();
if (RD && RD->isTriviallyCopyable())
return;
diff --git a/clang-tools-extra/test/clang-tidy/misc-move-constructor-init.cpp b/clang-tools-extra/test/clang-tidy/misc-move-constructor-init.cpp
index 0ea7fb4b86f..104c17abe70 100644
--- a/clang-tools-extra/test/clang-tidy/misc-move-constructor-init.cpp
+++ b/clang-tools-extra/test/clang-tidy/misc-move-constructor-init.cpp
@@ -84,6 +84,16 @@ struct N {
N(N &&RHS) : Mem(move(RHS.Mem)) {}
};
+struct O {
+ O(O&& other) : b(other.b) {} // ok
+ const B b;
+};
+
+struct P {
+ P(O&& other) : b(other.b) {} // ok
+ B b;
+};
+
struct Movable {
Movable(Movable &&) = default;
Movable(const Movable &) = default;
OpenPOWER on IntegriCloud