From 57daba85aa03db4f0358f4f1551fedbdfcee94c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Fri, 23 Apr 2021 09:07:58 +0200 Subject: [PATCH] Parse string export names by default (`moduleStringNames`) (#13195) * Parse string epxort names by default (`moduleStringNames`) * Remove remaining references --- packages/babel-parser/src/parser/statement.js | 1 - .../module-string-names/default-import/input.js | 0 .../module-string-names/default-import/output.json | 0 .../duplicate-exported-binding-check/input.js | 0 .../duplicate-exported-binding-check/output.json | 0 .../module-string-names/export-from/input.js | 0 .../module-string-names/export-from/output.json | 0 .../export-name-has-lone-surrogate/input.js | 0 .../export-name-has-lone-surrogate/output.json | 0 .../module-string-names/import-local-is-string/input.js | 0 .../module-string-names/import-local-is-string/options.json | 5 +---- .../module-string-names/mixed/input.js | 0 .../module-string-names/mixed/output.json | 0 .../module-string-names/named-export/input.js | 0 .../module-string-names/named-export/output.json | 0 .../module-string-names/named-import/input.js | 0 .../module-string-names/named-import/output.json | 0 .../module-string-names/namespace-export/input.js | 0 .../module-string-names/namespace-export/output.json | 0 .../test/fixtures/es2022/module-string-names/options.json | 3 +++ .../string-exported-binding-without-from/input.js | 0 .../string-exported-binding-without-from/output.json | 0 .../_no-plugin/module-string-names-export/input.js | 2 -- .../_no-plugin/module-string-names-export/options.json | 5 ----- .../_no-plugin/module-string-names-import/input.js | 1 - .../_no-plugin/module-string-names-import/options.json | 5 ----- .../fixtures/experimental/module-string-names/options.json | 4 ---- .../module-string-names/import-local-is-string/options.json | 5 +---- .../test/fixtures/flow/module-string-names/options.json | 2 +- packages/babel-traverse/test/introspection.js | 1 - 30 files changed, 6 insertions(+), 28 deletions(-) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/default-import/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/default-import/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/duplicate-exported-binding-check/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/duplicate-exported-binding-check/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/export-from/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/export-from/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/export-name-has-lone-surrogate/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/export-name-has-lone-surrogate/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/import-local-is-string/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/import-local-is-string/options.json (76%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/mixed/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/mixed/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/named-export/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/named-export/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/named-import/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/named-import/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/namespace-export/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/namespace-export/output.json (100%) create mode 100644 packages/babel-parser/test/fixtures/es2022/module-string-names/options.json rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/string-exported-binding-without-from/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2022}/module-string-names/string-exported-binding-without-from/output.json (100%) delete mode 100644 packages/babel-parser/test/fixtures/experimental/_no-plugin/module-string-names-export/input.js delete mode 100644 packages/babel-parser/test/fixtures/experimental/_no-plugin/module-string-names-export/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/_no-plugin/module-string-names-import/input.js delete mode 100644 packages/babel-parser/test/fixtures/experimental/_no-plugin/module-string-names-import/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/module-string-names/options.json diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index 3daf7a22cf..21f7ea15e0 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -2089,7 +2089,6 @@ export default class StatementParser extends ExpressionParser { // https://tc39.es/ecma262/#prod-ModuleExportName parseModuleExportName(): N.StringLiteral | N.Identifier { if (this.match(tt.string)) { - this.expectPlugin("moduleStringNames"); const result = this.parseLiteral( this.state.value, "StringLiteral", diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/default-import/input.js b/packages/babel-parser/test/fixtures/es2022/module-string-names/default-import/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/default-import/input.js rename to packages/babel-parser/test/fixtures/es2022/module-string-names/default-import/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/default-import/output.json b/packages/babel-parser/test/fixtures/es2022/module-string-names/default-import/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/default-import/output.json rename to packages/babel-parser/test/fixtures/es2022/module-string-names/default-import/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/duplicate-exported-binding-check/input.js b/packages/babel-parser/test/fixtures/es2022/module-string-names/duplicate-exported-binding-check/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/duplicate-exported-binding-check/input.js rename to packages/babel-parser/test/fixtures/es2022/module-string-names/duplicate-exported-binding-check/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/duplicate-exported-binding-check/output.json b/packages/babel-parser/test/fixtures/es2022/module-string-names/duplicate-exported-binding-check/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/duplicate-exported-binding-check/output.json rename to packages/babel-parser/test/fixtures/es2022/module-string-names/duplicate-exported-binding-check/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/export-from/input.js b/packages/babel-parser/test/fixtures/es2022/module-string-names/export-from/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/export-from/input.js rename to packages/babel-parser/test/fixtures/es2022/module-string-names/export-from/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/export-from/output.json b/packages/babel-parser/test/fixtures/es2022/module-string-names/export-from/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/export-from/output.json rename to packages/babel-parser/test/fixtures/es2022/module-string-names/export-from/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/export-name-has-lone-surrogate/input.js b/packages/babel-parser/test/fixtures/es2022/module-string-names/export-name-has-lone-surrogate/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/export-name-has-lone-surrogate/input.js rename to packages/babel-parser/test/fixtures/es2022/module-string-names/export-name-has-lone-surrogate/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/export-name-has-lone-surrogate/output.json b/packages/babel-parser/test/fixtures/es2022/module-string-names/export-name-has-lone-surrogate/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/export-name-has-lone-surrogate/output.json rename to packages/babel-parser/test/fixtures/es2022/module-string-names/export-name-has-lone-surrogate/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/import-local-is-string/input.js b/packages/babel-parser/test/fixtures/es2022/module-string-names/import-local-is-string/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/import-local-is-string/input.js rename to packages/babel-parser/test/fixtures/es2022/module-string-names/import-local-is-string/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/import-local-is-string/options.json b/packages/babel-parser/test/fixtures/es2022/module-string-names/import-local-is-string/options.json similarity index 76% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/import-local-is-string/options.json rename to packages/babel-parser/test/fixtures/es2022/module-string-names/import-local-is-string/options.json index 95aa9af461..b50ba9a673 100644 --- a/packages/babel-parser/test/fixtures/experimental/module-string-names/import-local-is-string/options.json +++ b/packages/babel-parser/test/fixtures/es2022/module-string-names/import-local-is-string/options.json @@ -1,7 +1,4 @@ { "sourceType": "module", - "plugins": [ - "moduleStringNames" - ], "throws": "A string literal cannot be used as an imported binding.\n- Did you mean `import { \"foo\" as foo }`? (1:9)" -} \ No newline at end of file +} diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/mixed/input.js b/packages/babel-parser/test/fixtures/es2022/module-string-names/mixed/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/mixed/input.js rename to packages/babel-parser/test/fixtures/es2022/module-string-names/mixed/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/mixed/output.json b/packages/babel-parser/test/fixtures/es2022/module-string-names/mixed/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/mixed/output.json rename to packages/babel-parser/test/fixtures/es2022/module-string-names/mixed/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/named-export/input.js b/packages/babel-parser/test/fixtures/es2022/module-string-names/named-export/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/named-export/input.js rename to packages/babel-parser/test/fixtures/es2022/module-string-names/named-export/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/named-export/output.json b/packages/babel-parser/test/fixtures/es2022/module-string-names/named-export/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/named-export/output.json rename to packages/babel-parser/test/fixtures/es2022/module-string-names/named-export/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/named-import/input.js b/packages/babel-parser/test/fixtures/es2022/module-string-names/named-import/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/named-import/input.js rename to packages/babel-parser/test/fixtures/es2022/module-string-names/named-import/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/named-import/output.json b/packages/babel-parser/test/fixtures/es2022/module-string-names/named-import/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/named-import/output.json rename to packages/babel-parser/test/fixtures/es2022/module-string-names/named-import/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/namespace-export/input.js b/packages/babel-parser/test/fixtures/es2022/module-string-names/namespace-export/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/namespace-export/input.js rename to packages/babel-parser/test/fixtures/es2022/module-string-names/namespace-export/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/namespace-export/output.json b/packages/babel-parser/test/fixtures/es2022/module-string-names/namespace-export/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/namespace-export/output.json rename to packages/babel-parser/test/fixtures/es2022/module-string-names/namespace-export/output.json diff --git a/packages/babel-parser/test/fixtures/es2022/module-string-names/options.json b/packages/babel-parser/test/fixtures/es2022/module-string-names/options.json new file mode 100644 index 0000000000..2104ca4328 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2022/module-string-names/options.json @@ -0,0 +1,3 @@ +{ + "sourceType": "module" +} diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/string-exported-binding-without-from/input.js b/packages/babel-parser/test/fixtures/es2022/module-string-names/string-exported-binding-without-from/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/string-exported-binding-without-from/input.js rename to packages/babel-parser/test/fixtures/es2022/module-string-names/string-exported-binding-without-from/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/string-exported-binding-without-from/output.json b/packages/babel-parser/test/fixtures/es2022/module-string-names/string-exported-binding-without-from/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/module-string-names/string-exported-binding-without-from/output.json rename to packages/babel-parser/test/fixtures/es2022/module-string-names/string-exported-binding-without-from/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/_no-plugin/module-string-names-export/input.js b/packages/babel-parser/test/fixtures/experimental/_no-plugin/module-string-names-export/input.js deleted file mode 100644 index 0eed973481..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/_no-plugin/module-string-names-export/input.js +++ /dev/null @@ -1,2 +0,0 @@ -export { foo as "some exports" }; -var foo; diff --git a/packages/babel-parser/test/fixtures/experimental/_no-plugin/module-string-names-export/options.json b/packages/babel-parser/test/fixtures/experimental/_no-plugin/module-string-names-export/options.json deleted file mode 100644 index 577ec6148c..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/_no-plugin/module-string-names-export/options.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "throws": "This experimental syntax requires enabling the parser plugin: 'moduleStringNames' (1:16)", - "sourceType": "module", - "plugins": [] -} diff --git a/packages/babel-parser/test/fixtures/experimental/_no-plugin/module-string-names-import/input.js b/packages/babel-parser/test/fixtures/experimental/_no-plugin/module-string-names-import/input.js deleted file mode 100644 index 7910602922..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/_no-plugin/module-string-names-import/input.js +++ /dev/null @@ -1 +0,0 @@ -import { "foo" as bar, "default" as qux } from "module-a"; diff --git a/packages/babel-parser/test/fixtures/experimental/_no-plugin/module-string-names-import/options.json b/packages/babel-parser/test/fixtures/experimental/_no-plugin/module-string-names-import/options.json deleted file mode 100644 index e6b9c1ad06..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/_no-plugin/module-string-names-import/options.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "throws": "This experimental syntax requires enabling the parser plugin: 'moduleStringNames' (1:9)", - "sourceType": "module", - "plugins": [] -} diff --git a/packages/babel-parser/test/fixtures/experimental/module-string-names/options.json b/packages/babel-parser/test/fixtures/experimental/module-string-names/options.json deleted file mode 100644 index db7db2aa94..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/module-string-names/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "sourceType": "module", - "plugins": ["moduleStringNames"] -} diff --git a/packages/babel-parser/test/fixtures/flow/module-string-names/import-local-is-string/options.json b/packages/babel-parser/test/fixtures/flow/module-string-names/import-local-is-string/options.json index a7e941c241..222ef84882 100644 --- a/packages/babel-parser/test/fixtures/flow/module-string-names/import-local-is-string/options.json +++ b/packages/babel-parser/test/fixtures/flow/module-string-names/import-local-is-string/options.json @@ -1,8 +1,5 @@ { "sourceType": "module", - "plugins": [ - "moduleStringNames", - "flow" - ], + "plugins": ["flow"], "throws": "A string literal cannot be used as an imported binding.\n- Did you mean `import { \"foo\" as foo }`? (1:9)" } diff --git a/packages/babel-parser/test/fixtures/flow/module-string-names/options.json b/packages/babel-parser/test/fixtures/flow/module-string-names/options.json index bd72c92b9d..8e6ec258ae 100644 --- a/packages/babel-parser/test/fixtures/flow/module-string-names/options.json +++ b/packages/babel-parser/test/fixtures/flow/module-string-names/options.json @@ -1,4 +1,4 @@ { "sourceType": "module", - "plugins": ["flow", "moduleStringNames"] + "plugins": ["flow"] } diff --git a/packages/babel-traverse/test/introspection.js b/packages/babel-traverse/test/introspection.js index 980a882566..bdebcf519a 100644 --- a/packages/babel-traverse/test/introspection.js +++ b/packages/babel-traverse/test/introspection.js @@ -176,7 +176,6 @@ describe("path/introspection", function () { it('rejects the "export called *" trick', function () { const program = getPath(`import * as ns from "source"; ns["*"].nested;`, { sourceType: "module", - plugins: ["moduleStringNames"], }); const reference = program.get("body.1.expression"); expect(reference.referencesImport("source", "nested")).toBe(false);