From f682cc39e72ad78dbff11f487e86592ce8c3f573 Mon Sep 17 00:00:00 2001 From: liuxingbaoyu <30521560+liuxingbaoyu@users.noreply.github.com> Date: Wed, 21 Sep 2022 22:47:44 +0800 Subject: [PATCH 1/4] add test --- packages/babel-generator/test/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/babel-generator/test/index.js b/packages/babel-generator/test/index.js index b32847f2cdfe..b3828f8754f4 100644 --- a/packages/babel-generator/test/index.js +++ b/packages/babel-generator/test/index.js @@ -811,14 +811,15 @@ suites.forEach(function (testSuite) { const actualCode = actual.code; if (actualCode) { - const actualAst = parse(actualCode, { + const parserOpts = { filename: actual.loc, plugins: task.options.plugins || [], strictMode: task.options.strictMode === false ? false : true, sourceType: "module", sourceMaps: !!task.sourceMap, ...task.options.parserOpts, - }); + }; + const actualAst = parse(actualCode, parserOpts); const options = { sourceFileName: path.relative( path.dirname(fileURLToPath(import.meta.url)), @@ -864,6 +865,9 @@ suites.forEach(function (testSuite) { } else { try { expect(result.code).toBe(expected.code); + expect(() => { + parse(result.code, parserOpts); + }).not.toThrow(); } catch (e) { if (!process.env.OVERWRITE) throw e; console.log(`Updated test file: ${expected.loc}`); From 54140e9fd8539177af025bc0808bf9ee1b2eada1 Mon Sep 17 00:00:00 2001 From: liuxingbaoyu <30521560+liuxingbaoyu@users.noreply.github.com> Date: Thu, 22 Sep 2022 00:43:04 +0800 Subject: [PATCH 2/4] fix --- packages/babel-generator/src/generators/expressions.ts | 4 +++- packages/babel-generator/src/generators/flow.ts | 1 + .../decoratorsBeforeExport/false-to-true/options.json | 3 ++- .../decoratorsBeforeExport/true-to-false/options.json | 3 ++- .../test/fixtures/flow/internal-slot/output.js | 4 ++-- .../test/fixtures/flow/typeapp-call/output.js | 4 ++-- .../test/fixtures/types/Decorator/options.json | 2 +- .../test/fixtures/types/Decorator/output.js | 8 ++++---- packages/babel-generator/test/index.js | 10 ++++++---- 9 files changed, 23 insertions(+), 16 deletions(-) diff --git a/packages/babel-generator/src/generators/expressions.ts b/packages/babel-generator/src/generators/expressions.ts index 10b382f4e3ab..28a27b2c7df3 100644 --- a/packages/babel-generator/src/generators/expressions.ts +++ b/packages/babel-generator/src/generators/expressions.ts @@ -190,12 +190,14 @@ export function OptionalCallExpression( ) { this.print(node.callee, node); - this.print(node.typeArguments, node); // Flow this.print(node.typeParameters, node); // TS if (node.optional) { this.token("?."); } + + this.print(node.typeArguments, node); // Flow + this.token("("); this.printList(node.arguments, node); this.token(")"); diff --git a/packages/babel-generator/src/generators/flow.ts b/packages/babel-generator/src/generators/flow.ts index e0cb079e0179..7d037bbf321a 100644 --- a/packages/babel-generator/src/generators/flow.ts +++ b/packages/babel-generator/src/generators/flow.ts @@ -332,6 +332,7 @@ export function FunctionTypeAnnotation( if ( parent && (parent.type === "ObjectTypeCallProperty" || + parent.type === "ObjectTypeInternalSlot" || parent.type === "DeclareFunction" || (parent.type === "ObjectTypeProperty" && parent.method)) ) { diff --git a/packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-true/options.json b/packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-true/options.json index 5cd524b7c638..72515fd85bfe 100644 --- a/packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-true/options.json +++ b/packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-true/options.json @@ -1,5 +1,6 @@ { "BABEL_8_BREAKING": false, "plugins": [["decorators", { "decoratorsBeforeExport": false }]], - "decoratorsBeforeExport": true + "decoratorsBeforeExport": true, + "expectedReParseError": true } diff --git a/packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-false/options.json b/packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-false/options.json index 99dc70805820..dffdbf484f18 100644 --- a/packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-false/options.json +++ b/packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-false/options.json @@ -1,5 +1,6 @@ { "BABEL_8_BREAKING": false, "plugins": [["decorators", { "decoratorsBeforeExport": true }]], - "decoratorsBeforeExport": false + "decoratorsBeforeExport": false, + "expectedReParseError": true } diff --git a/packages/babel-generator/test/fixtures/flow/internal-slot/output.js b/packages/babel-generator/test/fixtures/flow/internal-slot/output.js index 3b2b5ece1a23..e4345459ab06 100644 --- a/packages/babel-generator/test/fixtures/flow/internal-slot/output.js +++ b/packages/babel-generator/test/fixtures/flow/internal-slot/output.js @@ -8,13 +8,13 @@ interface I1 { [[foo]]: X } interface I2 { - [[foo]]() => X + [[foo]](): X } type T1 = { [[foo]]: X }; type T2 = { - [[foo]]() => X + [[foo]](): X }; type T3 = { [[foo]]?: X diff --git a/packages/babel-generator/test/fixtures/flow/typeapp-call/output.js b/packages/babel-generator/test/fixtures/flow/typeapp-call/output.js index 2c2f43ea0869..6db174c9ad20 100644 --- a/packages/babel-generator/test/fixtures/flow/typeapp-call/output.js +++ b/packages/babel-generator/test/fixtures/flow/typeapp-call/output.js @@ -16,6 +16,6 @@ new C(); o.m(); f < T > .0; o?.m(e); -o.m?.(e); +o.m?.(e); async(); -f?.(e); \ No newline at end of file +f?.(e); \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/types/Decorator/options.json b/packages/babel-generator/test/fixtures/types/Decorator/options.json index b4fee43f66c4..f151636876b6 100644 --- a/packages/babel-generator/test/fixtures/types/Decorator/options.json +++ b/packages/babel-generator/test/fixtures/types/Decorator/options.json @@ -1 +1 @@ -{ "plugins": ["decorators-legacy"] } +{ "plugins": ["decorators-legacy"], "decoratorsBeforeExport": true } diff --git a/packages/babel-generator/test/fixtures/types/Decorator/output.js b/packages/babel-generator/test/fixtures/types/Decorator/output.js index db5f62ff6b7c..853583676718 100644 --- a/packages/babel-generator/test/fixtures/types/Decorator/output.js +++ b/packages/babel-generator/test/fixtures/types/Decorator/output.js @@ -32,15 +32,15 @@ class Foo { } -export default @foo -class Foo2 { +@foo +export default class Foo2 { bar() { class Baz {} } } -export @foo -class Foo3 { +@foo +export class Foo3 { bar() { class Baz {} } diff --git a/packages/babel-generator/test/index.js b/packages/babel-generator/test/index.js index b3828f8754f4..d55ca5492a48 100644 --- a/packages/babel-generator/test/index.js +++ b/packages/babel-generator/test/index.js @@ -833,7 +833,7 @@ suites.forEach(function (testSuite) { return generate(actualAst, options, actualCode); }; - const throwMsg = task.options.throws; + const throwMsg = options.throws; if (throwMsg) { expect(() => run()).toThrow( throwMsg === true ? undefined : throwMsg, @@ -865,9 +865,11 @@ suites.forEach(function (testSuite) { } else { try { expect(result.code).toBe(expected.code); - expect(() => { - parse(result.code, parserOpts); - }).not.toThrow(); + if (!options.expectedReParseError) { + expect(() => { + parse(result.code, parserOpts); + }).not.toThrow(); + } } catch (e) { if (!process.env.OVERWRITE) throw e; console.log(`Updated test file: ${expected.loc}`); From cff908d7a26a058837f6cadbdb329adbefbe00e4 Mon Sep 17 00:00:00 2001 From: liuxingbaoyu <30521560+liuxingbaoyu@users.noreply.github.com> Date: Thu, 22 Sep 2022 01:14:08 +0800 Subject: [PATCH 3/4] fix ci name --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a183cbf335e6..259ef7a46f70 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -272,7 +272,7 @@ jobs: !**/node_modules/** test-babel-8-breaking: - name: Test Babel 8 breaking changes on Node.js + name: Test Babel 8 breaking changes on needs: build-babel8 strategy: matrix: From cdd1cb362f438dae1eb6cb04de31e7449c8c021f Mon Sep 17 00:00:00 2001 From: liuxingbaoyu <30521560+liuxingbaoyu@users.noreply.github.com> Date: Thu, 22 Sep 2022 17:34:01 +0800 Subject: [PATCH 4/4] fix babel8 --- .../test/fixtures/types/Decorator/options.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/babel-generator/test/fixtures/types/Decorator/options.json b/packages/babel-generator/test/fixtures/types/Decorator/options.json index f151636876b6..be6fc7ea6fca 100644 --- a/packages/babel-generator/test/fixtures/types/Decorator/options.json +++ b/packages/babel-generator/test/fixtures/types/Decorator/options.json @@ -1 +1,5 @@ -{ "plugins": ["decorators-legacy"], "decoratorsBeforeExport": true } +{ + "plugins": ["decorators-legacy"], + "decoratorsBeforeExport": true, + "BABEL_8_BREAKING": false +}