diff --git a/tests/format/js/classes/__snapshots__/format.test.js.snap b/tests/format/js/classes/__snapshots__/format.test.js.snap index 65d840035..9b3b0b22b 100644 --- a/tests/format/js/classes/__snapshots__/format.test.js.snap +++ b/tests/format/js/classes/__snapshots__/format.test.js.snap @@ -177,6 +177,32 @@ class Foo { ================================================================================ `; +exports[`computed-constructor-property.js format 1`] = ` +====================================options===================================== +parsers: ["babel", "flow", "typescript"] +printWidth: 80 + | printWidth +=====================================input====================================== +class A { + [constructor] +} + +class B { + ["constructor"] +} + +=====================================output===================================== +class A { + [constructor]; +} + +class B { + ["constructor"]; +} + +================================================================================ +`; + exports[`constructor.js format 1`] = ` ====================================options===================================== parsers: ["babel", "flow", "typescript"] diff --git a/tests/format/js/classes/computed-constructor-property.js b/tests/format/js/classes/computed-constructor-property.js new file mode 100644 index 000000000..168e96dba --- /dev/null +++ b/tests/format/js/classes/computed-constructor-property.js @@ -0,0 +1,7 @@ +class A { + [constructor] +} + +class B { + ["constructor"] +} diff --git a/tests/format/misc/errors/js/class-property-named-constructor/__snapshots__/format.test.js.snap b/tests/format/misc/errors/js/class-property-named-constructor/__snapshots__/format.test.js.snap index 45b817783..121bb81a6 100644 --- a/tests/format/misc/errors/js/class-property-named-constructor/__snapshots__/format.test.js.snap +++ b/tests/format/misc/errors/js/class-property-named-constructor/__snapshots__/format.test.js.snap @@ -73,6 +73,30 @@ exports[`snippet: #0 [meriyah] format 1`] = ` Cause: [3:0-3:1]: Classes may not have a field called constructor" `; +exports[`snippet: #0 [oxc] format 1`] = ` +"Expected \`(\` but found \`}\` (3:1) + 1 | class Foo { + 2 | constructor +> 3 | } + | ^" +`; + +exports[`snippet: #0 [oxc-ts] format 1`] = ` +"Expected \`(\` but found \`}\` (3:1) + 1 | class Foo { + 2 | constructor +> 3 | } + | ^" +`; + +exports[`snippet: #0 [oxc-ts] format 2`] = ` +"Expected \`(\` but found \`}\` (3:1) + 1 | abstract class Foo { + 2 | constructor +> 3 | } + | ^" +`; + exports[`snippet: #0 [typescript] format 1`] = ` "'(' expected. (3:1) 1 | class Foo { @@ -164,6 +188,30 @@ exports[`snippet: #1 [meriyah] format 1`] = ` Cause: [3:0-3:1]: Classes may not have a field called constructor" `; +exports[`snippet: #1 [oxc] format 1`] = ` +"Classes can't have a field named 'constructor' (2:3) + 1 | class Foo { +> 2 | 'constructor' + | ^^^^^^^^^^^^^ + 3 | }" +`; + +exports[`snippet: #1 [oxc-ts] format 1`] = ` +"Classes can't have a field named 'constructor' (2:3) + 1 | class Foo { +> 2 | 'constructor' + | ^^^^^^^^^^^^^ + 3 | }" +`; + +exports[`snippet: #1 [oxc-ts] format 2`] = ` +"Classes can't have a field named 'constructor' (2:3) + 1 | abstract class Foo { +> 2 | 'constructor' + | ^^^^^^^^^^^^^ + 3 | }" +`; + exports[`snippet: #1 [typescript] format 1`] = ` "Classes may not have a field named 'constructor'. (2:3) 1 | class Foo { @@ -255,6 +303,30 @@ exports[`snippet: #2 [meriyah] format 1`] = ` Cause: [3:0-3:1]: Classes may not have a field called constructor" `; +exports[`snippet: #2 [oxc] format 1`] = ` +"Classes can't have a field named 'constructor' (2:3) + 1 | class Foo { +> 2 | 'constructor' + | ^^^^^^^^^^^^^ + 3 | }" +`; + +exports[`snippet: #2 [oxc-ts] format 1`] = ` +"Classes can't have a field named 'constructor' (2:3) + 1 | class Foo { +> 2 | 'constructor' + | ^^^^^^^^^^^^^ + 3 | }" +`; + +exports[`snippet: #2 [oxc-ts] format 2`] = ` +"Classes can't have a field named 'constructor' (2:3) + 1 | abstract class Foo { +> 2 | 'constructor' + | ^^^^^^^^^^^^^ + 3 | }" +`; + exports[`snippet: #2 [typescript] format 1`] = ` "Classes may not have a field named 'constructor'. (2:3) 1 | class Foo { @@ -346,6 +418,30 @@ exports[`snippet: #3 [meriyah] format 1`] = ` Cause: [3:0-3:1]: Classes may not have a field called constructor" `; +exports[`snippet: #3 [oxc] format 1`] = ` +"Classes may not have a field named 'constructor' (2:12) + 1 | class Foo { +> 2 | accessor 'constructor' + | ^^^^^^^^^^^^^ + 3 | }" +`; + +exports[`snippet: #3 [oxc-ts] format 1`] = ` +"Classes may not have a field named 'constructor' (2:12) + 1 | class Foo { +> 2 | accessor 'constructor' + | ^^^^^^^^^^^^^ + 3 | }" +`; + +exports[`snippet: #3 [oxc-ts] format 2`] = ` +"Classes may not have a field named 'constructor' (2:12) + 1 | abstract class Foo { +> 2 | accessor 'constructor' + | ^^^^^^^^^^^^^ + 3 | }" +`; + exports[`snippet: #3 [typescript] format 1`] = ` "Classes may not have a field named 'constructor'. (2:12) 1 | class Foo { @@ -437,6 +533,30 @@ exports[`snippet: #4 [meriyah] format 1`] = ` Cause: [3:0-3:1]: Classes may not have a field called constructor" `; +exports[`snippet: #4 [oxc] format 1`] = ` +"Classes may not have a field named 'constructor' (2:12) + 1 | class Foo { +> 2 | accessor 'constructor' + | ^^^^^^^^^^^^^ + 3 | }" +`; + +exports[`snippet: #4 [oxc-ts] format 1`] = ` +"Classes may not have a field named 'constructor' (2:12) + 1 | class Foo { +> 2 | accessor 'constructor' + | ^^^^^^^^^^^^^ + 3 | }" +`; + +exports[`snippet: #4 [oxc-ts] format 2`] = ` +"Classes may not have a field named 'constructor' (2:12) + 1 | abstract class Foo { +> 2 | accessor 'constructor' + | ^^^^^^^^^^^^^ + 3 | }" +`; + exports[`snippet: #4 [typescript] format 1`] = ` "Classes may not have a field named 'constructor'. (2:12) 1 | class Foo { @@ -528,6 +648,30 @@ exports[`snippet: #5 [meriyah] format 1`] = ` Cause: [3:0-3:1]: Classes may not have a field called constructor" `; +exports[`snippet: #5 [oxc] format 1`] = ` +"Expected \`(\` but found \`}\` (3:1) + 1 | class Foo { + 2 | accessor constructor +> 3 | } + | ^" +`; + +exports[`snippet: #5 [oxc-ts] format 1`] = ` +"Expected \`(\` but found \`}\` (3:1) + 1 | class Foo { + 2 | accessor constructor +> 3 | } + | ^" +`; + +exports[`snippet: #5 [oxc-ts] format 2`] = ` +"Expected \`(\` but found \`}\` (3:1) + 1 | abstract class Foo { + 2 | accessor constructor +> 3 | } + | ^" +`; + exports[`snippet: #5 [typescript] format 1`] = ` "'(' expected. (3:1) 1 | class Foo { diff --git a/tests/format/misc/errors/js/class-property-named-constructor/format.test.js b/tests/format/misc/errors/js/class-property-named-constructor/format.test.js index db70b617c..85bc53f2f 100644 --- a/tests/format/misc/errors/js/class-property-named-constructor/format.test.js +++ b/tests/format/misc/errors/js/class-property-named-constructor/format.test.js @@ -45,9 +45,8 @@ runFormatTest( "meriyah", "typescript", "babel-ts", - // https://github.com/oxc-project/oxc/issues/14014 - // "oxc", - // "oxc-ts", + "oxc", + "oxc-ts", "flow", "hermes", ], @@ -58,9 +57,5 @@ runFormatTest( importMeta: import.meta, snippets: cases.map((code) => `abstract ${code}`), }, - [ - "typescript", - "babel-ts", - // "oxc-ts", - ], + ["typescript", "babel-ts", "oxc-ts"], ); diff --git a/tests/format/misc/errors/typescript/__snapshots__/format.test.js.snap b/tests/format/misc/errors/typescript/__snapshots__/format.test.js.snap index 1a6fb55b2..ce2dc8cd3 100644 --- a/tests/format/misc/errors/typescript/__snapshots__/format.test.js.snap +++ b/tests/format/misc/errors/typescript/__snapshots__/format.test.js.snap @@ -10,6 +10,15 @@ exports[`declare-getter.ts [babel-ts] format 1`] = ` Cause: 'declare' is not allowed in getters. (2:2)" `; +exports[`declare-getter.ts [oxc-ts] format 1`] = ` +"'declare' modifier cannot be used here. (2:3) + 1 | class Foo { +> 2 | declare get foo() + | ^^^^^^^ + 3 | } + 4 |" +`; + exports[`declare-getter.ts [typescript] format 1`] = ` "'declare' modifier cannot appear on class elements of this kind. (2:3) 1 | class Foo { @@ -30,6 +39,15 @@ exports[`declare-setter.ts [babel-ts] format 1`] = ` Cause: 'declare' is not allowed in setters. (2:2)" `; +exports[`declare-setter.ts [oxc-ts] format 1`] = ` +"'declare' modifier cannot be used here. (2:3) + 1 | class Foo { +> 2 | declare set foo(v) + | ^^^^^^^ + 3 | } + 4 |" +`; + exports[`declare-setter.ts [typescript] format 1`] = ` "'declare' modifier cannot appear on class elements of this kind. (2:3) 1 | class Foo { @@ -48,6 +66,13 @@ exports[`export-declare.ts [babel-ts] format 1`] = ` Cause: 'export declare' must be followed by an ambient declaration. (1:15)" `; +exports[`export-declare.ts [oxc-ts] format 1`] = ` +"Unexpected token (1:16) +> 1 | export declare foo; + | ^^^ + 2 |" +`; + exports[`export-declare.ts [typescript] format 1`] = ` "Declaration or statement expected. (1:1) > 1 | export declare foo; @@ -66,6 +91,15 @@ exports[`invalid-jsx-1.tsx [babel-ts] format 1`] = ` Cause: Unexpected token \`>\`. Did you mean \`>\` or \`{'>'}\`? (3:44)" `; +exports[`invalid-jsx-1.tsx [oxc-ts] format 1`] = ` +"Unexpected token. Did you mean \`{'>'}\` or \`>\`? (3:45) + 1 | // https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-9.html#-and--are-now-invalid-jsx-text-characters + 2 | +> 3 | let directions =