diff options
author | Haojian Wu <hokein@google.com> | 2017-08-04 08:07:05 +0000 |
---|---|---|
committer | Haojian Wu <hokein@google.com> | 2017-08-04 08:07:05 +0000 |
commit | dc1c7610b86ecc61716edfa3efde8fc506fc2be7 (patch) | |
tree | 5d289423e710f50b85098c596c5c653ab0f49e3e /clang-tools-extra/test/clang-tidy/modernize-make-unique.cpp | |
parent | 9505470033dcddfaa9abaf376191408b7cd33280 (diff) | |
download | bcm5719-llvm-dc1c7610b86ecc61716edfa3efde8fc506fc2be7.tar.gz bcm5719-llvm-dc1c7610b86ecc61716edfa3efde8fc506fc2be7.zip |
[clang-tidy] Support initializer-list constructor cases in modernize-make-unique.
Reviewers: alexfh
Reviewed By: alexfh
Subscribers: malcolm.parsons, JDevlieghere, xazax.hun, cfe-commits
Differential Revision: https://reviews.llvm.org/D36016
llvm-svn: 310035
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/modernize-make-unique.cpp')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/modernize-make-unique.cpp | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/modernize-make-unique.cpp b/clang-tools-extra/test/clang-tidy/modernize-make-unique.cpp index 551f38d7dfd..cd4d057dac2 100644 --- a/clang-tools-extra/test/clang-tidy/modernize-make-unique.cpp +++ b/clang-tools-extra/test/clang-tidy/modernize-make-unique.cpp @@ -2,6 +2,7 @@ // RUN: -I%S/Inputs/modernize-smart-ptr #include "unique_ptr.h" +#include "initializer_list.h" // CHECK-FIXES: #include <memory> struct Base { @@ -26,6 +27,22 @@ struct DPair { struct Empty {}; +struct E { + E(std::initializer_list<int>); + E(); +}; + +struct F { + F(std::initializer_list<int>); + F(); + int a; +}; + +struct G { + G(std::initializer_list<int>); + G(int); +}; + namespace { class Foo {}; } // namespace @@ -225,6 +242,57 @@ void initialization(int T, Base b) { // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: use std::make_unique instead // CHECK-FIXES: std::unique_ptr<Empty> PEmpty = std::make_unique<Empty>(Empty{}); + // Initialization with default constructor. + std::unique_ptr<E> PE1 = std::unique_ptr<E>(new E{}); + // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use std::make_unique instead + // CHECK-FIXES: std::unique_ptr<E> PE1 = std::make_unique<E>(); + + // Initialization with the initializer-list constructor. + std::unique_ptr<E> PE2 = std::unique_ptr<E>(new E{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use std::make_unique instead + // CHECK-FIXES: std::unique_ptr<E> PE2 = std::make_unique<E>({1, 2}); + + // Initialization with default constructor. + std::unique_ptr<F> PF1 = std::unique_ptr<F>(new F()); + // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use std::make_unique instead + // CHECK-FIXES: std::unique_ptr<F> PF1 = std::make_unique<F>(); + + // Initialization with default constructor. + std::unique_ptr<F> PF2 = std::unique_ptr<F>(new F{}); + // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use std::make_unique instead + // CHECK-FIXES: std::unique_ptr<F> PF2 = std::make_unique<F>(); + + // Initialization with the initializer-list constructor. + std::unique_ptr<F> PF3 = std::unique_ptr<F>(new F{1}); + // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use std::make_unique instead + // CHECK-FIXES: std::unique_ptr<F> PF3 = std::make_unique<F>({1}); + + // Initialization with the initializer-list constructor. + std::unique_ptr<F> PF4 = std::unique_ptr<F>(new F{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use std::make_unique instead + // CHECK-FIXES: std::unique_ptr<F> PF4 = std::make_unique<F>({1, 2}); + + // Initialization with the initializer-list constructor. + std::unique_ptr<F> PF5 = std::unique_ptr<F>(new F({1, 2})); + // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use std::make_unique instead + // CHECK-FIXES: std::unique_ptr<F> PF5 = std::make_unique<F>({1, 2}); + + // Initialization with the initializer-list constructor as the default + // constructor is not present. + std::unique_ptr<G> PG1 = std::unique_ptr<G>(new G{}); + // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use std::make_unique instead + // CHECK-FIXES: std::unique_ptr<G> PG1 = std::make_unique<G>({}); + + // Initialization with the initializer-list constructor. + std::unique_ptr<G> PG2 = std::unique_ptr<G>(new G{1}); + // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use std::make_unique instead + // CHECK-FIXES: std::unique_ptr<G> PG2 = std::make_unique<G>({1}); + + // Initialization with the initializer-list constructor. + std::unique_ptr<G> PG3 = std::unique_ptr<G>(new G{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use std::make_unique instead + // CHECK-FIXES: std::unique_ptr<G> PG3 = std::make_unique<G>({1, 2}); + std::unique_ptr<Foo> FF = std::unique_ptr<Foo>(new Foo()); // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: // CHECK-FIXES: std::unique_ptr<Foo> FF = std::make_unique<Foo>(); |