summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorscottmg <scottmg@chromium.org>2014-11-07 14:54:54 -0800
committerCommit bot <commit-bot@chromium.org>2014-11-07 22:55:15 +0000
commit89e03bdc047954200ee3a80dff220dcb674042f3 (patch)
tree0a28ba22a609781adf11ff0592df4d40ddf6501f /tools
parentf944c32ded13185e4d45468623920d7e51a35aba (diff)
downloadchromium_src-89e03bdc047954200ee3a80dff220dcb674042f3.zip
chromium_src-89e03bdc047954200ee3a80dff220dcb674042f3.tar.gz
chromium_src-89e03bdc047954200ee3a80dff220dcb674042f3.tar.bz2
gn format: use input line breaks rather than attempting rule-based line breaks
I couldn't come up with anything that worked in 100% of cases, so switch to mostly maintaining line breaks from input file instead. R=brettw@chromium.org BUG=348474 Review URL: https://codereview.chromium.org/713463003 Cr-Commit-Position: refs/heads/master@{#303313}
Diffstat (limited to 'tools')
-rw-r--r--tools/gn/command_format.cc15
-rw-r--r--tools/gn/command_format_unittest.cc3
-rw-r--r--tools/gn/format_test_data/003.golden1
-rw-r--r--tools/gn/format_test_data/017.golden2
-rw-r--r--tools/gn/format_test_data/021.golden3
-rw-r--r--tools/gn/format_test_data/028.golden2
-rw-r--r--tools/gn/format_test_data/036.golden9
-rw-r--r--tools/gn/format_test_data/041.golden12
8 files changed, 35 insertions, 12 deletions
diff --git a/tools/gn/command_format.cc b/tools/gn/command_format.cc
index a72e2ec3..890cf2c 100644
--- a/tools/gn/command_format.cc
+++ b/tools/gn/command_format.cc
@@ -242,16 +242,11 @@ bool Printer::IsAssignment(const ParseNode* node) {
bool Printer::ShouldAddBlankLineInBetween(const ParseNode* a,
const ParseNode* b) {
- if ((IsAssignment(a) || a->AsFunctionCall()) &&
- (!a->comments() || a->comments()->after().size() == 0) &&
- (IsAssignment(b) || b->AsFunctionCall()) &&
- (!b->comments() || b->comments()->before().size() == 0)) {
- Metrics first = GetLengthOfExpr(a, kPrecedenceLowest);
- Metrics second = GetLengthOfExpr(b, kPrecedenceLowest);
- if (!first.multiline || !second.multiline)
- return false;
- }
- return true;
+ LocationRange a_range = a->GetRange();
+ LocationRange b_range = b->GetRange();
+ // If they're already separated by 1 or more lines, then we want to keep a
+ // blank line.
+ return b_range.begin().line_number() > a_range.end().line_number() + 1;
}
int Printer::CurrentColumn() {
diff --git a/tools/gn/command_format_unittest.cc b/tools/gn/command_format_unittest.cc
index 31bc4be..6458179 100644
--- a/tools/gn/command_format_unittest.cc
+++ b/tools/gn/command_format_unittest.cc
@@ -70,8 +70,9 @@ FORMAT_TEST(031)
FORMAT_TEST(033)
// TODO(scottmg): args+rebase_path unnecessarily split: FORMAT_TEST(034)
FORMAT_TEST(035)
-// TODO(scottmg): Line breaks between early statements: FORMAT_TEST(036)
+FORMAT_TEST(036)
// TODO(scottmg): Ugly line breaking: FORMAT_TEST(037)
FORMAT_TEST(038)
// TODO(scottmg): Bad break, exceeding 80 col: FORMAT_TEST(039)
// TODO(scottmg): Bad break, exceeding 80 col: FORMAT_TEST(040)
+FORMAT_TEST(041)
diff --git a/tools/gn/format_test_data/003.golden b/tools/gn/format_test_data/003.golden
index 5084c0f..a5bd5d3 100644
--- a/tools/gn/format_test_data/003.golden
+++ b/tools/gn/format_test_data/003.golden
@@ -3,5 +3,6 @@ executable("test") {
"stuff.cc",
"things.cc",
]
+
deps = [ "//base" ]
}
diff --git a/tools/gn/format_test_data/017.golden b/tools/gn/format_test_data/017.golden
index 4e84a50..d9d7ad9 100644
--- a/tools/gn/format_test_data/017.golden
+++ b/tools/gn/format_test_data/017.golden
@@ -3,10 +3,10 @@ executable("win" # Suffix comment on arg.
# And a strangely positioned line comment for some reason
) {
defines = [] # Defines comment, suffix at end position.
+
deps = [
# Deps comment, should be forced multiline.
]
-
sources = [
"a.cc",
# End of single sources comment, should be forced multiline.
diff --git a/tools/gn/format_test_data/021.golden b/tools/gn/format_test_data/021.golden
index 3919f49..40d8c78 100644
--- a/tools/gn/format_test_data/021.golden
+++ b/tools/gn/format_test_data/021.golden
@@ -1,9 +1,12 @@
f(aaaaaaaaaaaaaaaaaaa)
+
f(aaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaa)
# Exactly 80 wide.
f(aaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaa, aaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaa, aaaaa)
+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)
+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)
diff --git a/tools/gn/format_test_data/028.golden b/tools/gn/format_test_data/028.golden
index d22d4a2..a1d54c5 100644
--- a/tools/gn/format_test_data/028.golden
+++ b/tools/gn/format_test_data/028.golden
@@ -1,5 +1,7 @@
# Don't separate these.
import("wee.gni")
import("waa.gni")
+
import("woo.gni")
+
import("blah.gni")
diff --git a/tools/gn/format_test_data/036.golden b/tools/gn/format_test_data/036.golden
new file mode 100644
index 0000000..5a5eca84
--- /dev/null
+++ b/tools/gn/format_test_data/036.golden
@@ -0,0 +1,9 @@
+import("a")
+import("b")
+
+assert(x)
+assert(y)
+assert(z)
+
+source_set("stuff") {
+}
diff --git a/tools/gn/format_test_data/041.golden b/tools/gn/format_test_data/041.golden
new file mode 100644
index 0000000..fa39b49
--- /dev/null
+++ b/tools/gn/format_test_data/041.golden
@@ -0,0 +1,12 @@
+if (true) {
+ a = [ "wee" ]
+
+ b = [
+ "x",
+ "y",
+ "z",
+ ]
+ c = [ "x" ]
+
+ d = [ "x" ]
+}