From 8ff0715d0b0b1a79bcb6e12fc68e0c8dac0cdda5 Mon Sep 17 00:00:00 2001 From: sosukesuzuki Date: Sat, 5 Jun 2021 15:13:40 +0900 Subject: [PATCH] Revert "Add `__babel_estree` parser (#10910)" This reverts commit 4d37ac46a3ec835cb4fef674518693951db01623. --- src/language-js/clean.js | 3 -- src/language-js/comments.js | 6 ++-- src/language-js/index.js | 4 --- src/language-js/parser-babel.js | 11 +------ src/language-js/print/call-arguments.js | 3 +- src/language-js/print/literal.js | 4 --- src/language-js/utils.js | 33 +++++++++---------- src/main/range-util.js | 1 - tests/config/format-test.js | 4 --- .../comments/__snapshots__/jsfmt.spec.js.snap | 22 ++++++------- tests/format/flow/comments/jsfmt.spec.js | 2 +- .../invalid/__snapshots__/jsfmt.spec.js.snap | 9 ----- tests/format/js/call/invalid/jsfmt.spec.js | 1 - .../js/tuple/__snapshots__/jsfmt.spec.js.snap | 7 ---- tests/format/js/tuple/jsfmt.spec.js | 1 - .../__snapshots__/jsfmt.spec.js.snap | 17 +++++++--- .../typeparams/consistent/jsfmt.spec.js | 3 +- 17 files changed, 46 insertions(+), 85 deletions(-) diff --git a/src/language-js/clean.js b/src/language-js/clean.js index cd67b0e35a22..903988eb6f72 100644 --- a/src/language-js/clean.js +++ b/src/language-js/clean.js @@ -46,9 +46,6 @@ function clean(ast, newObj, parent) { if (ast.type === "DecimalLiteral") { newObj.value = Number(newObj.value); } - if (ast.type === "Literal" && newObj.decimal) { - newObj.decimal = Number(newObj.decimal); - } // We remove extra `;` and add them when needed if (ast.type === "EmptyStatement") { diff --git a/src/language-js/comments.js b/src/language-js/comments.js index db830e2c6cd5..fcdb85b5955d 100644 --- a/src/language-js/comments.js +++ b/src/language-js/comments.js @@ -716,7 +716,8 @@ function handleOnlyComments({ enclosingNode && enclosingNode.type === "Program" && enclosingNode.body.length === 0 && - !isNonEmptyArray(enclosingNode.directives) + enclosingNode.directives && + enclosingNode.directives.length === 0 ) { if (isLastComment) { addDanglingComment(enclosingNode, comment); @@ -912,8 +913,7 @@ function getCommentChildNodes(node, options) { (options.parser === "typescript" || options.parser === "flow" || options.parser === "espree" || - options.parser === "meriyah" || - options.parser === "__babel_estree") && + options.parser === "meriyah") && node.type === "MethodDefinition" && node.value && node.value.type === "FunctionExpression" && diff --git a/src/language-js/index.js b/src/language-js/index.js index 36e9f68367b9..1c22c70144f9 100644 --- a/src/language-js/index.js +++ b/src/language-js/index.js @@ -167,10 +167,6 @@ const parsers = { get meriyah() { return require("./parser-meriyah").parsers.meriyah; }, - // JS - Babel Estree - get __babel_estree() { - return require("./parser-babel").parsers.__babel_estree; - }, }; module.exports = { diff --git a/src/language-js/parser-babel.js b/src/language-js/parser-babel.js index 2750067b510d..95017501c957 100644 --- a/src/language-js/parser-babel.js +++ b/src/language-js/parser-babel.js @@ -91,10 +91,7 @@ function parseWithOptions(parseMethod, text, options) { function createParse(parseMethod, ...optionsCombinations) { return (text, parsers, opts = {}) => { - if ( - (opts.parser === "babel" || opts.parser === "__babel_estree") && - isFlowFile(text, opts) - ) { + if (opts.parser === "babel" && isFlowFile(text, opts)) { opts.parser = "babel-flow"; return parseFlow(text, parsers, opts); } @@ -140,10 +137,6 @@ const parseTypeScript = createParse( appendPlugins(["jsx", "typescript"]), appendPlugins(["typescript"]) ); -const parseEstree = createParse( - "parse", - appendPlugins(["jsx", "flow", "estree"]) -); const parseExpression = createParse("parseExpression", appendPlugins(["jsx"])); // Error codes are defined in @@ -215,7 +208,5 @@ module.exports = { __vue_expression: babelExpression, /** for vue event binding to handle semicolon */ __vue_event_binding: babel, - /** verify that we can print this AST */ - __babel_estree: createParser(parseEstree), }, }; diff --git a/src/language-js/print/call-arguments.js b/src/language-js/print/call-arguments.js index c415e836ebf1..73134de96fc0 100644 --- a/src/language-js/print/call-arguments.js +++ b/src/language-js/print/call-arguments.js @@ -14,7 +14,6 @@ const { iterateCallArgumentsPath, isNextLineEmpty, isCallExpression, - isStringLiteral, isObjectProperty, } = require("../utils"); @@ -298,7 +297,7 @@ function isTypeModuleObjectExpression(node) { isObjectProperty(node.properties[0]) && node.properties[0].key.type === "Identifier" && node.properties[0].key.name === "type" && - isStringLiteral(node.properties[0].value) && + node.properties[0].value.type === "StringLiteral" && node.properties[0].value.value === "module" ); } diff --git a/src/language-js/print/literal.js b/src/language-js/print/literal.js index 6eae023d8708..e05aa6165b25 100644 --- a/src/language-js/print/literal.js +++ b/src/language-js/print/literal.js @@ -29,10 +29,6 @@ function printLiteral(path, options /*, print*/) { return printBigInt(node.raw); } - if (node.decimal) { - return printNumber(node.decimal) + "m"; - } - const { value } = node; if (typeof value === "number") { diff --git a/src/language-js/utils.js b/src/language-js/utils.js index 9aefc897b454..299b872a048f 100644 --- a/src/language-js/utils.js +++ b/src/language-js/utils.js @@ -710,8 +710,7 @@ function isStringPropSafeToUnquote(node, options) { String(Number(node.key.value)) === node.key.value && (options.parser === "babel" || options.parser === "espree" || - options.parser === "meriyah" || - options.parser === "__babel_estree"))) + options.parser === "meriyah"))) ); } @@ -894,11 +893,14 @@ function isSimpleCallArgument(node, depth) { return node.elements.every((x) => x === null || isChildSimple(x)); } + if (node.type === "ImportExpression") { + return isChildSimple(node.source); + } + if (isCallLikeExpression(node)) { return ( - (node.type === "ImportExpression" || - isSimpleCallArgument(node.callee, depth)) && - getCallArguments(node).every(isChildSimple) + isSimpleCallArgument(node.callee, depth) && + node.arguments.every(isChildSimple) ); } @@ -1170,15 +1172,13 @@ function getCallArguments(node) { if (callArgumentsCache.has(node)) { return callArgumentsCache.get(node); } - - let args = node.arguments; - if (node.type === "ImportExpression") { - args = [node.source]; - - if (node.attributes) { - args.push(node.attributes); - } - } + const args = + node.type === "ImportExpression" + ? // No parser except `babel` supports `import("./foo.json", { assert: { type: "json" } })` yet, + // And `babel` parser it as `CallExpression` + // We need add the second argument here + [node.source] + : node.arguments; callArgumentsCache.set(node, args); return args; @@ -1186,12 +1186,9 @@ function getCallArguments(node) { function iterateCallArgumentsPath(path, iteratee) { const node = path.getValue(); + // See comment in `getCallArguments` if (node.type === "ImportExpression") { path.call((sourcePath) => iteratee(sourcePath, 0), "source"); - - if (node.attributes) { - path.call((sourcePath) => iteratee(sourcePath, 1), "attributes"); - } } else { path.each(iteratee, "arguments"); } diff --git a/src/main/range-util.js b/src/main/range-util.js index 473a56a07ae1..71b503512902 100644 --- a/src/main/range-util.js +++ b/src/main/range-util.js @@ -171,7 +171,6 @@ function isSourceElement(opts, node, parentNode) { case "typescript": case "espree": case "meriyah": - case "__babel_estree": return isJsSourceElement(node.type, parentNode && parentNode.type); case "json": case "json5": diff --git a/tests/config/format-test.js b/tests/config/format-test.js index 06b5204c2b21..492b150a4617 100644 --- a/tests/config/format-test.js +++ b/tests/config/format-test.js @@ -186,10 +186,6 @@ function runSpec(fixtures, parsers, options) { allParsers.push("meriyah"); } } - - if (parsers.includes("babel") && !parsers.includes("__babel_estree")) { - allParsers.push("__babel_estree"); - } } const stringifiedOptions = stringifyOptionsForTitle(options); diff --git a/tests/format/flow/comments/__snapshots__/jsfmt.spec.js.snap b/tests/format/flow/comments/__snapshots__/jsfmt.spec.js.snap index aa9952216eb4..77210f6a8be9 100644 --- a/tests/format/flow/comments/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/flow/comments/__snapshots__/jsfmt.spec.js.snap @@ -2,7 +2,7 @@ exports[`arrow.js format 1`] = ` ====================================options===================================== -parsers: ["flow", "babel-flow"] +parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== @@ -32,7 +32,7 @@ const run = (cmd /*: string */) /*: Promise */ => {}; exports[`class.js format 1`] = ` ====================================options===================================== -parsers: ["flow", "babel-flow"] +parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== @@ -54,7 +54,7 @@ class A { exports[`functions.js format 1`] = ` ====================================options===================================== -parsers: ["flow", "babel-flow"] +parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== @@ -68,7 +68,7 @@ function foo(bar /*: T[] */, baz /*: T */) /*: S */ {} exports[`generics.js format 1`] = ` ====================================options===================================== -parsers: ["flow", "babel-flow"] +parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== @@ -102,7 +102,7 @@ foo/*:: */(); exports[`interface.js format 1`] = ` ====================================options===================================== -parsers: ["flow", "babel-flow"] +parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== @@ -126,7 +126,7 @@ interface Foo { exports[`issues.js format 1`] = ` ====================================options===================================== -parsers: ["flow", "babel-flow"] +parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== @@ -204,7 +204,7 @@ export type AsyncExecuteOptions = child_process$execFileOpts & { exports[`let.js format 1`] = ` ====================================options===================================== -parsers: ["flow", "babel-flow"] +parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== @@ -220,7 +220,7 @@ let bar /*: string */ = "a"; exports[`object_type_annotation.js format 1`] = ` ====================================options===================================== -parsers: ["flow", "babel-flow"] +parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== @@ -259,7 +259,7 @@ type Props3 = { exports[`type_annotations.js format 1`] = ` ====================================options===================================== -parsers: ["flow", "babel-flow"] +parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== @@ -295,7 +295,7 @@ const x = (input /*: string */) /*: string */ => {}; exports[`type_annotations-2.js format 1`] = ` ====================================options===================================== -parsers: ["flow", "babel-flow"] +parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== @@ -314,7 +314,7 @@ class Foo { exports[`union.js format 1`] = ` ====================================options===================================== -parsers: ["flow", "babel-flow"] +parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== diff --git a/tests/format/flow/comments/jsfmt.spec.js b/tests/format/flow/comments/jsfmt.spec.js index f5bd7f6bdcd0..fbfa6501a049 100644 --- a/tests/format/flow/comments/jsfmt.spec.js +++ b/tests/format/flow/comments/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, ["flow", "babel-flow"]); +run_spec(__dirname, ["flow", "babel"]); diff --git a/tests/format/js/call/invalid/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/call/invalid/__snapshots__/jsfmt.spec.js.snap index bcc88f8187ec..548d968e7db3 100644 --- a/tests/format/js/call/invalid/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/js/call/invalid/__snapshots__/jsfmt.spec.js.snap @@ -1,14 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`null-arguments-item.js [__babel_estree] format 1`] = ` -"Unexpected token ','. (1:12) -> 1 | foor('a', , 'b'); - | ^ - 2 | foo('looooooooooooooooooooooooooooooooooooooooooooooong', , 'looooooooooooooooooooooooooooooooooooooooooooooong'); - 3 | foo(\\"a\\", - 4 | //1" -`; - exports[`null-arguments-item.js [babel] format 1`] = ` "Unexpected token ','. (1:12) > 1 | foor('a', , 'b'); diff --git a/tests/format/js/call/invalid/jsfmt.spec.js b/tests/format/js/call/invalid/jsfmt.spec.js index 74d919233aac..0142a0836aae 100644 --- a/tests/format/js/call/invalid/jsfmt.spec.js +++ b/tests/format/js/call/invalid/jsfmt.spec.js @@ -1,7 +1,6 @@ run_spec(__dirname, ["babel"], { errors: { babel: true, - __babel_estree: true, espree: true, meriyah: true, }, diff --git a/tests/format/js/tuple/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/tuple/__snapshots__/jsfmt.spec.js.snap index dfb722765c2f..1d4ee9f7aa4d 100644 --- a/tests/format/js/tuple/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/js/tuple/__snapshots__/jsfmt.spec.js.snap @@ -48,13 +48,6 @@ assert(rest[1] === 3); ================================================================================ `; -exports[`invalid-tuple-holes.js [__babel_estree] format 1`] = ` -"Unexpected token ','. (1:4) -> 1 | #[,] - | ^ - 2 |" -`; - exports[`invalid-tuple-holes.js [babel] format 1`] = ` "Unexpected token ','. (1:4) > 1 | #[,] diff --git a/tests/format/js/tuple/jsfmt.spec.js b/tests/format/js/tuple/jsfmt.spec.js index 878fdf2ab8e2..71a06d090bce 100644 --- a/tests/format/js/tuple/jsfmt.spec.js +++ b/tests/format/js/tuple/jsfmt.spec.js @@ -1,7 +1,6 @@ run_spec(__dirname, ["babel"], { errors: { babel: ["invalid-tuple-holes.js"], - __babel_estree: ["invalid-tuple-holes.js"], espree: true, meriyah: true, }, diff --git a/tests/format/typescript/typeparams/consistent/__snapshots__/jsfmt.spec.js.snap b/tests/format/typescript/typeparams/consistent/__snapshots__/jsfmt.spec.js.snap index f3ebb5358fc8..0a7b54e43881 100644 --- a/tests/format/typescript/typeparams/consistent/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/typescript/typeparams/consistent/__snapshots__/jsfmt.spec.js.snap @@ -2,7 +2,7 @@ exports[`flow-only.ts format 1`] = ` ====================================options===================================== -parsers: ["typescript", "flow", "babel-flow"] +parsers: ["typescript", "flow", "babel-flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== @@ -21,7 +21,7 @@ const foo7: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo exports[`issue-9501.ts format 1`] = ` ====================================options===================================== -parsers: ["typescript", "flow", "babel-flow"] +parsers: ["typescript", "flow", "babel-flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== @@ -38,7 +38,7 @@ const name: SomeGeneric> = exports[`simple-types.ts format 1`] = ` ====================================options===================================== -parsers: ["typescript", "flow", "babel-flow"] +parsers: ["typescript", "flow", "babel-flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== @@ -84,6 +84,13 @@ const foo12: Foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo ================================================================================ `; +exports[`template-literal-types.ts [babel] format 1`] = ` +"Unexpected token (1:84) +> 1 | const foo1: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<\`Hello, \${keyof World}\`> = a; + | ^ + 2 |" +`; + exports[`template-literal-types.ts [babel-flow] format 1`] = ` "Unexpected token (1:84) > 1 | const foo1: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<\`Hello, \${keyof World}\`> = a; @@ -100,7 +107,7 @@ exports[`template-literal-types.ts [flow] format 1`] = ` exports[`template-literal-types.ts format 1`] = ` ====================================options===================================== -parsers: ["typescript", "flow", "babel-flow"] +parsers: ["typescript", "flow", "babel-flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== @@ -115,7 +122,7 @@ const foo1: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo exports[`typescript-only.ts format 1`] = ` ====================================options===================================== -parsers: ["typescript", "flow", "babel-flow"] +parsers: ["typescript", "flow", "babel-flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== diff --git a/tests/format/typescript/typeparams/consistent/jsfmt.spec.js b/tests/format/typescript/typeparams/consistent/jsfmt.spec.js index e590e7f2ad52..9990099dc84b 100644 --- a/tests/format/typescript/typeparams/consistent/jsfmt.spec.js +++ b/tests/format/typescript/typeparams/consistent/jsfmt.spec.js @@ -1,6 +1,7 @@ -run_spec(__dirname, ["typescript", "flow", "babel-flow"], { +run_spec(__dirname, ["typescript", "flow", "babel-flow", "babel"], { errors: { flow: ["template-literal-types.ts"], "babel-flow": ["template-literal-types.ts"], + babel: ["template-literal-types.ts"], }, });