diff --git a/src/language-js/print/statement.js b/src/language-js/print/statement.js index 08165848d8d0..1842ead5e1f4 100644 --- a/src/language-js/print/statement.js +++ b/src/language-js/print/statement.js @@ -176,8 +176,10 @@ const isClassProperty = ({ type }) => * @returns {boolean} */ function shouldPrintSemicolonAfterClassProperty(node, nextNode) { - const { name } = node.key; + const { type, name } = node.key; if ( + !node.computed && + type === "Identifier" && (name === "static" || name === "get" || name === "set" || diff --git a/tests/format/js/classes/keyword-property/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/classes/keyword-property/__snapshots__/jsfmt.spec.js.snap index 0c96b7a25cec..517b02b76d89 100644 --- a/tests/format/js/classes/keyword-property/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/js/classes/keyword-property/__snapshots__/jsfmt.spec.js.snap @@ -61,6 +61,67 @@ class B { ================================================================================ `; +exports[`computed.js - {"semi":false} format 1`] = ` +====================================options===================================== +parsers: ["babel", "flow", "typescript"] +printWidth: 80 +semi: false + | printWidth +=====================================input====================================== +class B { + [get]; + foo() {} +} + +class C { + [set]; + foo(v) {} +} + +=====================================output===================================== +class B { + [get] + foo() {} +} + +class C { + [set] + foo(v) {} +} + +================================================================================ +`; + +exports[`computed.js format 1`] = ` +====================================options===================================== +parsers: ["babel", "flow", "typescript"] +printWidth: 80 + | printWidth +=====================================input====================================== +class B { + [get]; + foo() {} +} + +class C { + [set]; + foo(v) {} +} + +=====================================output===================================== +class B { + [get]; + foo() {} +} + +class C { + [set]; + foo(v) {} +} + +================================================================================ +`; + exports[`get.js - {"semi":false} format 1`] = ` ====================================options===================================== parsers: ["babel", "flow", "typescript"] @@ -122,6 +183,87 @@ class B { ================================================================================ `; +exports[`private.js - {"semi":false} format 1`] = ` +====================================options===================================== +parsers: ["babel", "flow", "typescript"] +printWidth: 80 +semi: false + | printWidth +=====================================input====================================== +class A { + #static; + foo() {} +} + +class B { + #get; + foo() {} +} + +class C { + #set; + foo(v) {} +} + +=====================================output===================================== +class A { + #static + foo() {} +} + +class B { + #get + foo() {} +} + +class C { + #set + foo(v) {} +} + +================================================================================ +`; + +exports[`private.js format 1`] = ` +====================================options===================================== +parsers: ["babel", "flow", "typescript"] +printWidth: 80 + | printWidth +=====================================input====================================== +class A { + #static; + foo() {} +} + +class B { + #get; + foo() {} +} + +class C { + #set; + foo(v) {} +} + +=====================================output===================================== +class A { + #static; + foo() {} +} + +class B { + #get; + foo() {} +} + +class C { + #set; + foo(v) {} +} + +================================================================================ +`; + exports[`set.js - {"semi":false} format 1`] = ` ====================================options===================================== parsers: ["babel", "flow", "typescript"] diff --git a/tests/format/js/classes/keyword-property/computed.js b/tests/format/js/classes/keyword-property/computed.js new file mode 100644 index 000000000000..99f1b61806c8 --- /dev/null +++ b/tests/format/js/classes/keyword-property/computed.js @@ -0,0 +1,9 @@ +class B { + [get]; + foo() {} +} + +class C { + [set]; + foo(v) {} +} diff --git a/tests/format/js/classes/keyword-property/private.js b/tests/format/js/classes/keyword-property/private.js new file mode 100644 index 000000000000..d5b55c76d3c6 --- /dev/null +++ b/tests/format/js/classes/keyword-property/private.js @@ -0,0 +1,14 @@ +class A { + #static; + foo() {} +} + +class B { + #get; + foo() {} +} + +class C { + #set; + foo(v) {} +}