40 columns                              |
>>> empty list
[];
<<<
[];
>>> exactly 40 characters
[first, second, third, fourth, seventh];
<<<
[first, second, third, fourth, seventh];
>>>
[first, second, third, fourth, fifth, sixth];
<<<
[
  first,
  second,
  third,
  fourth,
  fifth,
  sixth
];
>>> splits outer lists even if they fit
[[first], [], [
    second,[third], fourth]  ];
<<<
[
  [first],
  [],
  [
    second,
    [third],
    fourth
  ]
];
>>> split indirect outer
[function([inner])];
<<<
[
  function([inner])
];
>>> empty literal does not force outer split
[[], {}, () {}];
<<<
[[], {}, () {}];
>>> nested split list
[first, [second, third, fourth], fifth, [sixth, seventh, eighth, nine, tenth,
    eleventh]];
<<<
[
  first,
  [second, third, fourth],
  fifth,
  [
    sixth,
    seventh,
    eighth,
    nine,
    tenth,
    eleventh
  ]
];
>>> force multi-line because of contained block
[first, () {"fn";},third,fourth];
<<<
[
  first,
  () {
    "fn";
  },
  third,
  fourth
];
>>> spaces between items
[1,2,3,4];
<<<
[1, 2, 3, 4];
>>> trailing comma forces split
[1 , ];
<<<
[
  1,
];
>>> trailing comma multiline
[first, second, third, fourth, fifth, sixth  , ];
<<<
[
  first,
  second,
  third,
  fourth,
  fifth,
  sixth,
];
>>> nested lists are forced to split
[[[[[argument, argument, argument, argument]]]]];
<<<
[
  [
    [
      [
        [
          argument,
          argument,
          argument,
          argument
        ]
      ]
    ]
  ]
];
>>> preserve newlines in lists containing a line comment
[
  // yeah
  a,b,c,
  d,e,f,
];
<<<
[
  // yeah
  a, b, c,
  d, e, f,
];
>>> wrap between elements even when newlines are preserved
[
  // yes
  longElement,longElement,longElement,longElement,
  longElement,longElement,longElement,longElement,longElement,longElement,
];
<<<
[
  // yes
  longElement, longElement, longElement,
  longElement,
  longElement, longElement, longElement,
  longElement, longElement, longElement,
];
>>> ignore line comment after the "]"
[
  a,b,c,
  d
] // comment
;
<<<
[a, b, c, d] // comment
    ;
>>> preserves one blank line between elements
[


  element,



  // comment
  element,



  element


];
<<<
[
  element,

  // comment
  element,

  element
];
>>> a spread list literal splits an outer list even if it fits
var list = [1, ...[2, 3], 4];
<<<
var list = [
  1,
  ...[2, 3],
  4
];
>>> spread empty list does not force outer split
var list = [1, ...[], 4];
<<<
var list = [1, ...[], 4];
>>> split inside spread expression
var list = [1, ...some + very + long + spread + expression, 3];
<<<
var list = [
  1,
  ...some +
      very +
      long +
      spread +
      expression,
  3
];
>>> spread cascade
var list = [1, ...thing..cascade()..another(), 4];
<<<
var list = [
  1,
  ...thing
    ..cascade()
    ..another(),
  4
];
>>> spread lambda
var list = [1, ...() { body; }, 4];
<<<
var list = [
  1,
  ...() {
    body;
  },
  4
];
>>> spread immediately invoked lambda
var list = [1, ...() sync* { yield thing; }(), 4];
<<<
var list = [
  1,
  ...() sync* {
    yield thing;
  }(),
  4
];