-
-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Improve comments generation #14979
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
Improve comments generation #14979
Conversation
| expect("\u2028".length).toBe(1); | ||
| expect("\u2028").toBe("\u2028"); | ||
| expect("before\u2028after".length).toBe(12); | ||
| expect("before\u2028after").toBe("before\u2028after"); // ^ That's a U+2028 LINE SEPARATOR UTF-16 char (between 'before' and 'after') | ||
| expect("before\u2028after").toBe("before\u2028after"); | ||
| // ^ That's a U+2028 LINE SEPARATOR UTF-16 char (between 'before' and 'after') | ||
|
|
||
| expect("\u2028".length).toBe(1); | ||
| expect("\u2028").toBe("\u2028"); // ^ That's a U+2028 LINE SEPARATOR UTF-16 char | ||
| expect("\u2028").toBe("\u2028"); | ||
| // ^ That's a U+2028 LINE SEPARATOR UTF-16 char | ||
|
|
||
| expect("\ ".length).toBe(0); | ||
| expect("\ ").toBe(""); // ^ That's a U+2028 LINE SEPARATOR UTF-16 char | ||
| expect("\ ").toBe(""); | ||
| // ^ That's a U+2028 LINE SEPARATOR UTF-16 char | ||
|
|
||
| expect("\\\u2028".length).toBe(2); | ||
| expect("\\\u2028").toBe("\\\u2028"); // ^ That's a U+2028 LINE SEPARATOR UTF-16 char | ||
| expect("\\\u2028").toBe("\\\u2028"); | ||
| // ^ That's a U+2028 LINE SEPARATOR UTF-16 char | ||
|
|
||
| expect("\\\ ".length).toBe(1); | ||
| expect("\\\ ").toBe("\\"); // ^ That's a U+2028 LINE SEPARATOR UTF-16 char | ||
| expect("\\\ ").toBe("\\"); | ||
| // ^ That's a U+2028 LINE SEPARATOR UTF-16 char | ||
|
|
||
| expect("\\\\\u2028".length).toBe(3); | ||
| expect("\\\\\u2028").toBe("\\\\\u2028"); // ^ That's a U+2028 LINE SEPARATOR UTF-16 char | ||
| expect("\\\\\u2028").toBe("\\\\\u2028"); | ||
| // ^ That's a U+2028 LINE SEPARATOR UTF-16 char |
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.
Exciting change.
|
Build successful! You can test your changes in the REPL here: https://babeljs.io/repl/build/53120/ |
02d54d3 to
3550688
Compare
|
|
||
| if (!this.endsWith(charCodes.lineFeed)) this.newline(); | ||
| const newline = node.body.length ? 2 : 1; | ||
| const len = node.directives?.length || 0; |
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.
Nit: move newline inside the if statement, and rename len to directivesLen. I was initially confused to why we would need a newline in an empty block, until I realized that it's because the block contains directives.
Also, || 0 is not needed.
| this.space(); | ||
| return; | ||
| } | ||
| // if (this.format.retainLines || this.format.compact) return; |
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.
Is this code not needed anymore? If so, can yo write in a comment why are we commenting it out rather than just deleting it?
It seems like newline is just an alias for newlineRelative, why don't we only use one of them?
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.
At first I wanted to make newlineRelative a new method, which would be clearer, and make newline another method with nuances, then switch most of the original usage to newlineRelative. Later it seemed unnecessary, and now I removed newline and renamed newlineRelative to that.
| if (this._buf.hasContent()) { | ||
| if (!leading) lines++; // always include at least a single line after | ||
| if (opts.addNewlines) lines += opts.addNewlines(leading, node) || 0; | ||
| // let lines = 0; |
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.
Also here, why do we keep the old code?
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.
This is the original logic of wrapping lines according to the node layout, and I'm a little hesitant to comment or remove them. It might be useful if someone wants to enhance or reference in the future, but not sure if that will happen.🤦♂️
| ) => {}; | ||
| async ( /** @type {any} */arg) => {}; | ||
| async (arg /* trailing */) => {}; | ||
| async ( /** @type {any} */arg /* trailing */) => {}; |
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.
Nice!
| var t = 20; /* | ||
| * This is trailing comment | ||
| */ |
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.
The indentation here looks off 🤔 Is it possible to align the *s?
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.
It seems to have exposed two previous issues, one from a regression from the last time I improved performance, and one that was always there, and now they're both fixed!
Also I found out that indenting var affects leadingComments.
Now the VariableDeclarator is no longer aligned, but indented by 2 spaces.
Now the indentation of var a={x},b={y} has been greatly improved, which I think looks good.
|
|
||
| i -= this._buf.getNewlineCount(); | ||
|
|
||
| if (i <= 0) return i; |
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.
Nit: this line is redundant.
| node: t.Node | null, | ||
| parent?: t.Node, | ||
| noLineTerminator?: boolean, | ||
| trailingCommentsLineOffset?: number, // trailingCommentsLineOffset also used to check if called from printJoin |
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.
Can you leave a note that trailingCommentsLineOffset won't be respected if noLineTerminator or this._noLineTerminator is true?
| var test = { | ||
| /** | ||
| * Before bracket init | ||
| */ | ||
| ["a"]: "1", | ||
| [/* | ||
| * Inside bracket init | ||
| */ | ||
| "b"]: "2" | ||
| }, | ||
| ok = 42; | ||
| /** | ||
| * Before bracket init | ||
| */ | ||
| ["a"]: "1", | ||
| [ | ||
| /* | ||
| * Inside bracket init | ||
| */ | ||
| "b"]: "2", | ||
| [ | ||
| /** | ||
| * Multi-line | ||
| */ | ||
| "c"]: "3" | ||
| }, | ||
| ok = 42; |
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.
looks great.
| // Avoid propagating failures to Promises returned by later | ||
| // invocations of the iterator. | ||
| callInvokeWithMethodAndArg, | ||
| ) |
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.
real world. :)
|
|
||
| return babelHelpers.createClass(Foo); | ||
| }(Bar); | ||
| "use strict"; |
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.
This is looks very unusual, the widely used convention is that it should be indented only by 1 step:
var f = function () {
something;
};however, it's true that with multiple functions it looks better by indenting more:
var f = function () {
something;
},
g = function () {
something;
};could we keep the original indentation if node.declarators.length === 1, and only use the more indented version when there are multiple declarators?
|
Maybe we could try reducing a bit the diff, with heuristics like "if a function declaration, method, or variable declaration doesn't have any trailing comments, force an empty newline after it". Otherwise LGTM (I cannot ✔️ because the diff is too big and the page freezes when I try to approve) |
|
I thought about this at first, but maybe it's a little difficult or doesn't work very well. Function calls I think it's nice to have no blank lines. And function declarations are fine for no empty lines without decorators, but it would also be a bit ugly if we only wrap empty functions with decorators, and empty functions with decorators should be negligible in the real world. Previously variable declarations would be merged consecutively and only add a blank line. var a;
var b;
var c;
var d;
var e;var a;
var b;
var c;
var d;
var e;What do you think about this? |
|
Good catch, fixed, thanks! |
nicolo-ribaudo
left a comment
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 tried adding back spaces around function/class declarations and class methods: nicolo-ribaudo#8. I think it looks better, but it only reduced the changed files count by ~10%. Feel free to either add it to this PR or to ignore it.
b058e3b to
aa6a8fd
Compare
|
Merging with a single ✔️, since it will be a while before that @JLHwung is back and I'm waiting for this to be merged to release and fix the ❌ on main 😅 |
|
For anyone who wants to see this PR in the future. Although not as convenient, it is at least viewable.🙂 |
|
hey I'm now experiencing issues after this. -/** CPU stores resource units and cpu config attributes */
-export interface CPU {
+/** CPU stores resource units and cpu config attributes */export interface CPU {
units: ResourceValue;
attributes: Attribute[];
}Is there an easy fix to add newlines for |
|
@pyramation This looks like a bug, can you provide a repl/repo to reproduce? |
|
sure for now I'll leave more info here. It is a leadingComment ( /** CPU stores resource units and cpu config attributes */
export interface CPU {
units: ResourceValue;
attributes: Attribute[];
}{
"type": "File",
"errors": [],
"program": {
"type": "Program",
"sourceType": "module",
"interpreter": null,
"body": [
{
"type": "ExportNamedDeclaration",
"exportKind": "type",
"specifiers": [],
"source": null,
"declaration": {
"type": "TSInterfaceDeclaration",
"id": {
"type": "Identifier",
"name": "CPU"
},
"body": {
"type": "TSInterfaceBody",
"body": [
{
"type": "TSPropertySignature",
"key": {
"type": "Identifier",
"name": "units"
},
"computed": false,
"typeAnnotation": {
"type": "TSTypeAnnotation",
"typeAnnotation": {
"type": "TSTypeReference",
"typeName": {
"type": "Identifier",
"name": "ResourceValue"
}
}
}
},
{
"type": "TSPropertySignature",
"key": {
"type": "Identifier",
"name": "attributes"
},
"computed": false,
"typeAnnotation": {
"type": "TSTypeAnnotation",
"typeAnnotation": {
"type": "TSArrayType",
"elementType": {
"type": "TSTypeReference",
"typeName": {
"type": "Identifier",
"name": "Attribute"
}
}
}
}
}
]
}
},
"leadingComments": [
{
"type": "CommentBlock",
"value": "* CPU stores resource units and cpu config attributes "
}
]
}
],
"directives": []
},
"comments": [
{
"type": "CommentBlock",
"value": "* CPU stores resource units and cpu config attributes "
}
]
} |
|
@liuxingbaoyu I made a repo for repro: the breaking commit is when I upgrade babel: pyramation/babel-issue-15036@e298022 You can see leading comments lose their trailing newlines |
|
@pyramation Ok thanks, i will look into it. |
<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 <[email protected]>







This PR affects test snapshots as well as #14967, so I hope to release them together.(Perhaps the next patch release, we've had enough changes in this release that delaying these two avoids an unexpectedly large number of regressions that can't be dealt with on the fly.)
Please mainly check the first commit or use vscode for review.
I refactored the line break logic.
Multiple newlines are now no longer added except for comments.
There is at most one blank line before and after the comment.
Existing newlines are automatically subtracted when
newlineis called multiple times.This keeps compiled comments well-formed (especially
jsdoc,flow, certain directives likedisable-next-line,disable-this-line).Also I stopped adding extra line breaks depending on the node layout, so overall there is no performance hit and a small improvement.
The result looked fine to me and even got better looking in many files.
Because our newline addition logic has not been modified for a long time, it can only be adapted to several basic nodes.
In addition, I recommend viewing the effect through this file, which is very beautiful!
packages/babel-helpers/src/helpers/regeneratorRuntime.js(#14979)The generator now uses
node.locandcomment.loc.The benefit is that it does not depend on a specific node type, and has good sustainability for the future.
The possible downside is that
node.locis used, which may prevent us from streamlining it in the future (e.g. makingnode.locoptional generation) it.But
node.locshould not be completely removed in the future, so this is all good.