Merge pull request #906 from dart-lang/if-element-comment-split

Don't add unneeded splits on if elements near comments.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e6daef9..3383a07 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,7 @@
 * Add `--verbose` to hide advanced options in `--help` output.
 * Split outer nested control flow elements (#869).
 * Always place a blank line after script tags (#782).
+* Don't add unneeded splits on if elements near comments (#888).
 
 # 1.3.3
 
diff --git a/lib/src/source_visitor.dart b/lib/src/source_visitor.dart
index 0214e98..aa74036 100644
--- a/lib/src/source_visitor.dart
+++ b/lib/src/source_visitor.dart
@@ -1899,7 +1899,7 @@
 
     // Wrap the whole thing in a single rule. If a split happens inside the
     // condition or the then clause, we want the then and else clauses to split.
-    builder.startRule();
+    builder.startLazyRule();
 
     var hasInnerControlFlow = false;
     for (var element in ifElements) {
diff --git a/test/regression/0800/0888.unit b/test/regression/0800/0888.unit
new file mode 100644
index 0000000..98025a8
--- /dev/null
+++ b/test/regression/0800/0888.unit
@@ -0,0 +1,85 @@
+>>>
+main() {
+  final args = [
+    if (_configuration.useBlobs) ...[
+      "--snapshot-kind=app-aot-blobs",
+      "--blobs_container_filename=$tempDir/out.aotsnapshot"
+    ] else if (_configuration.useElf) ...[
+      "--snapshot-kind=app-aot-elf",
+      "--elf=$tempDir/out.aotsnapshot"
+    ] else ...[
+      "--snapshot-kind=app-aot-assembly",
+      "--assembly=$tempDir/out.S"
+    ],
+    if (_isAndroid && _isArm) '--no-sim-use-hardfp',
+    if (_configuration.isMinified) '--obfuscate',
+    if (_configuration.useQemu) '--no-use-integer-division',
+    ..._replaceDartFiles(arguments, tempKernelFile(tempDir)),
+  ];
+
+  final args2 = [
+    if (_configuration.useBlobs) ...[
+      "--snapshot-kind=app-aot-blobs",
+      "--blobs_container_filename=$tempDir/out.aotsnapshot"
+    ] else if (_configuration.useElf) ...[
+      "--snapshot-kind=app-aot-elf",
+      "--elf=$tempDir/out.aotsnapshot"
+    ] else ...[
+      "--snapshot-kind=app-aot-assembly",
+      "--assembly=$tempDir/out.S"
+    ],
+    if (_isAndroid && _isArm)
+      '--no-sim-use-hardfp',
+    if (_configuration.isMinified)
+      '--obfuscate',
+    // The SIMARM precompiler assumes support for integer division, but the
+    // Qemu arm cpus do not support integer division.
+    if (_configuration.useQemu)
+      '--no-use-integer-division',
+    ..._replaceDartFiles(arguments, tempKernelFile(tempDir)),
+  ];
+
+  print(args);
+  print(args2);
+}
+<<<
+main() {
+  final args = [
+    if (_configuration.useBlobs) ...[
+      "--snapshot-kind=app-aot-blobs",
+      "--blobs_container_filename=$tempDir/out.aotsnapshot"
+    ] else if (_configuration.useElf) ...[
+      "--snapshot-kind=app-aot-elf",
+      "--elf=$tempDir/out.aotsnapshot"
+    ] else ...[
+      "--snapshot-kind=app-aot-assembly",
+      "--assembly=$tempDir/out.S"
+    ],
+    if (_isAndroid && _isArm) '--no-sim-use-hardfp',
+    if (_configuration.isMinified) '--obfuscate',
+    if (_configuration.useQemu) '--no-use-integer-division',
+    ..._replaceDartFiles(arguments, tempKernelFile(tempDir)),
+  ];
+
+  final args2 = [
+    if (_configuration.useBlobs) ...[
+      "--snapshot-kind=app-aot-blobs",
+      "--blobs_container_filename=$tempDir/out.aotsnapshot"
+    ] else if (_configuration.useElf) ...[
+      "--snapshot-kind=app-aot-elf",
+      "--elf=$tempDir/out.aotsnapshot"
+    ] else ...[
+      "--snapshot-kind=app-aot-assembly",
+      "--assembly=$tempDir/out.S"
+    ],
+    if (_isAndroid && _isArm) '--no-sim-use-hardfp',
+    if (_configuration.isMinified) '--obfuscate',
+    // The SIMARM precompiler assumes support for integer division, but the
+    // Qemu arm cpus do not support integer division.
+    if (_configuration.useQemu) '--no-use-integer-division',
+    ..._replaceDartFiles(arguments, tempKernelFile(tempDir)),
+  ];
+
+  print(args);
+  print(args2);
+}
\ No newline at end of file