From 41098a06b58a147b0602fdbc5dc7304e0ad19930 Mon Sep 17 00:00:00 2001 From: Lucas Duailibe Date: Fri, 2 Mar 2018 11:28:27 -0300 Subject: [PATCH] Prevent "over-indenting" class properties values (#4085) --- src/language-js/printer-estree.js | 3 ++ .../__snapshots__/jsfmt.spec.js.snap | 4 +- .../classes/__snapshots__/jsfmt.spec.js.snap | 19 ++++++++++ tests/classes/property.js | 7 ++++ .../__snapshots__/jsfmt.spec.js.snap | 38 +++++++++++++++++++ tests/classes_private_fields/with_comments.js | 7 ++++ .../abstract/__snapshots__/jsfmt.spec.js.snap | 19 ++++++++++ .../abstract/abstractPropertiesWithBreaks.ts | 7 ++++ 8 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 tests/classes/property.js create mode 100644 tests/classes_private_fields/with_comments.js create mode 100644 tests/typescript/custom/abstract/abstractPropertiesWithBreaks.ts diff --git a/src/language-js/printer-estree.js b/src/language-js/printer-estree.js index cc8aaca1..ffdbd025 100644 --- a/src/language-js/printer-estree.js +++ b/src/language-js/printer-estree.js @@ -436,6 +436,9 @@ function printPathNoParens(path, options, print, args) { const shouldIndentIfInlining = parent.type === "AssignmentExpression" || parent.type === "VariableDeclarator" || + parent.type === "ClassProperty" || + parent.type === "TSAbstractClassProperty" || + parent.type === "ClassPrivateProperty" || parent.type === "ObjectProperty" || parent.type === "Property"; diff --git a/tests/class_comment/__snapshots__/jsfmt.spec.js.snap b/tests/class_comment/__snapshots__/jsfmt.spec.js.snap index f23ec50f..ea348067 100644 --- a/tests/class_comment/__snapshots__/jsfmt.spec.js.snap +++ b/tests/class_comment/__snapshots__/jsfmt.spec.js.snap @@ -91,8 +91,8 @@ class X { TEMPLATE = // tab index is needed so we can focus, which is needed for keyboard events '
' + - '
' + - "
"; + '
' + + ""; } export class SnapshotLogger { diff --git a/tests/classes/__snapshots__/jsfmt.spec.js.snap b/tests/classes/__snapshots__/jsfmt.spec.js.snap index 30f3eff6..9f419ee0 100644 --- a/tests/classes/__snapshots__/jsfmt.spec.js.snap +++ b/tests/classes/__snapshots__/jsfmt.spec.js.snap @@ -161,6 +161,25 @@ class C { `; +exports[`property.js 1`] = ` +class A { + foobar = + // comment to break + 1 + + // comment to break again + 2; +} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +class A { + foobar = + // comment to break + 1 + + // comment to break again + 2; +} + +`; + exports[`ternary.js 1`] = ` if (1) (class {}) ? 1 : 2; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/tests/classes/property.js b/tests/classes/property.js new file mode 100644 index 00000000..94c428b5 --- /dev/null +++ b/tests/classes/property.js @@ -0,0 +1,7 @@ +class A { + foobar = + // comment to break + 1 + + // comment to break again + 2; +} diff --git a/tests/classes_private_fields/__snapshots__/jsfmt.spec.js.snap b/tests/classes_private_fields/__snapshots__/jsfmt.spec.js.snap index d97244f5..14fd5c91 100644 --- a/tests/classes_private_fields/__snapshots__/jsfmt.spec.js.snap +++ b/tests/classes_private_fields/__snapshots__/jsfmt.spec.js.snap @@ -173,3 +173,41 @@ class Point { } `; + +exports[`with_comments.js 1`] = ` +class A { + #foobar = + // comment to break + 1 + + // comment to break again + 2; +} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +class A { + #foobar = + // comment to break + 1 + + // comment to break again + 2; +} + +`; + +exports[`with_comments.js 2`] = ` +class A { + #foobar = + // comment to break + 1 + + // comment to break again + 2; +} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +class A { + #foobar = + // comment to break + 1 + + // comment to break again + 2 +} + +`; diff --git a/tests/classes_private_fields/with_comments.js b/tests/classes_private_fields/with_comments.js new file mode 100644 index 00000000..31549559 --- /dev/null +++ b/tests/classes_private_fields/with_comments.js @@ -0,0 +1,7 @@ +class A { + #foobar = + // comment to break + 1 + + // comment to break again + 2; +} diff --git a/tests/typescript/custom/abstract/__snapshots__/jsfmt.spec.js.snap b/tests/typescript/custom/abstract/__snapshots__/jsfmt.spec.js.snap index 8b7d1e6a..4bd46988 100644 --- a/tests/typescript/custom/abstract/__snapshots__/jsfmt.spec.js.snap +++ b/tests/typescript/custom/abstract/__snapshots__/jsfmt.spec.js.snap @@ -61,3 +61,22 @@ abstract class Foo { } `; + +exports[`abstractPropertiesWithBreaks.ts 1`] = ` +abstract class Foo { + abstract private foobar = + // comment to break + 1 + + // another comment to break + 2; +} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +abstract class Foo { + private abstract foobar = + // comment to break + 1 + + // another comment to break + 2; +} + +`; diff --git a/tests/typescript/custom/abstract/abstractPropertiesWithBreaks.ts b/tests/typescript/custom/abstract/abstractPropertiesWithBreaks.ts new file mode 100644 index 00000000..d238f528 --- /dev/null +++ b/tests/typescript/custom/abstract/abstractPropertiesWithBreaks.ts @@ -0,0 +1,7 @@ +abstract class Foo { + abstract private foobar = + // comment to break + 1 + + // another comment to break + 2; +}