diff --git a/changelog_unreleased/javascript/15485.md b/changelog_unreleased/javascript/15485.md new file mode 100644 index 000000000..3dbc8726a --- /dev/null +++ b/changelog_unreleased/javascript/15485.md @@ -0,0 +1,27 @@ +#### Support new syntaxes supported by Babel 7.23.0 (#15485, #15486, #15487, #15488 by @sosukesuzuki) + +We support new JS syntax supported by [Babel 7.23.0](https://babeljs.io/blog/2023/09/25/7.23.0)! + +##### Source Phase Imports + +Please see https://github.com/tc39/proposal-source-phase-imports for more details. + +```js +import source x from "mod"; +``` + +##### Deferred Import Evaluation + +Please see https://github.com/tc39/proposal-defer-import-eval for more details. + +```js +import defer * as ns from "mod"; +``` + +##### Optional Chaining Assignments + +Please see https://github.com/tc39/proposal-optional-chaining-assignment for more details. + +```js +maybeObj?.prop1 = value; +``` diff --git a/package.json b/package.json index df6500596..bdb96950a 100644 --- a/package.json +++ b/package.json @@ -32,8 +32,8 @@ "dependencies": { "@angular/compiler": "16.2.6", "@babel/code-frame": "7.22.13", - "@babel/parser": "7.22.16", - "@babel/types": "7.22.19", + "@babel/parser": "7.23.0", + "@babel/types": "7.23.0", "@glimmer/syntax": "0.84.3", "@iarna/toml": "2.2.5", "@prettier/is-es5-identifier-name": "0.2.0", diff --git a/tests/format/misc/errors/invalid/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/invalid/__snapshots__/jsfmt.spec.js.snap index 471473220..740efea68 100644 --- a/tests/format/misc/errors/invalid/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/invalid/__snapshots__/jsfmt.spec.js.snap @@ -325,7 +325,7 @@ exports[`snippet: #4 [babel] format 1`] = ` `; exports[`snippet: #4 [babel] format 2`] = ` -"Invalid left-hand side in parenthesized expression. (1:2) +"Invalid left-hand side in assignment expression. (1:2) > 1 | (a = b) += 1 | ^" `; @@ -337,7 +337,7 @@ exports[`snippet: #4 [babel-flow] format 1`] = ` `; exports[`snippet: #4 [babel-flow] format 2`] = ` -"Invalid left-hand side in parenthesized expression. (1:2) +"Invalid left-hand side in assignment expression. (1:2) > 1 | (a = b) += 1 | ^" `; @@ -349,7 +349,7 @@ exports[`snippet: #4 [babel-ts] format 1`] = ` `; exports[`snippet: #4 [babel-ts] format 2`] = ` -"Invalid left-hand side in parenthesized expression. (1:2) +"Invalid left-hand side in assignment expression. (1:2) > 1 | (a = b) += 1 | ^" `; diff --git a/tests/format/misc/errors/js/assignment/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/assignment/__snapshots__/jsfmt.spec.js.snap index f4b45b707..1c7025ad8 100644 --- a/tests/format/misc/errors/js/assignment/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/js/assignment/__snapshots__/jsfmt.spec.js.snap @@ -25,7 +25,7 @@ exports[`snippet: #0 [babel] format 1`] = ` `; exports[`snippet: #0 [babel] format 2`] = ` -"Invalid left-hand side in assignment expression. (1:1) +"This experimental syntax requires enabling the parser plugin: "optionalChainingAssign". (1:1) > 1 | let?.()[a] =1 | ^" `; @@ -37,7 +37,7 @@ exports[`snippet: #0 [babel-ts] format 1`] = ` `; exports[`snippet: #0 [babel-ts] format 2`] = ` -"Invalid left-hand side in assignment expression. (1:1) +"This experimental syntax requires enabling the parser plugin: "optionalChainingAssign". (1:1) > 1 | let?.()[a] =1 | ^" `; @@ -91,13 +91,13 @@ exports[`snippet: #1 [acorn] format 1`] = ` `; exports[`snippet: #1 [babel] format 1`] = ` -"Invalid left-hand side in assignment expression. (1:1) +"This experimental syntax requires enabling the parser plugin: "optionalChainingAssign". (1:1) > 1 | let?.[a] = 1 | ^" `; exports[`snippet: #1 [babel-ts] format 1`] = ` -"Invalid left-hand side in assignment expression. (1:1) +"This experimental syntax requires enabling the parser plugin: "optionalChainingAssign". (1:1) > 1 | let?.[a] = 1 | ^" `; diff --git a/tests/unit/__snapshots__/visitor-keys.js.snap b/tests/unit/__snapshots__/visitor-keys.js.snap index ca034cdaf..aa6243a80 100644 --- a/tests/unit/__snapshots__/visitor-keys.js.snap +++ b/tests/unit/__snapshots__/visitor-keys.js.snap @@ -373,6 +373,7 @@ exports[`visitor keys estree 1`] = ` ], "ImportExpression": [ "source", + "options", "attributes", ], "ImportNamespaceSpecifier": [ diff --git a/yarn.lock b/yarn.lock index deb2de14f..dc05d6b6c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -202,7 +202,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.22.19, @babel/helper-validator-identifier@npm:^7.22.5": +"@babel/helper-validator-identifier@npm:^7.22.20, @babel/helper-validator-identifier@npm:^7.22.5": version: 7.22.20 resolution: "@babel/helper-validator-identifier@npm:7.22.20" checksum: 136412784d9428266bcdd4d91c32bcf9ff0e8d25534a9d94b044f77fe76bc50f941a90319b05aafd1ec04f7d127cd57a179a3716009ff7f3412ef835ada95bdc @@ -238,12 +238,12 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:7.22.16, @babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.5": - version: 7.22.16 - resolution: "@babel/parser@npm:7.22.16" +"@babel/parser@npm:7.23.0, @babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.5": + version: 7.23.0 + resolution: "@babel/parser@npm:7.23.0" bin: parser: ./bin/babel-parser.js - checksum: 944c756b5bdeb07b9fec16ecef6b3c61aff9d4c4b924abadcf01afa1840a740b8e2357ae00482b5b37daad6d2bfd848c947f27ad65138d687b6fdc924bc59edd + checksum: 453fdf8b9e2c2b7d7b02139e0ce003d1af21947bbc03eb350fb248ee335c9b85e4ab41697ddbdd97079698de825a265e45a0846bb2ed47a2c7c1df833f42a354 languageName: node linkType: hard @@ -430,14 +430,14 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:7.22.19, @babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": - version: 7.22.19 - resolution: "@babel/types@npm:7.22.19" +"@babel/types@npm:7.23.0, @babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": + version: 7.23.0 + resolution: "@babel/types@npm:7.23.0" dependencies: "@babel/helper-string-parser": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.19 + "@babel/helper-validator-identifier": ^7.22.20 to-fast-properties: ^2.0.0 - checksum: 2d69740e69b55ba36ece0c17d5afb7b7213b34297157df39ef9ba24965aff677c56f014413052ecc5b2fbbf26910c63e5bb24a969df84d7a17153750cf75915e + checksum: 215fe04bd7feef79eeb4d33374b39909ce9cad1611c4135a4f7fdf41fe3280594105af6d7094354751514625ea92d0875aba355f53e86a92600f290e77b0e604 languageName: node linkType: hard @@ -7162,8 +7162,8 @@ __metadata: "@angular/compiler": 16.2.6 "@babel/code-frame": 7.22.13 "@babel/generator": 7.22.15 - "@babel/parser": 7.22.16 - "@babel/types": 7.22.19 + "@babel/parser": 7.23.0 + "@babel/types": 7.23.0 "@glimmer/reference": 0.84.3 "@glimmer/syntax": 0.84.3 "@iarna/toml": 2.2.5