Put conditional operators on the left.

R=pquitslund@google.com

Review URL: https://chromiumcodereview.appspot.com//846133002
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a893df7..2723445 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.1.2
+
+* Move split conditional operators to the beginning of the next line.
+
 # 0.1.1
 
 * Support formatting enums (#120).
diff --git a/lib/src/source_visitor.dart b/lib/src/source_visitor.dart
index 93fc466..c699bec 100644
--- a/lib/src/source_visitor.dart
+++ b/lib/src/source_visitor.dart
@@ -371,19 +371,21 @@
   visitConditionalExpression(ConditionalExpression node) {
     _writer.nestExpression();
     visit(node.condition);
-    space();
 
     _writer.startSpan();
-    token(node.question);
 
     // If we split after one clause in a conditional, always split after both.
     _writer.startMultisplit();
     _writer.multisplit(nest: true, space: true);
+    token(node.question);
+    space();
+
     visit(node.thenExpression);
 
-    space();
-    token(node.colon);
     _writer.multisplit(nest: true, space: true);
+    token(node.colon);
+    space();
+
     visit(node.elseExpression);
 
     _writer.endMultisplit();
diff --git a/pubspec.yaml b/pubspec.yaml
index f26c7f7..1c89811 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: dart_style
-version: 0.1.1
+version: 0.1.2
 author: Dart Team <misc@dartlang.org>
 description: Opinionated, automatic Dart source code formatter.
 homepage: https://github.com/dart-lang/dart_style
diff --git a/test/regression/112.stmt b/test/regression/112.stmt
index 0f8b7ce..3446a9f 100644
--- a/test/regression/112.stmt
+++ b/test/regression/112.stmt
@@ -5,9 +5,9 @@
             something.field.where((i) => i is SomeClassGoesHere),
             key: (i) => i.someField.name);
 <<<
-    var initializers = something == null ?
-        {} :
-        new Map.fromIterable(
+    var initializers = something == null
+        ? {}
+        : new Map.fromIterable(
             something.field.where((i) => i is SomeClassGoesHere),
             key: (i) => i.someField.name);
 >>> (indent 4)
@@ -15,7 +15,7 @@
             outputDir, uri, results.libraries, results.rules, formatOutput) :
         new JSGenerator(outputDir, uri, results.libraries, results.rules);
 <<<
-    var cg = outputDart ?
-        new DartGenerator(
-            outputDir, uri, results.libraries, results.rules, formatOutput) :
-        new JSGenerator(outputDir, uri, results.libraries, results.rules);
\ No newline at end of file
+    var cg = outputDart
+        ? new DartGenerator(
+            outputDir, uri, results.libraries, results.rules, formatOutput)
+        : new JSGenerator(outputDir, uri, results.libraries, results.rules);
\ No newline at end of file
diff --git a/test/regression/115.stmt b/test/regression/115.stmt
index 8843ed0..8afac52 100644
--- a/test/regression/115.stmt
+++ b/test/regression/115.stmt
@@ -24,6 +24,6 @@
         // Indexing send-sets have an argument for the index.
         (selector.isIndexSet ? 1 : 0) +
             // Non-increment send-sets have one more argument.
-            (ast.Operator.INCREMENT_OPERATORS.contains(op.source) ?
-                0 :
-                1) == node.argumentCount());
\ No newline at end of file
+            (ast.Operator.INCREMENT_OPERATORS.contains(op.source)
+                ? 0
+                : 1) == node.argumentCount());
\ No newline at end of file
diff --git a/test/regression/122.unit b/test/regression/122.unit
index b4a0794..376f0ef 100644
--- a/test/regression/122.unit
+++ b/test/regression/122.unit
@@ -5,11 +5,11 @@
     defaults.xsrfCookieName] :
     null;
 <<<
-var xsrfValue = _urlIsSameOrigin(url) ?
-    _cookies[xsrfCookieName != null ?
-        xsrfCookieName :
-        defaults.xsrfCookieName] :
-    null;
+var xsrfValue = _urlIsSameOrigin(url)
+    ? _cookies[xsrfCookieName != null
+        ? xsrfCookieName
+        : defaults.xsrfCookieName]
+    : null;
 >>>
 class _Streams {
   _Streams(this._scope, this._exceptionHandler, _Streams inheritStreams)
@@ -20,7 +20,7 @@
 <<<
 class _Streams {
   _Streams(this._scope, this._exceptionHandler, _Streams inheritStreams)
-      : _typeCounts = inheritStreams == null ?
-          new HashMap<String, int>() :
-          new HashMap.from(inheritStreams._typeCounts);
+      : _typeCounts = inheritStreams == null
+          ? new HashMap<String, int>()
+          : new HashMap.from(inheritStreams._typeCounts);
 }
\ No newline at end of file
diff --git a/test/regression/44.stmt b/test/regression/44.stmt
index ad582a9..9532288 100644
--- a/test/regression/44.stmt
+++ b/test/regression/44.stmt
@@ -55,7 +55,7 @@
 }
 <<<
 void main() {
-  var xxxxxxxYyyyyyyy = aaaabbb ?
-      CCCCCCCCCCCC.mmmmmmmmmmmmmmmmmm1(arg00000000000) :
-      CCCCCCCCCCCC.mmmmmmmmmmmmmmmmmm(arg1111111111111);
+  var xxxxxxxYyyyyyyy = aaaabbb
+      ? CCCCCCCCCCCC.mmmmmmmmmmmmmmmmmm1(arg00000000000)
+      : CCCCCCCCCCCC.mmmmmmmmmmmmmmmmmm(arg1111111111111);
 }
