diff --git a/package.json b/package.json index be840a920..a001b003f 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "file-entry-cache": "6.0.1", "find-cache-dir": "4.0.0", "find-parent-dir": "0.3.1", - "flow-parser": "0.198.2", + "flow-parser": "0.199.1", "get-stdin": "9.0.0", "graphql": "16.6.0", "hermes-eslint": "0.9.0", diff --git a/src/language-js/print/flow.js b/src/language-js/print/flow.js index ab5854a78..d715e4136 100644 --- a/src/language-js/print/flow.js +++ b/src/language-js/print/flow.js @@ -65,7 +65,14 @@ function printFlow(path, options, print) { semi, ]; case "DeclareVariable": - return [printDeclareToken(path), "var ", print("id"), semi]; + return [ + printDeclareToken(path), + // TODO: Only use `node.kind` when babel update AST + node.kind ?? "var", + " ", + print("id"), + semi, + ]; case "DeclareExportDeclaration": return printExportDeclaration(path, options, print); case "DeclareExportAllDeclaration": diff --git a/tests/format/flow/declare-variable/__snapshots__/jsfmt.spec.js.snap b/tests/format/flow/declare-variable/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 000000000..c6e2ebad2 --- /dev/null +++ b/tests/format/flow/declare-variable/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,35 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`decare.js [babel-flow] format 1`] = ` +"Unexpected token (2:9) + 1 | declare var a: string; +> 2 | declare let b: string; + | ^ + 3 | declare const c: string; + 4 | declare export var a: string; + 5 | declare export let b: string;" +`; + +exports[`decare.js format 1`] = ` +====================================options===================================== +parsers: ["flow"] +printWidth: 80 + | printWidth +=====================================input====================================== +declare var a: string; +declare let b: string; +declare const c: string; +declare export var a: string; +declare export let b: string; +declare export const c: string; + +=====================================output===================================== +declare var a: string; +declare let b: string; +declare const c: string; +declare export var a: string; +declare export let b: string; +declare export const c: string; + +================================================================================ +`; diff --git a/tests/format/flow/declare-variable/decare.js b/tests/format/flow/declare-variable/decare.js new file mode 100644 index 000000000..e37f98b7f --- /dev/null +++ b/tests/format/flow/declare-variable/decare.js @@ -0,0 +1,6 @@ +declare var a: string; +declare let b: string; +declare const c: string; +declare export var a: string; +declare export let b: string; +declare export const c: string; diff --git a/tests/format/flow/declare-variable/jsfmt.spec.js b/tests/format/flow/declare-variable/jsfmt.spec.js new file mode 100644 index 000000000..9af66b408 --- /dev/null +++ b/tests/format/flow/declare-variable/jsfmt.spec.js @@ -0,0 +1 @@ +run_spec(import.meta, ["flow"], { errors: { "babel-flow": true } }); diff --git a/tests/format/js/objects/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/objects/__snapshots__/jsfmt.spec.js.snap index a070deddb..04aa1297c 100644 --- a/tests/format/js/objects/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/js/objects/__snapshots__/jsfmt.spec.js.snap @@ -1,8 +1,35 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`bigint-key.js [typescript] format 1`] = ` +"Property assignment expected. (1:6) +> 1 | a = {1n: ""} + | ^ + 2 | a = {1n() {}} + 3 | a = {get 1n() {}} + 4 |" +`; + +exports[`bigint-key.js format 1`] = ` +====================================options===================================== +parsers: ["babel", "typescript", "flow"] +printWidth: 80 + | printWidth +=====================================input====================================== +a = {1n: ""} +a = {1n() {}} +a = {get 1n() {}} + +=====================================output===================================== +a = { 1n: "" }; +a = { 1n() {} }; +a = { get 1n() {} }; + +================================================================================ +`; + exports[`escape-sequence-key.js format 1`] = ` ====================================options===================================== -parsers: ["babel", "typescript"] +parsers: ["babel", "typescript", "flow"] printWidth: 80 | printWidth =====================================input====================================== @@ -30,7 +57,7 @@ const b = { exports[`expand.js format 1`] = ` ====================================options===================================== -parsers: ["babel", "typescript"] +parsers: ["babel", "typescript", "flow"] printWidth: 80 | printWidth =====================================input====================================== @@ -74,6 +101,17 @@ exports[`expression.js [espree] format 1`] = ` 8 | ({} = 0);" `; +exports[`expression.js [flow] format 1`] = ` +"Unexpected token \`:\`, expected a type (5:5) + 3 | a = () => ({}).x; + 4 | ({} && a, b); +> 5 | ({}::b, 0); + | ^ + 6 | ({}::b()\`\`[''].c++ && 0 ? 0 : 0, 0); + 7 | ({}(), 0); + 8 | ({} = 0);" +`; + exports[`expression.js [meriyah] format 1`] = ` "Expected ')' (5:4) 3 | a = () => ({}).x; @@ -98,7 +136,7 @@ exports[`expression.js [typescript] format 1`] = ` exports[`expression.js format 1`] = ` ====================================options===================================== -parsers: ["babel", "typescript"] +parsers: ["babel", "typescript", "flow"] printWidth: 80 | printWidth =====================================input====================================== @@ -159,7 +197,7 @@ const a3 = { exports[`getter-setter.js format 1`] = ` ====================================options===================================== -parsers: ["babel", "typescript"] +parsers: ["babel", "typescript", "flow"] printWidth: 80 | printWidth =====================================input====================================== @@ -183,7 +221,7 @@ printWidth: 80 exports[`method.js format 1`] = ` ====================================options===================================== -parsers: ["babel", "typescript"] +parsers: ["babel", "typescript", "flow"] printWidth: 80 | printWidth =====================================input====================================== @@ -197,7 +235,7 @@ a = { f() {} }; exports[`range.js format 1`] = ` ====================================options===================================== -parsers: ["babel", "typescript"] +parsers: ["babel", "typescript", "flow"] printWidth: 80 | printWidth =====================================input====================================== @@ -235,7 +273,7 @@ group( exports[`right-break.js format 1`] = ` ====================================options===================================== -parsers: ["babel", "typescript"] +parsers: ["babel", "typescript", "flow"] printWidth: 80 | printWidth =====================================input====================================== diff --git a/tests/format/js/objects/bigint-key.js b/tests/format/js/objects/bigint-key.js new file mode 100644 index 000000000..10ad3c5d1 --- /dev/null +++ b/tests/format/js/objects/bigint-key.js @@ -0,0 +1,3 @@ +a = {1n: ""} +a = {1n() {}} +a = {get 1n() {}} diff --git a/tests/format/js/objects/jsfmt.spec.js b/tests/format/js/objects/jsfmt.spec.js index 19a2515dc..d3ea02d8a 100644 --- a/tests/format/js/objects/jsfmt.spec.js +++ b/tests/format/js/objects/jsfmt.spec.js @@ -1,8 +1,9 @@ -run_spec(import.meta, ["babel", "typescript"], { +run_spec(import.meta, ["babel", "typescript", "flow"], { errors: { acorn: ["expression.js"], espree: ["expression.js"], - typescript: ["expression.js"], + typescript: ["expression.js", "bigint-key.js"], meriyah: ["expression.js"], + flow: ["expression.js"], }, }); diff --git a/yarn.lock b/yarn.lock index 8eda32094..94ac518ba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4230,10 +4230,10 @@ __metadata: languageName: node linkType: hard -"flow-parser@npm:0.198.2": - version: 0.198.2 - resolution: "flow-parser@npm:0.198.2" - checksum: 1c623e939a2dbddcbe9c62984641b9b9fec86adfc93b34832201c2aded24db292adb8d57a3052a438f0013588f2e58a86a71f91e2c2c515f49f4cb1ce1376a51 +"flow-parser@npm:0.199.1": + version: 0.199.1 + resolution: "flow-parser@npm:0.199.1" + checksum: c0c16aa4510af17dc8644eb9e6108bb223f23971569529389c56502fd4521ac9f04384277165b2adccabedf5d577fdf49e34323ac9a44cdd092d6dc139c987df languageName: node linkType: hard @@ -7177,7 +7177,7 @@ __metadata: file-entry-cache: 6.0.1 find-cache-dir: 4.0.0 find-parent-dir: 0.3.1 - flow-parser: 0.198.2 + flow-parser: 0.199.1 get-stdin: 9.0.0 graphql: 16.6.0 hermes-eslint: 0.9.0