From 197415b0ee0c6b6af9101c3afac2a411539a1640 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Sat, 25 Jun 2022 10:50:33 +0200 Subject: [PATCH] Remove `decoratorsBeforeExport` from generator --- .../babel-generator/src/generators/classes.ts | 12 ++++++---- .../babel-generator/src/generators/modules.ts | 24 +++++++++++-------- packages/babel-generator/src/index.ts | 3 ++- packages/babel-generator/src/printer.ts | 5 +++- .../false-to-false/options.json | 1 + .../false-to-true/options.json | 1 + .../true-to-false/options.json | 1 + .../true-to-true/options.json | 1 + 8 files changed, 32 insertions(+), 16 deletions(-) diff --git a/packages/babel-generator/src/generators/classes.ts b/packages/babel-generator/src/generators/classes.ts index 0212bd9d4737..01416fa82828 100644 --- a/packages/babel-generator/src/generators/classes.ts +++ b/packages/babel-generator/src/generators/classes.ts @@ -11,11 +11,15 @@ export function ClassDeclaration( node: t.ClassDeclaration, parent: t.Node, ) { - if ( - !this.format.decoratorsBeforeExport || - (!isExportDefaultDeclaration(parent) && !isExportNamedDeclaration(parent)) - ) { + if (process.env.BABEL_8_BREAKING) { this.printJoin(node.decorators, node); + } else { + if ( + !this.format.decoratorsBeforeExport || + (!isExportDefaultDeclaration(parent) && !isExportNamedDeclaration(parent)) + ) { + this.printJoin(node.decorators, node); + } } if (node.declare) { diff --git a/packages/babel-generator/src/generators/modules.ts b/packages/babel-generator/src/generators/modules.ts index e902729430cc..f40ba76b2604 100644 --- a/packages/babel-generator/src/generators/modules.ts +++ b/packages/babel-generator/src/generators/modules.ts @@ -90,11 +90,13 @@ export function ExportNamedDeclaration( this: Printer, node: t.ExportNamedDeclaration, ) { - if ( - this.format.decoratorsBeforeExport && - isClassDeclaration(node.declaration) - ) { - this.printJoin(node.declaration.decorators, node); + if (!process.env.BABEL_8_BREAKING) { + if ( + this.format.decoratorsBeforeExport && + isClassDeclaration(node.declaration) + ) { + this.printJoin(node.declaration.decorators, node); + } } this.word("export"); @@ -156,11 +158,13 @@ export function ExportDefaultDeclaration( this: Printer, node: t.ExportDefaultDeclaration, ) { - if ( - this.format.decoratorsBeforeExport && - isClassDeclaration(node.declaration) - ) { - this.printJoin(node.declaration.decorators, node); + if (!process.env.BABEL_8_BREAKING) { + if ( + this.format.decoratorsBeforeExport && + isClassDeclaration(node.declaration) + ) { + this.printJoin(node.declaration.decorators, node); + } } this.word("export"); diff --git a/packages/babel-generator/src/index.ts b/packages/babel-generator/src/index.ts index c6f609c7e831..b64536d182ab 100644 --- a/packages/babel-generator/src/index.ts +++ b/packages/babel-generator/src/index.ts @@ -66,7 +66,6 @@ function normalizeOptions( style: " ", base: 0, }, - decoratorsBeforeExport: !!opts.decoratorsBeforeExport, jsescOption: { quotes: "double", wrap: true, @@ -78,6 +77,7 @@ function normalizeOptions( }; if (!process.env.BABEL_8_BREAKING) { + format.decoratorsBeforeExport = !!opts.decoratorsBeforeExport; format.jsonCompatibleStrings = opts.jsonCompatibleStrings; } @@ -193,6 +193,7 @@ export interface GeneratorOptions { /** * Set to true to enable support for experimental decorators syntax before module exports. * Defaults to `false`. + * @deprecated Removed in Babel 8 */ decoratorsBeforeExport?: boolean; diff --git a/packages/babel-generator/src/printer.ts b/packages/babel-generator/src/printer.ts index 227fabe71aa6..857ca0c97034 100644 --- a/packages/babel-generator/src/printer.ts +++ b/packages/babel-generator/src/printer.ts @@ -35,7 +35,6 @@ export type Format = { style: string; base: number; }; - decoratorsBeforeExport: boolean; recordAndTupleSyntaxType: RecordAndTuplePluginOptions["syntaxType"]; jsescOption: jsescOptions; jsonCompatibleStrings?: boolean; @@ -44,6 +43,10 @@ export type Format = { * Changes what token is used for pipe bodies’ topic references. */ topicToken?: PipelineOperatorPluginOptions["topicToken"]; + /** + * @deprecated Removed in Babel 8 + */ + decoratorsBeforeExport?: boolean; }; interface AddNewlinesOptions { diff --git a/packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-false/options.json b/packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-false/options.json index 7ebfdd91777b..f19a69b6a2b8 100644 --- a/packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-false/options.json +++ b/packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-false/options.json @@ -1,4 +1,5 @@ { + "BABEL_8_BREAKING": false, "plugins": [["decorators", { "decoratorsBeforeExport": false }]], "decoratorsBeforeExport": false } 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 234fb2bac889..5cd524b7c638 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,4 +1,5 @@ { + "BABEL_8_BREAKING": false, "plugins": [["decorators", { "decoratorsBeforeExport": false }]], "decoratorsBeforeExport": 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 2540d61c86c0..99dc70805820 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,4 +1,5 @@ { + "BABEL_8_BREAKING": false, "plugins": [["decorators", { "decoratorsBeforeExport": true }]], "decoratorsBeforeExport": false } diff --git a/packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-true/options.json b/packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-true/options.json index 788cc225058a..f82968d9ccb5 100644 --- a/packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-true/options.json +++ b/packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-true/options.json @@ -1,4 +1,5 @@ { + "BABEL_8_BREAKING": false, "plugins": [["decorators", { "decoratorsBeforeExport": true }]], "decoratorsBeforeExport": true }