OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "tools/gn/builder.h" | 5 #include "tools/gn/builder.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> |
8 | 9 |
9 #include "tools/gn/config.h" | 10 #include "tools/gn/config.h" |
10 #include "tools/gn/deps_iterator.h" | 11 #include "tools/gn/deps_iterator.h" |
11 #include "tools/gn/err.h" | 12 #include "tools/gn/err.h" |
12 #include "tools/gn/loader.h" | 13 #include "tools/gn/loader.h" |
13 #include "tools/gn/scheduler.h" | 14 #include "tools/gn/scheduler.h" |
14 #include "tools/gn/settings.h" | 15 #include "tools/gn/settings.h" |
15 #include "tools/gn/target.h" | 16 #include "tools/gn/target.h" |
16 #include "tools/gn/trace.h" | 17 #include "tools/gn/trace.h" |
17 | 18 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 if (record->item()) { | 76 if (record->item()) { |
76 err = Err(item->defined_from(), "Duplicate definition.", | 77 err = Err(item->defined_from(), "Duplicate definition.", |
77 "The item\n " + item->label().GetUserVisibleName(false) + | 78 "The item\n " + item->label().GetUserVisibleName(false) + |
78 "\nwas already defined."); | 79 "\nwas already defined."); |
79 err.AppendSubErr(Err(record->item()->defined_from(), | 80 err.AppendSubErr(Err(record->item()->defined_from(), |
80 "Previous definition:")); | 81 "Previous definition:")); |
81 g_scheduler->FailWithError(err); | 82 g_scheduler->FailWithError(err); |
82 return; | 83 return; |
83 } | 84 } |
84 | 85 |
85 record->set_item(item.Pass()); | 86 record->set_item(std::move(item)); |
86 | 87 |
87 // Do target-specific dependency setup. This will also schedule dependency | 88 // Do target-specific dependency setup. This will also schedule dependency |
88 // loads for targets that are required. | 89 // loads for targets that are required. |
89 switch (type) { | 90 switch (type) { |
90 case BuilderRecord::ITEM_TARGET: | 91 case BuilderRecord::ITEM_TARGET: |
91 TargetDefined(record, &err); | 92 TargetDefined(record, &err); |
92 break; | 93 break; |
93 case BuilderRecord::ITEM_CONFIG: | 94 case BuilderRecord::ITEM_CONFIG: |
94 ConfigDefined(record, &err); | 95 ConfigDefined(record, &err); |
95 break; | 96 break; |
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
505 std::string ret; | 506 std::string ret; |
506 for (size_t i = 0; i < cycle.size(); i++) { | 507 for (size_t i = 0; i < cycle.size(); i++) { |
507 ret += " " + cycle[i]->label().GetUserVisibleName(false); | 508 ret += " " + cycle[i]->label().GetUserVisibleName(false); |
508 if (i != cycle.size() - 1) | 509 if (i != cycle.size() - 1) |
509 ret += " ->"; | 510 ret += " ->"; |
510 ret += "\n"; | 511 ret += "\n"; |
511 } | 512 } |
512 | 513 |
513 return ret; | 514 return ret; |
514 } | 515 } |
OLD | NEW |