40 columns                              |
>>> do not indent adjacent strings if other args are not strings
function(
    notString,
    "adjacent"
    "string");
<<<
function(
  notString,
  "adjacent"
  "string",
);
>>> do not indent adjacent strings if other args are not strings
function(
    notString,
    "adjacent"
    "string",);
<<<
function(
  notString,
  "adjacent"
  "string",
);
>>> do indent adjacent strings if other arg is string
function(
    "string",
    notString,
    "adjacent"
    "string");
<<<
function(
  "string",
  notString,
  "adjacent"
      "string",
);
>>> do indent adjacent strings if other arg is string
function(
    "string",
    notString,
    "adjacent"
    "string",);
<<<
function(
  "string",
  notString,
  "adjacent"
      "string",
);
>>> do indent adjacent strings if other arg is string interpolation
function(
    "${str}${ing}",
    notString,
    "adjacent"
    "string");
<<<
function(
  "${str}${ing}",
  notString,
  "adjacent"
      "string",
);
>>> do indent adjacent strings if other arg is adjacent string
function(
    "adjacent"
    "string",
    notString,
    "adjacent"
    "string");
<<<
function(
  "adjacent"
      "string",
  notString,
  "adjacent"
      "string",
);
>>> always indent adjacent strings in list
var list = [
  "adjacent"
  "string",
  "another"
  "adjacent"
  "string"
];
<<<
var list = [
  "adjacent"
      "string",
  "another"
      "adjacent"
      "string",
];
>>> always indent adjacent strings in map key
var map = {
  "adjacent"
  "string": value,
  "another"
  "adjacent"
  "string": value
};
<<<
var map = {
  "adjacent"
      "string": value,
  "another"
      "adjacent"
      "string": value,
};
>>> always indent adjacent strings in map value
var map = {
  key: "adjacent"
  "string",
  key: "another"
  "adjacent"
  "string"
};
<<<
var map = {
  key: "adjacent"
      "string",
  key: "another"
      "adjacent"
      "string",
};
>>> always indent adjacent strings in set
var set = {
  "adjacent"
  "string",
  "another"
  "adjacent"
  "string"
};
<<<
var set = {
  "adjacent"
      "string",
  "another"
      "adjacent"
      "string",
};
>>> don't indent in => body
main() => "adjacent"
"string"
"another";
<<<
main() => "adjacent"
    "string"
    "another";
>>> don't indent in long => body
main() => "very very very very long adjacent"
"string"
"another";
<<<
main() =>
    "very very very very long adjacent"
    "string"
    "another";
>>> don't indent in => lambda
function(
  (parameter) => "string"
  "adjacent",
  (parameter) => "long long long long string"
  "adjacent",
  another);
<<<
function(
  (parameter) => "string"
      "adjacent",
  (parameter) =>
      "long long long long string"
      "adjacent",
  another,
);
>>> indent in then branch of ?:
var string = c ? "adjacent"
"string" : "other";
<<<
var string = c
    ? "adjacent"
        "string"
    : "other";
>>> indent in else branch of ?:
var string = c ? "other" : "adjacent"
"string";
<<<
var string = c
    ? "other"
    : "adjacent"
        "string";
>>> don't indent in initializer
var longVariableName = "very long adjacent"
"string";
<<<
var longVariableName =
    "very long adjacent"
    "string";
>>> don't indent assignment in statement position
long.receiver.expression = "very long adjacent"
"string";
<<<
long.receiver.expression =
    "very long adjacent"
    "string";
>>> string interpolation counts as a string
function(
    "adjacent"
    "string",
    "${str}${ing}");
<<<
function(
  "adjacent"
      "string",
  "${str}${ing}",
);
>>> another adjacent string counts as a string
function(
    "adjacent"
    "string",
    "another"
    "adjacent");
<<<
function(
  "adjacent"
      "string",
  "another"
      "adjacent",
);
>>> do not indent adjacent strings in assert if other args are not strings
assert(
    condition,
    "adjacent"
    "string");
<<<
assert(
  condition,
  "adjacent"
  "string",
);
>>> don't need extra indentation inside named arguments
function(named: "adjacent"
"string",
another: "adjacent"
"string"
"more");
<<<
function(
  named: "adjacent"
      "string",
  another: "adjacent"
      "string"
      "more",
);
>>> don't need extra indentation inside named arguments
function(named: "adjacent"
"string",
another: "adjacent"
"string"
"more",);
<<<
function(
  named: "adjacent"
      "string",
  another: "adjacent"
      "string"
      "more",
);
>>> inside interpolation
var x = '${"a" "b"}';
<<<
var x = '${"a" "b"}';