| Index: tools/gn/command_format.cc
|
| diff --git a/tools/gn/command_format.cc b/tools/gn/command_format.cc
|
| index 5eff6017f3f9c2f4a4574e852e7e0ca0373d2d0c..6c199d3cca80c6eabeafb2971c4612a69fb0de55 100644
|
| --- a/tools/gn/command_format.cc
|
| +++ b/tools/gn/command_format.cc
|
| @@ -128,8 +128,11 @@ class Printer {
|
| // Flag assignments to sources, deps, etc. to make their RHSs multiline.
|
| void AnnotatePreferredMultilineAssignment(const BinaryOpNode* binop);
|
|
|
| - // Alphabetically a list on the RHS if the LHS is 'sources'.
|
| - void SortIfSources(const BinaryOpNode* binop);
|
| + // Sort a list on the RHS if the LHS is 'sources', 'deps' or 'public_deps'.
|
| + // The 'sources' are sorted alphabetically while the 'deps' and 'public_deps'
|
| + // are sorted putting first the relative targets and then the global ones
|
| + // (both sorted alphabetically).
|
| + void SortIfSourcesOrDeps(const BinaryOpNode* binop);
|
|
|
| // Heuristics to decide if there should be a blank line added between two
|
| // items. For various "small" items, it doesn't look nice if there's too much
|
| @@ -307,20 +310,20 @@ void Printer::AnnotatePreferredMultilineAssignment(const BinaryOpNode* binop) {
|
| }
|
| }
|
|
|
| -void Printer::SortIfSources(const BinaryOpNode* binop) {
|
| +void Printer::SortIfSourcesOrDeps(const BinaryOpNode* binop) {
|
| const IdentifierNode* ident = binop->left()->AsIdentifier();
|
| const ListNode* list = binop->right()->AsList();
|
| - // TODO(scottmg): Sort more than 'sources'?
|
| if ((binop->op().value() == "=" || binop->op().value() == "+=" ||
|
| binop->op().value() == "-=") &&
|
| ident && list) {
|
| const base::StringPiece lhs = ident->value().value();
|
| if (lhs == "sources")
|
| const_cast<ListNode*>(list)->SortAsStringsList();
|
| + else if (lhs == "deps" || lhs == "public_deps")
|
| + const_cast<ListNode*>(list)->SortAsDepsList();
|
| }
|
| }
|
|
|
| -
|
| bool Printer::ShouldAddBlankLineInBetween(const ParseNode* a,
|
| const ParseNode* b) {
|
| LocationRange a_range = a->GetRange();
|
| @@ -458,7 +461,7 @@ int Printer::Expr(const ParseNode* root,
|
| CHECK(precedence_.find(binop->op().value()) != precedence_.end());
|
| AnnotatePreferredMultilineAssignment(binop);
|
|
|
| - SortIfSources(binop);
|
| + SortIfSourcesOrDeps(binop);
|
|
|
| Precedence prec = precedence_[binop->op().value()];
|
|
|
|
|