diff --git a/changelog_unreleased/javascript/12567.md b/changelog_unreleased/javascript/12567.md new file mode 100644 index 000000000000..4e3b7a8d9a56 --- /dev/null +++ b/changelog_unreleased/javascript/12567.md @@ -0,0 +1,23 @@ +#### Update `meriyah` to fix several bugs (#12567 by @fisker, fixes in [`meriyah`](https://github.com/meriyah/meriyah/) by @3cp) + +Fixes bugs when parsing following valid code: + +```js +foo(await bar()); +``` + +```js +const regex = /.*/ms; +``` + +```js +const element =
{/w/.test(s)}
; +``` + +```js +class A extends B { + #privateMethod() { + super.method(); + } +} +``` diff --git a/package.json b/package.json index c0b782bcabd2..7a7339dc1b42 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "linguist-languages": "7.15.0", "lodash": "4.17.21", "mem": "9.0.2", - "meriyah": "4.2.0", + "meriyah": "4.2.1", "micromatch": "4.0.5", "minimist": "1.2.6", "n-readlines": "1.0.1", diff --git a/tests/format/js/classes/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/classes/__snapshots__/jsfmt.spec.js.snap index fbcbf12d7136..0587ffe17f9e 100644 --- a/tests/format/js/classes/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/js/classes/__snapshots__/jsfmt.spec.js.snap @@ -325,6 +325,28 @@ class B { ================================================================================ `; +exports[`super.js format 1`] = ` +====================================options===================================== +parsers: ["babel", "flow", "typescript"] +printWidth: 80 + | printWidth +=====================================input====================================== +class A extends B { + #a() { + super.x(); + } +} + +=====================================output===================================== +class A extends B { + #a() { + super.x(); + } +} + +================================================================================ +`; + exports[`ternary.js format 1`] = ` ====================================options===================================== parsers: ["babel", "flow", "typescript"] diff --git a/tests/format/js/classes/super.js b/tests/format/js/classes/super.js new file mode 100644 index 000000000000..03eadf541756 --- /dev/null +++ b/tests/format/js/classes/super.js @@ -0,0 +1,5 @@ +class A extends B { + #a() { + super.x(); + } +} diff --git a/tests/format/js/regex/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/regex/__snapshots__/jsfmt.spec.js.snap index 3413b6890051..aa295e37c9e7 100644 --- a/tests/format/js/regex/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/js/regex/__snapshots__/jsfmt.spec.js.snap @@ -28,6 +28,22 @@ printWidth: 80 ================================================================================ `; +exports[`multiple-flags.js format 1`] = ` +====================================options===================================== +parsers: ["babel", "flow", "typescript"] +printWidth: 80 + | printWidth +=====================================input====================================== +/.*/ms; +/.*/my; + +=====================================output===================================== +/.*/ms; +/.*/my; + +================================================================================ +`; + exports[`test.js format 1`] = ` ====================================options===================================== parsers: ["babel", "flow", "typescript"] diff --git a/tests/format/js/regex/multiple-flags.js b/tests/format/js/regex/multiple-flags.js new file mode 100644 index 000000000000..f5a04f859c24 --- /dev/null +++ b/tests/format/js/regex/multiple-flags.js @@ -0,0 +1,2 @@ +/.*/ms; +/.*/my; diff --git a/tests/format/js/top-level-await/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/top-level-await/__snapshots__/jsfmt.spec.js.snap index 04b2cd75cf92..249b632a6672 100644 --- a/tests/format/js/top-level-await/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/js/top-level-await/__snapshots__/jsfmt.spec.js.snap @@ -13,3 +13,19 @@ await something(); ================================================================================ `; + +exports[`in-expression.js format 1`] = ` +====================================options===================================== +parsers: ["babel", "typescript"] +printWidth: 80 + | printWidth +=====================================input====================================== +call( +await something() +) + +=====================================output===================================== +call(await something()); + +================================================================================ +`; diff --git a/tests/format/js/top-level-await/in-expression.js b/tests/format/js/top-level-await/in-expression.js new file mode 100644 index 000000000000..d70f915226c0 --- /dev/null +++ b/tests/format/js/top-level-await/in-expression.js @@ -0,0 +1,3 @@ +call( +await something() +) diff --git a/tests/format/jsx/jsx/__snapshots__/jsfmt.spec.js.snap b/tests/format/jsx/jsx/__snapshots__/jsfmt.spec.js.snap index 764b7cf2eb4b..e8776bdc005d 100644 --- a/tests/format/jsx/jsx/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/jsx/jsx/__snapshots__/jsfmt.spec.js.snap @@ -5076,6 +5076,94 @@ singleQuote: true ================================================================================ `; +exports[`regex.js - {"singleQuote":false,"jsxSingleQuote":false} format 1`] = ` +====================================options===================================== +jsxSingleQuote: false +parsers: ["flow", "babel", "typescript"] +printWidth: 80 +singleQuote: false + | printWidth +=====================================input====================================== +x =