-
-
Notifications
You must be signed in to change notification settings - Fork 5.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: wrap anonymous class expression within statement #15113
Conversation
Build successful! You can test your changes in the REPL here: https://babeljs.io/repl/build/53326/ |
t.staticBlock([t.toStatement(path.node, false)]), | ||
t.staticBlock([ | ||
t.toStatement(originalClass, true) || | ||
// If toStatement returns false, originalClass must be an anonymous ClassExpression, | ||
// because `export default @dec ...` has been handled in the export visitor before. | ||
t.expressionStatement(originalClass as t.ClassExpression), | ||
]), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it be better to fix in t.toStatement
?
Also unrelated to this PR, the type definition and implementation of t.toStatement
seem inconsistent.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it be better to fix in t.toStatement?
I don't know much context here but it seems that we intentionally fail toStatement
for anonymous class expression
babel/packages/babel-types/test/converters.js
Lines 131 to 138 in 53185ea
it("fail if class expression has no id", function () { | |
const node = t.classExpression(null, null, t.classBody([]), []); | |
expect(function () { | |
t.toStatement(node); | |
}).toThrow(Error); | |
expect(t.toStatement(node, /* ignore = */ true)).toBe(false); | |
t.assertClassExpression(node); | |
}); |
/cc @nicolo-ribaudo if you can shred some light here.
If we decided to overturn this behaviour, we still need the patch here until Babel 8 because the plugin does not depend on @babel/types
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good find, now I think it's fine.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe the reason is that t.toStatement
of a ClassExpression
should return a ClassDeclaration
, but converting a class expression without an ID is generally not safe.
@@ -531,7 +531,7 @@ export default declare((api, opts: Options) => { | |||
nodeWithoutSpread.right = t.identifier(refName); | |||
nodes.push(t.expressionStatement(nodeWithoutSpread)); | |||
nodes.push( | |||
t.toStatement( | |||
t.expressionStatement( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
toStatement
wraps assignment expression within expression statement.
<h3>Snyk has created this PR to upgrade multiple dependencies.</h3> 👯♂ The following dependencies are linked and will therefore be updated together. </br></br> :information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project. </br></br> Name | Versions | Released on :-------------|:-------------|:------------- **@babel/core**</br>from 7.19.6 to 7.20.2 | **1 version** ahead of your current version | **21 days ago**</br>on 2022-11-04 **@babel/preset-env**</br>from 7.19.4 to 7.20.2 | **1 version** ahead of your current version | **21 days ago**</br>on 2022-11-04 <details> <summary><b>Release notes</b></summary> <br/> <details> <summary>Package name: <b>@babel/core</b></summary> <ul> <li> <b>7.20.2</b> - <a href="https://snyk.io/redirect/github/babel/babel/releases/tag/v7.20.2">2022-11-04</a></br><h2>v7.20.2 (2022-11-04)</h2> <h4><g-emoji class="g-emoji" alias="bug" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f41b.png">🐛</g-emoji> Bug Fix</h4> <ul> <li><code>babel-core</code>, <code>babel-helper-create-class-features-plugin</code>, <code>babel-helper-module-transforms</code>, <code>babel-helper-plugin-utils</code>, <code>babel-helper-simple-access</code>, <code>babel-node</code>, <code>babel-plugin-transform-block-scoping</code>, <code>babel-plugin-transform-classes</code>, <code>babel-plugin-transform-react-constant-elements</code>, <code>babel-preset-env</code>, <code>babel-standalone</code>, <code>babel-types</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15124" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15124/hovercard">#15124</a> fix: <code>@ babel/node</code> repl and enable <code>no-use-before-define</code> rule (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> <li><code>babel-plugin-transform-typescript</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15121" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15121/hovercard">#15121</a> fix: <code>tsSatisfiesExpression</code> check with different duplicated <code>@ babel/types</code> versions (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> <li><code>babel-parser</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15094" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15094/hovercard">#15094</a> fix: <code>parser</code> typings for plugins (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> <li><code>babel-generator</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15118" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15118/hovercard">#15118</a> Improve printing of [no LineTerminator here] with comments (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-plugin-proposal-decorators</code>, <code>babel-plugin-proposal-object-rest-spread</code>, <code>babel-plugin-transform-jscript</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15113" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15113/hovercard">#15113</a> fix: wrap anonymous class expression within statement (<a href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li> </ul> </li> <li><code>babel-plugin-transform-destructuring</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15104" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15104/hovercard">#15104</a> fix: Destructuring exceptions <code>for ( let { } = 0 ; 0 ; ) </code> (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> </ul> <h4>Committers: 3</h4> <ul> <li>Huáng Jùnliàng (<a href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li> <li>Nicolò Ribaudo (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> <li><a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a></li> </ul> </li> <li> <b>7.19.6</b> - <a href="https://snyk.io/redirect/github/babel/babel/releases/tag/v7.19.6">2022-10-20</a></br><h2>v7.19.6 (2022-10-20)</h2> <p>Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lomirus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://snyk.io/redirect/github/lomirus">@ lomirus</a> for your first PR!</p> <h4><g-emoji class="g-emoji" alias="eyeglasses" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f453.png">👓</g-emoji> Spec Compliance</h4> <ul> <li><code>babel-plugin-proposal-decorators</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15059" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15059/hovercard">#15059</a> Ensure non-static decorators are applied when a class is instantiated. (<a href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li> </ul> </li> </ul> <h4><g-emoji class="g-emoji" alias="bug" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f41b.png">🐛</g-emoji> Bug Fix</h4> <ul> <li><code>babel-parser</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15062" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15062/hovercard">#15062</a> Fix parsing of block comments nested in flow comments (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15052" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15052/hovercard">#15052</a> fix: improve module block program location tracking (<a href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li> </ul> </li> <li><code>babel-plugin-transform-runtime</code>, <code>babel-runtime-corejs2</code>, <code>babel-runtime-corejs3</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15060" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15060/hovercard">#15060</a> Ensure <code>@ babel/runtime-corejs3/core-js/*.js</code> can be imported on Node.js 17+ (<a href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li> </ul> </li> <li><code>babel-preset-env</code>, <code>babel-traverse</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15043" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15043/hovercard">#15043</a> fix: preserve this for <code>super.*</code> template tags (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> </ul> <h4><g-emoji class="g-emoji" alias="nail_care" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f485.png">💅</g-emoji> Polish</h4> <ul> <li><code>babel-generator</code>, <code>babel-plugin-transform-flow-comments</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15037" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15037/hovercard">#15037</a> Improve generation of comments without location (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> </ul> <h4><g-emoji class="g-emoji" alias="memo" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f4dd.png">📝</g-emoji> Documentation</h4> <ul> <li><code>babel-standalone</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15055" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15055/hovercard">#15055</a> Fix missing <code>transformSync</code> function name (<a href="https://snyk.io/redirect/github/lomirus">@ lomirus</a>)</li> </ul> </li> </ul> <h4><g-emoji class="g-emoji" alias="house" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f3e0.png">🏠</g-emoji> Internal</h4> <ul> <li><code>babel-parser</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15056" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15056/hovercard">#15056</a> Use <code>startLoc.index</code> instead of carrying around <code>start</code> (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li>Other <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15035" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15035/hovercard">#15035</a> chore: Update yarn 3.2.4 (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> </ul> <h4><g-emoji class="g-emoji" alias="running_woman" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f3c3-2640.png">🏃♀️</g-emoji> Performance</h4> <ul> <li><code>babel-core</code>, <code>babel-standalone</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15023" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15023/hovercard">#15023</a> Don't bundle unnecessary plugins in <code>@ babel/standalone</code> (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> </ul> <h4>Committers: 4</h4> <ul> <li>Huáng Jùnliàng (<a href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li> <li>Lomírus (<a href="https://snyk.io/redirect/github/lomirus">@ lomirus</a>)</li> <li>Nicolò Ribaudo (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> <li><a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a></li> </ul> </li> </ul> from <a href="https://snyk.io/redirect/github/babel/babel/releases">@babel/core GitHub release notes</a> </details> <details> <summary>Package name: <b>@babel/preset-env</b></summary> <ul> <li> <b>7.20.2</b> - <a href="https://snyk.io/redirect/github/babel/babel/releases/tag/v7.20.2">2022-11-04</a></br><h2>v7.20.2 (2022-11-04)</h2> <h4><g-emoji class="g-emoji" alias="bug" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f41b.png">🐛</g-emoji> Bug Fix</h4> <ul> <li><code>babel-core</code>, <code>babel-helper-create-class-features-plugin</code>, <code>babel-helper-module-transforms</code>, <code>babel-helper-plugin-utils</code>, <code>babel-helper-simple-access</code>, <code>babel-node</code>, <code>babel-plugin-transform-block-scoping</code>, <code>babel-plugin-transform-classes</code>, <code>babel-plugin-transform-react-constant-elements</code>, <code>babel-preset-env</code>, <code>babel-standalone</code>, <code>babel-types</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15124" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15124/hovercard">#15124</a> fix: <code>@ babel/node</code> repl and enable <code>no-use-before-define</code> rule (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> <li><code>babel-plugin-transform-typescript</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15121" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15121/hovercard">#15121</a> fix: <code>tsSatisfiesExpression</code> check with different duplicated <code>@ babel/types</code> versions (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> <li><code>babel-parser</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15094" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15094/hovercard">#15094</a> fix: <code>parser</code> typings for plugins (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> <li><code>babel-generator</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15118" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15118/hovercard">#15118</a> Improve printing of [no LineTerminator here] with comments (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-plugin-proposal-decorators</code>, <code>babel-plugin-proposal-object-rest-spread</code>, <code>babel-plugin-transform-jscript</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15113" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15113/hovercard">#15113</a> fix: wrap anonymous class expression within statement (<a href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li> </ul> </li> <li><code>babel-plugin-transform-destructuring</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15104" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15104/hovercard">#15104</a> fix: Destructuring exceptions <code>for ( let { } = 0 ; 0 ; ) </code> (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> </ul> <h4>Committers: 3</h4> <ul> <li>Huáng Jùnliàng (<a href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li> <li>Nicolò Ribaudo (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> <li><a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a></li> </ul> </li> <li> <b>7.19.4</b> - <a href="https://snyk.io/redirect/github/babel/babel/releases/tag/v7.19.4">2022-10-10</a></br><h2>v7.19.4 (2022-10-10)</h2> <h4><g-emoji class="g-emoji" alias="eyeglasses" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f453.png">👓</g-emoji> Spec Compliance</h4> <ul> <li><code>babel-plugin-transform-block-scoping</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15019" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15019/hovercard">#15019</a> fix: check constant violation inside loops (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-helpers</code>, <code>babel-plugin-proposal-destructuring-private</code>, <code>babel-plugin-proposal-object-rest-spread</code>, <code>babel-plugin-transform-destructuring</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/14985" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/14985/hovercard">#14985</a> Disallow rest object destructuring of null/undefined (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> </ul> <h4><g-emoji class="g-emoji" alias="bug" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f41b.png">🐛</g-emoji> Bug Fix</h4> <ul> <li><code>babel-plugin-transform-react-jsx-development</code>, <code>babel-plugin-transform-typescript</code>, <code>babel-types</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/14109" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/14109/hovercard">#14109</a> Fix: properly scope variables in TSModuleBlock (<a href="https://snyk.io/redirect/github/The-x-Theorist">@ The-x-Theorist</a>)</li> </ul> </li> <li><code>babel-plugin-transform-destructuring</code>, <code>babel-plugin-transform-react-constant-elements</code>, <code>babel-traverse</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15027" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15027/hovercard">#15027</a> fix: mark <code>var</code> declarations in loops as not constant (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-helper-string-parser</code>, <code>babel-parser</code>, <code>babel-types</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/14964" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/14964/hovercard">#14964</a> Never throw for invalid escapes in tagged templates (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-generator</code>, <code>babel-parser</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/14980" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/14980/hovercard">#14980</a> Improve module expression parsing/printing (<a href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li> </ul> </li> <li><code>babel-plugin-transform-destructuring</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/14984" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/14984/hovercard">#14984</a> Fix holes handling in optimized array destructuring (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> </ul> <h4><g-emoji class="g-emoji" alias="nail_care" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f485.png">💅</g-emoji> Polish</h4> <ul> <li><code>babel-cli</code>, <code>babel-core</code>, <code>babel-generator</code>, <code>babel-helper-create-class-features-plugin</code>, <code>babel-helper-fixtures</code>, <code>babel-helper-simple-access</code>, <code>babel-helper-transform-fixture-test-runner</code>, <code>babel-helpers</code>, <code>babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression</code>, <code>babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining</code>, <code>babel-plugin-external-helpers</code>, <code>babel-plugin-proposal-async-do-expressions</code>, <code>babel-plugin-proposal-async-generator-functions</code>, <code>babel-plugin-proposal-class-properties</code>, <code>babel-plugin-proposal-class-static-block</code>, <code>babel-plugin-proposal-decorators</code>, <code>babel-plugin-proposal-destructuring-private</code>, <code>babel-plugin-proposal-do-expressions</code>, <code>babel-plugin-proposal-duplicate-named-capturing-groups-regex</code>, <code>babel-plugin-proposal-dynamic-import</code>, <code>babel-plugin-proposal-function-bind</code>, <code>babel-plugin-proposal-function-sent</code>, <code>babel-plugin-proposal-json-strings</code>, <code>babel-plugin-proposal-logical-assignment-operators</code>, <code>babel-plugin-proposal-nullish-coalescing-operator</code>, <code>babel-plugin-proposal-object-rest-spread</code>, <code>babel-plugin-proposal-optional-chaining</code>, <code>babel-plugin-proposal-partial-application</code>, <code>babel-plugin-proposal-pipeline-operator</code>, <code>babel-plugin-proposal-private-methods</code>, <code>babel-plugin-proposal-private-property-in-object</code>, <code>babel-plugin-proposal-record-and-tuple</code>, <code>babel-plugin-syntax-typescript</code>, <code>babel-plugin-transform-arrow-functions</code>, <code>babel-plugin-transform-async-to-generator</code>, <code>babel-plugin-transform-block-scoping</code>, <code>babel-plugin-transform-classes</code>, <code>babel-plugin-transform-computed-properties</code>, <code>babel-plugin-transform-destructuring</code>, <code>babel-plugin-transform-duplicate-keys</code>, <code>babel-plugin-transform-exponentiation-operator</code>, <code>babel-plugin-transform-flow-comments</code>, <code>babel-plugin-transform-flow-strip-types</code>, <code>babel-plugin-transform-for-of</code>, <code>babel-plugin-transform-function-name</code>, <code>babel-plugin-transform-jscript</code>, <code>babel-plugin-transform-modules-amd</code>, <code>babel-plugin-transform-modules-commonjs</code>, <code>babel-plugin-transform-modules-systemjs</code>, <code>babel-plugin-transform-modules-umd</code>, <code>babel-plugin-transform-new-target</code>, <code>babel-plugin-transform-object-super</code>, <code>babel-plugin-transform-parameters</code>, <code>babel-plugin-transform-proto-to-assign</code>, <code>babel-plugin-transform-react-constant-elements</code>, <code>babel-plugin-transform-react-inline-elements</code>, <code>babel-plugin-transform-react-jsx-development</code>, <code>babel-plugin-transform-react-jsx-self</code>, <code>babel-plugin-transform-react-jsx</code>, <code>babel-plugin-transform-react-pure-annotations</code>, <code>babel-plugin-transform-regenerator</code>, <code>babel-plugin-transform-runtime</code>, <code>babel-plugin-transform-shorthand-properties</code>, <code>babel-plugin-transform-spread</code>, <code>babel-plugin-transform-strict-mode</code>, <code>babel-plugin-transform-template-literals</code>, <code>babel-plugin-transform-typeof-symbol</code>, <code>babel-plugin-transform-typescript</code>, <code>babel-plugin-transform-unicode-escapes</code>, <code>babel-preset-env</code>, <code>babel-preset-react</code>, <code>babel-preset-typescript</code>, <code>babel-runtime-corejs2</code>, <code>babel-runtime-corejs3</code>, <code>babel-runtime</code>, <code>babel-traverse</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/14979" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/14979/hovercard">#14979</a> Improve comments generation (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> <li><code>babel-cli</code>, <code>babel-core</code>, <code>babel-generator</code>, <code>babel-helper-fixtures</code>, <code>babel-helper-transform-fixture-test-runner</code>, <code>babel-plugin-transform-destructuring</code>, <code>babel-plugin-transform-modules-commonjs</code>, <code>babel-traverse</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/14967" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/14967/hovercard">#14967</a> Improve source map generation (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> </ul> <h4><g-emoji class="g-emoji" alias="house" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f3e0.png">🏠</g-emoji> Internal</h4> <ul> <li>Other <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15001" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15001/hovercard">#15001</a> Run test262 again (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-compat-data</code>, <code>babel-preset-env</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/14976" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/14976/hovercard">#14976</a> Internally rename <code>proposal-*</code> to <code>transform-*</code> in preset-env (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> </ul> <h4>Committers: 5</h4> <ul> <li>Babel Bot (<a href="https://snyk.io/redirect/github/babel-bot">@ babel-bot</a>)</li> <li>Huáng Jùnliàng (<a href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li> <li>Nicolò Ribaudo (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> <li>Sneh Khatri (<a href="https://snyk.io/redirect/github/The-x-Theorist">@ The-x-Theorist</a>)</li> <li><a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a></li> </ul> </li> </ul> from <a href="https://snyk.io/redirect/github/babel/babel/releases">@babel/preset-env GitHub release notes</a> </details> </details> <hr/> **Note:** *You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs.* For more information: <img src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJlMmVmY2U2Zi04MDVjLTQwNzMtOWIyMS0wYWIzOGU2NzYzNWUiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImUyZWZjZTZmLTgwNWMtNDA3My05YjIxLTBhYjM4ZTY3NjM1ZSJ9fQ==" width="0" height="0"/> 🧐 [View latest project report](https://app.snyk.io/org/sandbox-2ba/project/852e6e4f-be96-45c8-b370-1060f5ebee55?utm_source=github&utm_medium=referral&page=upgrade-pr) 🛠 [Adjust upgrade PR settings](https://app.snyk.io/org/sandbox-2ba/project/852e6e4f-be96-45c8-b370-1060f5ebee55/settings/integration?utm_source=github&utm_medium=referral&page=upgrade-pr) 🔕 [Ignore this dependency or unsubscribe from future upgrade PRs](https://app.snyk.io/org/sandbox-2ba/project/852e6e4f-be96-45c8-b370-1060f5ebee55/settings/integration?pkg=@babel/core&pkg=@babel/preset-env&utm_source=github&utm_medium=referral&page=upgrade-pr#auto-dep-upgrades) <!--- (snyk:metadata:{"prId":"e2efce6f-805c-4073-9b21-0ab38e67635e","prPublicId":"e2efce6f-805c-4073-9b21-0ab38e67635e","dependencies":[{"name":"@babel/core","from":"7.19.6","to":"7.20.2"},{"name":"@babel/preset-env","from":"7.19.4","to":"7.20.2"}],"packageManager":"npm","type":"auto","projectUrl":"https://app.snyk.io/org/sandbox-2ba/project/852e6e4f-be96-45c8-b370-1060f5ebee55?utm_source=github&utm_medium=referral&page=upgrade-pr","projectPublicId":"852e6e4f-be96-45c8-b370-1060f5ebee55","env":"prod","prType":"upgrade","vulns":[],"issuesToFix":[],"upgrade":[],"upgradeInfo":{"versionsDiff":1,"publishedDate":"2022-11-04T18:51:11.563Z"},"templateVariants":[],"hasFixes":false,"isMajorUpgrade":false,"isBreakingChange":false,"priorityScoreList":[]}) ---> Co-authored-by: snyk-bot <snyk-bot@snyk.io>
Babel currently throws at decorated anonymous class expression, e.g.
@dec class { static {} }
because we invokedt.toStatement
. Here we wrap the class expression within an expression statement so that it can be fit in the static block that we used for class decorators.Before develop this issue I realize that Babel doesn't support the named evaluation for decorated class expression, for example
TypeScript injects
__setFunctionName
helper call before applying the decorator transform to ensure thatcontext.name
is always correct (microsoft/TypeScript#50820 (comment)). I will address this issue in a separate PR.