message: Rewrite ImportSpecifier printer case to wrap lines automatically.
diff: @@ -505,7 +505,7 @@ function genericPrintNoParens(path, options, print) {
  case "Import":
  return fromString("import", options);
  - case "ImportDeclaration":
  + case "ImportDeclaration": {
  parts.push("import ");
  if (n.importKind && n.importKind !== "value") {
  @@ -515,36 +515,48 @@ function genericPrintNoParens(path, options, print) {
  if (n.specifiers &&
  n.specifiers.length > 0) {
  - var foundImportSpecifier = false;
  + const unbracedSpecifiers = [];
  + const bracedSpecifiers = [];
  path.each(function (specifierPath) {
  - var i = specifierPath.getName();
  + const spec = specifierPath.getValue();
  + if (spec.type === "ImportSpecifier") {
  + bracedSpecifiers.push(print(specifierPath));
  + } else if (spec.type === "ImportDefaultSpecifier" ||
  + spec.type === "ImportNamespaceSpecifier") {
  + unbracedSpecifiers.push(print(specifierPath));
  + }
  + }, "specifiers");
  +
  + unbracedSpecifiers.forEach((lines, i) => {
  if (i > 0) {
  parts.push(", ");
  }
  + parts.push(lines);
  + });
  - var value = specifierPath.getValue();
  -
  - if (namedTypes.ImportDefaultSpecifier.check(value) ||
  - namedTypes.ImportNamespaceSpecifier.check(value)) {
  - assert.strictEqual(foundImportSpecifier, false);
  - } else {
  - namedTypes.ImportSpecifier.assert(value);
  - if (!foundImportSpecifier) {
  - foundImportSpecifier = true;
  - parts.push(
  - options.objectCurlySpacing ? "{ " : "{"
  - );
  - }
  + if (bracedSpecifiers.length > 0) {
  + let lines = fromString(", ").join(bracedSpecifiers);
  + if (lines.getLineLength(1) > options.wrapColumn) {
  + lines = concat([
  + fromString(",\n").join(
  + bracedSpecifiers
  + ).indent(options.tabWidth),
  + ","
  + ]);
  }
  - parts.push(print(specifierPath));
  - }, "specifiers");
  + if (unbracedSpecifiers.length > 0) {
  + parts.push(", ");
  + }
  - if (foundImportSpecifier) {
  - parts.push(
  - options.objectCurlySpacing ? " }" : "}"
  - );
  + if (lines.length > 1) {
  + parts.push("{\n", lines, "\n}");
  + } else if (options.objectCurlySpacing) {
  + parts.push("{ ", lines, " }");
  + } else {
  + parts.push("{", lines, "}");
  + }
  }
  parts.push(" from ");
  @@ -553,6 +565,7 @@ function genericPrintNoParens(path, options, print) {
  parts.push(path.call(print, "source"), ";");
  return concat(parts);
  + }
  case "BlockStatement":
  var naked = path.call(function(bodyPath) {
  