Re-write many calls to WrapUnique() with MakeUnique()
A mostly-automated change to convert instances of WrapUnique(new Foo(...)) to
MakeUnique<Foo>(...). See the thread at
https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/iQgMedVA8-k
for background.
To avoid requiring too many manual fixups, the change skips some cases that are
frequently problematic. In particular, in methods named Foo::Method() it will
not try to change WrapUnique(new Foo()) to MakeUnique<Foo>(). This is because
Foo::Method() may be accessing an internal constructor of Foo.
Cases where MakeUnique<NestedClass>(...) is called within a method of
OuterClass are common but hard to detect automatically, so have been fixed-up
manually.
The only types of manual fix ups applied are:
1) Revert MakeUnique back to WrapUnique
2) Change NULL to nullptr in argument list (MakeUnique cannot forward NULL
correctly)
3) Add base:: namespace qualifier where missing.
WrapUnique(new Foo) has not been converted to MakeUnique<Foo>() as this might
change behaviour if Foo does not have a user-defined constructor. For example,
WrapUnique(new int) creates an unitialised integer, but MakeUnique<int>()
creates an integer initialised to 0.
git cl format has been been run over the CL. Spot-checking has uncovered no
cases of mis-formatting.
BUG=637812
Review-Url: https://codereview.chromium.org/2252293003
Cr-Original-Commit-Position: refs/heads/master@{#415572}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 8fcde24af7919904a7f2f9b9d452da8c575095db
diff --git a/tools/gn/command_desc.cc b/tools/gn/command_desc.cc
index 72525e9..acb8077 100644
--- a/tools/gn/command_desc.cc
+++ b/tools/gn/command_desc.cc
@@ -459,7 +459,7 @@
if (json) {
// Convert all targets/configs to JSON, serialize and print them
- auto res = base::WrapUnique(new base::DictionaryValue());
+ auto res = base::MakeUnique<base::DictionaryValue>();
if (!target_matches.empty()) {
for (const auto* target : target_matches) {
res->Set(target->label().GetUserVisibleName(
diff --git a/tools/gn/desc_builder.cc b/tools/gn/desc_builder.cc
index bc8f02a..aca148c 100644
--- a/tools/gn/desc_builder.cc
+++ b/tools/gn/desc_builder.cc
@@ -114,7 +114,7 @@
template <typename T>
ValuePtr RenderValue(const std::vector<T>& vector) {
- auto res = base::WrapUnique(new base::ListValue());
+ auto res = base::MakeUnique<base::ListValue>();
for (const auto& v : vector)
res->Append(RenderValue(v));
@@ -181,7 +181,7 @@
: BaseDescBuilder(what, false, false, false), config_(config) {}
std::unique_ptr<base::DictionaryValue> BuildDescription() {
- auto res = base::WrapUnique(new base::DictionaryValue());
+ auto res = base::MakeUnique<base::DictionaryValue>();
const ConfigValues& values = config_->resolved_values();
if (what_.empty())
@@ -190,7 +190,7 @@
config_->label().GetToolchainLabel().GetUserVisibleName(false));
if (what(variables::kConfigs) && !config_->configs().empty()) {
- auto configs = base::WrapUnique(new base::ListValue());
+ auto configs = base::MakeUnique<base::ListValue>();
FillInConfigVector(configs.get(), config_->configs().vector());
res->Set(variables::kConfigs, std::move(configs));
}
@@ -233,7 +233,7 @@
ValuePtr render_config_value_array(
const ConfigValues& values,
const std::vector<T>& (ConfigValues::*getter)() const) {
- auto res = base::WrapUnique(new base::ListValue());
+ auto res = base::MakeUnique<base::ListValue>();
for (const T& cur : (values.*getter)())
res->Append(RenderValue(cur));
@@ -254,7 +254,7 @@
: BaseDescBuilder(what, all, tree, blame), target_(target) {}
std::unique_ptr<base::DictionaryValue> BuildDescription() {
- auto res = base::WrapUnique(new base::DictionaryValue());
+ auto res = base::MakeUnique<base::DictionaryValue>();
bool is_binary_output = target_->IsBinary();
if (what_.empty()) {
@@ -277,7 +277,7 @@
res->SetBoolean(variables::kCheckIncludes, target_->check_includes());
if (what(variables::kAllowCircularIncludesFrom)) {
- auto labels = base::WrapUnique(new base::ListValue());
+ auto labels = base::MakeUnique<base::ListValue>();
for (const auto& cur : target_->allow_circular_includes_from())
labels->AppendString(cur.GetUserVisibleName(GetToolchainLabel()));
@@ -309,20 +309,20 @@
if (is_binary_output && what(variables::kConfigs) &&
!target_->configs().empty()) {
- auto configs = base::WrapUnique(new base::ListValue());
+ auto configs = base::MakeUnique<base::ListValue>();
FillInConfigVector(configs.get(), target_->configs().vector());
res->Set(variables::kConfigs, std::move(configs));
}
if (what(variables::kPublicConfigs) && !target_->public_configs().empty()) {
- auto configs = base::WrapUnique(new base::ListValue());
+ auto configs = base::MakeUnique<base::ListValue>();
FillInConfigVector(configs.get(), target_->public_configs());
res->Set(variables::kPublicConfigs, std::move(configs));
}
if (what(variables::kAllDependentConfigs) &&
!target_->all_dependent_configs().empty()) {
- auto configs = base::WrapUnique(new base::ListValue());
+ auto configs = base::MakeUnique<base::ListValue>();
FillInConfigVector(configs.get(), target_->all_dependent_configs());
res->Set(variables::kAllDependentConfigs, std::move(configs));
}
@@ -335,7 +335,7 @@
target_->action_values().script().value());
if (what(variables::kArgs)) {
- auto args = base::WrapUnique(new base::ListValue());
+ auto args = base::MakeUnique<base::ListValue>();
for (const auto& elem : target_->action_values().args().list())
args->AppendString(elem.AsString());
@@ -405,7 +405,7 @@
if (what(variables::kLibs)) {
const OrderedSet<LibFile>& all_libs = target_->all_libs();
if (!all_libs.empty()) {
- auto libs = base::WrapUnique(new base::ListValue());
+ auto libs = base::MakeUnique<base::ListValue>();
for (size_t i = 0; i < all_libs.size(); i++)
libs->AppendString(all_libs[i].value());
res->Set(variables::kLibs, std::move(libs));
@@ -415,7 +415,7 @@
if (what(variables::kLibDirs)) {
const OrderedSet<SourceDir>& all_lib_dirs = target_->all_lib_dirs();
if (!all_lib_dirs.empty()) {
- auto lib_dirs = base::WrapUnique(new base::ListValue());
+ auto lib_dirs = base::MakeUnique<base::ListValue>();
for (size_t i = 0; i < all_lib_dirs.size(); i++)
lib_dirs->AppendString(FormatSourceDir(all_lib_dirs[i]));
res->Set(variables::kLibDirs, std::move(lib_dirs));
@@ -472,7 +472,7 @@
}
ValuePtr RenderDeps() {
- auto res = base::WrapUnique(new base::ListValue());
+ auto res = base::MakeUnique<base::ListValue>();
// Tree mode is separate.
if (tree_) {
@@ -506,7 +506,7 @@
}
ValuePtr RenderRuntimeDeps() {
- auto res = base::WrapUnique(new base::ListValue());
+ auto res = base::MakeUnique<base::ListValue>();
const Target* previous_from = NULL;
for (const auto& pair : ComputeRuntimeDeps(target_)) {
@@ -532,12 +532,12 @@
}
void FillInSourceOutputs(base::DictionaryValue* res) {
- auto dict = base::WrapUnique(new base::DictionaryValue());
+ auto dict = base::MakeUnique<base::DictionaryValue>();
for (const auto& source : target_->sources()) {
std::vector<OutputFile> outputs;
Toolchain::ToolType tool_type = Toolchain::TYPE_NONE;
if (target_->GetOutputFilesForSource(source, &tool_type, &outputs)) {
- auto list = base::WrapUnique(new base::ListValue());
+ auto list = base::MakeUnique<base::ListValue>();
for (const auto& output : outputs)
list->AppendString(output.value());
@@ -548,7 +548,7 @@
}
void FillInBundle(base::DictionaryValue* res) {
- auto data = base::WrapUnique(new base::DictionaryValue());
+ auto data = base::MakeUnique<base::DictionaryValue>();
const BundleData& bundle_data = target_->bundle_data();
const Settings* settings = target_->settings();
BundleData::SourceFiles sources;
@@ -562,7 +562,7 @@
data->Set("plugins_dir", RenderValue(bundle_data.plugins_dir()));
data->SetString("product_type", bundle_data.product_type());
- auto deps = base::WrapUnique(new base::ListValue());
+ auto deps = base::MakeUnique<base::ListValue>();
for (const auto* dep : bundle_data.bundle_deps())
deps->AppendString(dep->label().GetUserVisibleName(GetToolchainLabel()));
@@ -572,7 +572,7 @@
void FillInOutputs(base::DictionaryValue* res) {
if (target_->output_type() == Target::ACTION) {
- auto list = base::WrapUnique(new base::ListValue());
+ auto list = base::MakeUnique<base::ListValue>();
for (const auto& elem : target_->action_values().outputs().list())
list->AppendString(elem.AsString());
@@ -586,7 +586,7 @@
target_->output_type() == Target::COPY_FILES) {
const SubstitutionList& outputs = target_->action_values().outputs();
if (!outputs.required_types().empty()) {
- auto patterns = base::WrapUnique(new base::ListValue());
+ auto patterns = base::MakeUnique<base::ListValue>();
for (const auto& elem : outputs.list())
patterns->AppendString(elem.AsString());
@@ -619,7 +619,7 @@
template <class T>
ValuePtr RenderConfigValues(const std::vector<T>& (ConfigValues::*getter)()
const) {
- auto res = base::WrapUnique(new base::ListValue());
+ auto res = base::MakeUnique<base::ListValue>();
for (ConfigValuesIterator iter(target_); !iter.done(); iter.Next()) {
const std::vector<T>& vec = (iter.cur().*getter)();
@@ -653,7 +653,7 @@
// Indent string values in blame mode
if (blame_ && rendered->GetAsString(&str)) {
str = " " + str;
- rendered = base::WrapUnique(new base::StringValue(str));
+ rendered = base::MakeUnique<base::StringValue>(str);
}
res->Append(std::move(rendered));
}
diff --git a/tools/gn/functions_unittest.cc b/tools/gn/functions_unittest.cc
index c6681bf..7156747 100644
--- a/tools/gn/functions_unittest.cc
+++ b/tools/gn/functions_unittest.cc
@@ -48,8 +48,7 @@
// "defined(def.foo)" to see if foo is defined on the def scope.
std::unique_ptr<AccessorNode> undef_accessor(new AccessorNode);
undef_accessor->set_base(defined_token);
- undef_accessor->set_member(
- base::WrapUnique(new IdentifierNode(undefined_token)));
+ undef_accessor->set_member(base::MakeUnique<IdentifierNode>(undefined_token));
ListNode args_list_accessor_defined;
args_list_accessor_defined.append_item(std::move(undef_accessor));
result = functions::RunDefined(setup.scope(), &function_call,
diff --git a/tools/gn/json_project_writer.cc b/tools/gn/json_project_writer.cc
index dc375a6..67c21ee 100644
--- a/tools/gn/json_project_writer.cc
+++ b/tools/gn/json_project_writer.cc
@@ -86,7 +86,7 @@
std::vector<const Target*>& all_targets) {
Label default_toolchain_label;
- auto targets = base::WrapUnique(new base::DictionaryValue());
+ auto targets = base::MakeUnique<base::DictionaryValue>();
for (const auto* target : all_targets) {
if (default_toolchain_label.is_null())
default_toolchain_label = target->settings()->default_toolchain_label();
@@ -104,13 +104,13 @@
std::move(description));
}
- auto settings = base::WrapUnique(new base::DictionaryValue());
+ auto settings = base::MakeUnique<base::DictionaryValue>();
settings->SetString("root_path", build_settings->root_path_utf8());
settings->SetString("build_dir", build_settings->build_dir().value());
settings->SetString("default_toolchain",
default_toolchain_label.GetUserVisibleName(false));
- auto output = base::WrapUnique(new base::DictionaryValue());
+ auto output = base::MakeUnique<base::DictionaryValue>();
output->Set("targets", std::move(targets));
output->Set("build_settings", std::move(settings));
diff --git a/tools/gn/parser.cc b/tools/gn/parser.cc
index 76d4580..5fe9506 100644
--- a/tools/gn/parser.cc
+++ b/tools/gn/parser.cc
@@ -462,7 +462,7 @@
}
std::unique_ptr<ParseNode> Parser::Literal(const Token& token) {
- return base::WrapUnique(new LiteralNode(token));
+ return base::MakeUnique<LiteralNode>(token);
}
std::unique_ptr<ParseNode> Parser::Name(const Token& token) {
@@ -529,7 +529,7 @@
const Token& token) {
std::unique_ptr<ListNode> list(new ListNode);
list->set_begin_token(token);
- list->set_end(base::WrapUnique(new EndNode(token)));
+ list->set_end(base::MakeUnique<EndNode>(token));
std::unique_ptr<BlockNode> block;
bool has_arg = false;
if (LookAhead(Token::LEFT_PAREN)) {
@@ -669,7 +669,7 @@
*err_ = Err(cur_token(), "Trailing comma");
return std::unique_ptr<ListNode>();
}
- list->set_end(base::WrapUnique(new EndNode(cur_token())));
+ list->set_end(base::MakeUnique<EndNode>(cur_token()));
return list;
}
@@ -728,7 +728,7 @@
for (;;) {
if (LookAhead(Token::RIGHT_BRACE)) {
- block->set_end(base::WrapUnique(new EndNode(Consume())));
+ block->set_end(base::MakeUnique<EndNode>(Consume()));
break;
}
diff --git a/tools/gn/xcode_object.cc b/tools/gn/xcode_object.cc
index ef24e7d..dc5bfb8 100644
--- a/tools/gn/xcode_object.cc
+++ b/tools/gn/xcode_object.cc
@@ -317,7 +317,7 @@
name_(name) {
if (!shell_script.empty()) {
build_phases_.push_back(
- base::WrapUnique(new PBXShellScriptBuildPhase(name, shell_script)));
+ base::MakeUnique<PBXShellScriptBuildPhase>(name, shell_script));
}
}
@@ -475,8 +475,8 @@
DCHECK(!source_path.empty());
std::string::size_type sep = source_path.find("/");
if (sep == std::string::npos) {
- children_.push_back(base::WrapUnique(
- new PBXFileReference(std::string(), source_path, std::string())));
+ children_.push_back(base::MakeUnique<PBXFileReference>(
+ std::string(), source_path, std::string()));
return static_cast<PBXFileReference*>(children_.back().get());
}
@@ -563,7 +563,7 @@
const PBXFileReference* file_reference) {
DCHECK(file_reference);
source_build_phase_->AddBuildFile(
- base::WrapUnique(new PBXBuildFile(file_reference, source_build_phase_)));
+ base::MakeUnique<PBXBuildFile>(file_reference, source_build_phase_));
}
PBXObjectClass PBXNativeTarget::Class() const {
@@ -596,11 +596,11 @@
attributes_["BuildIndependentTargetsInParallel"] = "YES";
main_group_.reset(new PBXGroup);
- sources_ = static_cast<PBXGroup*>(main_group_->AddChild(
- base::WrapUnique(new PBXGroup(source_path, "Source"))));
+ sources_ = static_cast<PBXGroup*>(
+ main_group_->AddChild(base::MakeUnique<PBXGroup>(source_path, "Source")));
products_ = static_cast<PBXGroup*>(main_group_->AddChild(
- base::WrapUnique(new PBXGroup(std::string(), "Product"))));
- main_group_->AddChild(base::WrapUnique(new PBXGroup(std::string(), "Build")));
+ base::MakeUnique<PBXGroup>(std::string(), "Product")));
+ main_group_->AddChild(base::MakeUnique<PBXGroup>(std::string(), "Build"));
configurations_.reset(new XCConfigurationList(config_name, attributes, this));
}
@@ -620,13 +620,13 @@
attributes["PRODUCT_NAME"] = name_;
PBXFileReference* product_reference = static_cast<PBXFileReference*>(
- products_->AddChild(base::WrapUnique(new PBXFileReference(
- std::string(), name_, "compiled.mach-o.executable"))));
+ products_->AddChild(base::MakeUnique<PBXFileReference>(
+ std::string(), name_, "compiled.mach-o.executable")));
const char product_type[] = "com.apple.product-type.tool";
- targets_.push_back(base::WrapUnique(
- new PBXNativeTarget(name_, std::string(), config_name_, attributes,
- product_type, name_, product_reference)));
+ targets_.push_back(base::MakeUnique<PBXNativeTarget>(
+ name_, std::string(), config_name_, attributes, product_type, name_,
+ product_reference));
target_for_indexing_ = static_cast<PBXNativeTarget*>(targets_.back().get());
}
@@ -641,8 +641,8 @@
attributes["CONFIGURATION_BUILD_DIR"] = ".";
attributes["PRODUCT_NAME"] = name;
- targets_.push_back(base::WrapUnique(
- new PBXAggregateTarget(name, shell_script, config_name_, attributes)));
+ targets_.push_back(base::MakeUnique<PBXAggregateTarget>(
+ name, shell_script, config_name_, attributes));
}
void PBXProject::AddNativeTarget(const std::string& name,
@@ -651,10 +651,10 @@
const std::string& output_type,
const std::string& shell_script) {
base::StringPiece ext = FindExtension(&output_name);
- PBXFileReference* product =
- static_cast<PBXFileReference*>(products_->AddChild(base::WrapUnique(
- new PBXFileReference(std::string(), output_name,
- type.empty() ? GetSourceType(ext) : type))));
+ PBXFileReference* product = static_cast<PBXFileReference*>(
+ products_->AddChild(base::MakeUnique<PBXFileReference>(
+ std::string(), output_name,
+ type.empty() ? GetSourceType(ext) : type)));
size_t ext_offset = FindExtensionOffset(output_name);
std::string product_name = ext_offset != std::string::npos
@@ -666,9 +666,9 @@
attributes["CONFIGURATION_BUILD_DIR"] = ".";
attributes["PRODUCT_NAME"] = product_name;
- targets_.push_back(base::WrapUnique(
- new PBXNativeTarget(name, shell_script, config_name_, attributes,
- output_type, product_name, product)));
+ targets_.push_back(base::MakeUnique<PBXNativeTarget>(
+ name, shell_script, config_name_, attributes, output_type, product_name,
+ product));
}
void PBXProject::SetProjectDirPath(const std::string& project_dir_path) {
@@ -831,7 +831,7 @@
: owner_reference_(owner_reference) {
DCHECK(owner_reference_);
configurations_.push_back(
- base::WrapUnique(new XCBuildConfiguration(name, attributes)));
+ base::MakeUnique<XCBuildConfiguration>(name, attributes));
}
XCConfigurationList::~XCConfigurationList() {}