Allow NOSORT to be the last line in a comment in addition to the first. I found it surprising that # Don't sort these because $whatever: # NOSORT ... didn't work and that I had to do # NOSORT # Don't sort these because $whatever: ... Support both forms. Bug: none Change-Id: I72db3fb37e792bd7db31668252b1c280425d7049 Reviewed-on: https://gn-review.googlesource.com/c/3560 Reviewed-by: Petr Hosek <phosek@google.com> Commit-Queue: Petr Hosek <phosek@google.com>
diff --git a/tools/gn/command_format.cc b/tools/gn/command_format.cc index d656dd8..483a24c 100644 --- a/tools/gn/command_format.cc +++ b/tools/gn/command_format.cc
@@ -328,11 +328,15 @@ } void Printer::SortIfSourcesOrDeps(const BinaryOpNode* binop) { - if (binop->comments() && !binop->comments()->before().empty() && - binop->comments()->before()[0].value().as_string() == "# NOSORT") { - // Allow disabling of sort for specific actions that might be - // order-sensitive. - return; + if (const Comments* comments = binop->comments()) { + const std::vector<Token>& before = comments->before(); + if (!before.empty() && + (before.front().value().as_string() == "# NOSORT" || + before.back().value().as_string() == "# NOSORT")) { + // Allow disabling of sort for specific actions that might be + // order-sensitive. + return; + } } const IdentifierNode* ident = binop->left()->AsIdentifier(); const ListNode* list = binop->right()->AsList();
diff --git a/tools/gn/format_test_data/066.gn b/tools/gn/format_test_data/066.gn index c62eb2a..0a79d0c 100644 --- a/tools/gn/format_test_data/066.gn +++ b/tools/gn/format_test_data/066.gn
@@ -14,6 +14,7 @@ ] # NOSORT +# This is NOSORT because reason. sources = [ "z", "z2", @@ -21,6 +22,7 @@ "y.cc", ] +# This is NOSORT because reason: # NOSORT sources += [ "z",
diff --git a/tools/gn/format_test_data/066.golden b/tools/gn/format_test_data/066.golden index 45467b8..9b7bb5c 100644 --- a/tools/gn/format_test_data/066.golden +++ b/tools/gn/format_test_data/066.golden
@@ -12,6 +12,7 @@ sources += [ "a" ] # NOSORT +# This is NOSORT because reason. sources = [ "z", "z2", @@ -19,6 +20,7 @@ "y.cc", ] +# This is NOSORT because reason: # NOSORT sources += [ "z",