\ No newline at end of file
diff --git a/test/regression/45.stmt b/test/regression/45.stmt
index 071771b..de743a8 100644
--- a/test/regression/45.stmt
+++ b/test/regression/45.stmt
@@ -5,7 +5,7 @@
 }
 <<<
 foo() {
-  if (xxxxxxxxxxxxxxxx || xxxxxxxxxxxxxxxxxxxxx) return xxxxxxxxxxxxxx ?
-      xxxxxxxxxxxxxxxxxxxx :
-      xxxxxxxxxxxxxxxxxxxxxxxxxx;
+  if (xxxxxxxxxxxxxxxx || xxxxxxxxxxxxxxxxxxxxx) return xxxxxxxxxxxxxx
+      ? xxxxxxxxxxxxxxxxxxxx
+      : xxxxxxxxxxxxxxxxxxxxxxxxxx;
 }
\ No newline at end of file
diff --git a/test/regression/80.unit b/test/regression/80.unit
index 0cafb9c..39199d8 100644
--- a/test/regression/80.unit
+++ b/test/regression/80.unit
@@ -40,32 +40,34 @@
 <<<
 void main(List argv) {
   // This is ok (it moves the ? and : to the ends of the previous lines)
-  var cg = outputDart ?
-      new A(outputDir, uri, results.libraries, results.infoMap, results.rules,
-          formatOutput) :
-      new B(outputDir, uri, results.libraries, results.infoMap, results.rules);
+  var cg = outputDart
+      ? new A(outputDir, uri, results.libraries, results.infoMap, results.rules,
+          formatOutput)
+      : new B(
+          outputDir, uri, results.libraries, results.infoMap, results.rules);
 
   // This gets rewritten to something much harder to read
   //  var cg = outputDart ?
   //  new ALongerClass(outputDir, uri, results.libraries, results.infoMap,
   //      results.rules, formatOutput) : new BLongerClass(
   //      outputDir, uri, results.libraries, results.infoMap, results.rules);
-  var cg = outputDart ?
-      new ALongerClass(outputDir, uri, results.libraries, results.infoMap,
-          results.rules, formatOutput) :
-      new BLongerClass(
+  var cg = outputDart
+      ? new ALongerClass(outputDir, uri, results.libraries, results.infoMap,
+          results.rules, formatOutput)
+      : new BLongerClass(
           outputDir, uri, results.libraries, results.infoMap, results.rules);
 
   // OK, left unchanged
-  var cg = outputDart ?
-      new A(outputDir, uri, results.libraries, results.infoMap, results.rules,
-          formatOutput) :
-      new B(outputDir, uri, results.libraries, results.infoMap, results.rules);
+  var cg = outputDart
+      ? new A(outputDir, uri, results.libraries, results.infoMap, results.rules,
+          formatOutput)
+      : new B(
+          outputDir, uri, results.libraries, results.infoMap, results.rules);
 
   // Bad, as above
-  var cg = outputDart ?
-      new ALongerClass(outputDir, uri, results.libraries, results.infoMap,
-          results.rules, formatOutput) :
-      new BLongerClass(
+  var cg = outputDart
+      ? new ALongerClass(outputDir, uri, results.libraries, results.infoMap,
+          results.rules, formatOutput)
+      : new BLongerClass(
           outputDir, uri, results.libraries, results.infoMap, results.rules);
 }
\ No newline at end of file
diff --git a/test/splitting/expressions.stmt b/test/splitting/expressions.stmt
index 5564020..ed1f452 100644
--- a/test/splitting/expressions.stmt
+++ b/test/splitting/expressions.stmt
@@ -33,15 +33,15 @@
 >>> split conditional because then doesn't fit
 var kind = element != null ? longArgument : arg;
 <<<
-var kind = element != null ?
-    longArgument :
-    arg;
+var kind = element != null
+    ? longArgument
+    : arg;
 >>> split conditional because else doesn't fit
 var kind = element != null ? argument : secondArgumentThatIsReallyLong;
 <<<
-var kind = element != null ?
-    argument :
-    secondArgumentThatIsReallyLong;
+var kind = element != null
+    ? argument
+    : secondArgumentThatIsReallyLong;
 >>> unsplit operator chains before and after block
 first + second + () {body;} + third + fourth;
 <<<
@@ -97,10 +97,10 @@
 >>> conditional operands are nested
 identifier ? identifier ? someParticularlyLongOperand : someParticularlyLongOperand : identifier ? someParticularlyLongOperand : someParticularlyLongOperand;
 <<<
-identifier ?
-    identifier ?
-        someParticularlyLongOperand :
-        someParticularlyLongOperand :
-    identifier ?
-        someParticularlyLongOperand :
-        someParticularlyLongOperand;
\ No newline at end of file
+identifier
+    ? identifier
+        ? someParticularlyLongOperand
+        : someParticularlyLongOperand
+    : identifier
+        ? someParticularlyLongOperand
+        : someParticularlyLongOperand;
\ No newline at end of file