Fix empty block generation in using declaration for-of loops and remove obsolete comment

Co-authored-by: weswigham <2932786+weswigham@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2025-06-25 20:46:24 +00:00
parent 8f3df02544
commit 0b3bf33a8e
17 changed files with 12 additions and 44 deletions

View File

@ -292,11 +292,6 @@ export function transformESNext(context: TransformationContext): (x: SourceFile
return visitEachChild(node, visitor, context);
}
/**
* Collects all variable declarations that shadow a given identifier name in a statement.
*/
function visitForOfStatement(node: ForOfStatement) {
if (isUsingVariableDeclarationList(node.initializer)) {
// given:
@ -322,9 +317,17 @@ export function transformESNext(context: TransformationContext): (x: SourceFile
const usingVarStatement = factory.createVariableStatement(/*modifiers*/ undefined, usingVarList);
// Wrap the original loop body in an additional block scope to handle shadowing
const wrappedStatement = isBlock(node.statement) ?
node.statement :
factory.createBlock([node.statement], /*multiLine*/ true);
// Don't create an extra block if the original statement is empty
const isEmptyBlock = isBlock(node.statement) && node.statement.statements.length === 0;
const shouldWrapInBlock = !isEmptyBlock;
const statements: Statement[] = [usingVarStatement];
if (shouldWrapInBlock) {
const wrappedStatement = isBlock(node.statement) ?
node.statement :
factory.createBlock([node.statement], /*multiLine*/ true);
statements.push(wrappedStatement);
}
return visitNode(
factory.updateForOfStatement(
@ -334,10 +337,7 @@ export function transformESNext(context: TransformationContext): (x: SourceFile
factory.createVariableDeclaration(temp),
], NodeFlags.Const),
node.expression,
factory.createBlock([
usingVarStatement,
wrappedStatement,
], /*multiLine*/ true),
factory.createBlock(statements, /*multiLine*/ true),
),
visitor,
isStatement,

View File

@ -88,8 +88,6 @@ function main() {
const env_1 = { stack: [], error: void 0, hasError: false };
try {
const d1 = __addDisposableResource(env_1, d1_1, true);
{
}
}
catch (e_2) {
env_1.error = e_2;

View File

@ -76,8 +76,6 @@ async function main() {
const env_1 = { stack: [], error: void 0, hasError: false };
try {
const d1 = __addDisposableResource(env_1, d1_1, true);
{
}
}
catch (e_2) {
env_1.error = e_2;

View File

@ -64,8 +64,6 @@ async function main() {
const env_1 = { stack: [], error: void 0, hasError: false };
try {
const d1 = __addDisposableResource(env_1, d1_1, true);
{
}
}
catch (e_1) {
env_1.error = e_1;

View File

@ -128,8 +128,6 @@ function main() {
case 3:
_j.trys.push([3, 4, 5, 8]);
d1 = __addDisposableResource(env_1, d1_1, true);
{
}
return [3 /*break*/, 8];
case 4:
e_1 = _j.sent();

View File

@ -77,8 +77,6 @@ function main() {
const env_1 = { stack: [], error: void 0, hasError: false };
try {
const d1 = __addDisposableResource(env_1, d1_1, true);
{
}
}
catch (e_1) {
env_1.error = e_1;

View File

@ -65,8 +65,6 @@ async function main() {
const env_1 = { stack: [], error: void 0, hasError: false };
try {
const d1 = __addDisposableResource(env_1, d1_1, true);
{
}
}
catch (e_1) {
env_1.error = e_1;

View File

@ -65,8 +65,6 @@ async function main() {
const env_1 = { stack: [], error: void 0, hasError: false };
try {
const d1 = __addDisposableResource(env_1, d1_1, true);
{
}
}
catch (e_1) {
env_1.error = e_1;

View File

@ -117,8 +117,6 @@ function main() {
case 2:
_d.trys.push([2, 3, 4, 7]);
d1 = __addDisposableResource(env_1, d1_1, true);
{
}
return [3 /*break*/, 7];
case 3:
e_1 = _d.sent();

View File

@ -87,8 +87,6 @@ function main() {
const env_1 = { stack: [], error: void 0, hasError: false };
try {
const d1 = __addDisposableResource(env_1, d1_1, false);
{
}
}
catch (e_2) {
env_1.error = e_2;

View File

@ -77,8 +77,6 @@ async function main() {
const env_1 = { stack: [], error: void 0, hasError: false };
try {
const d1 = __addDisposableResource(env_1, d1_1, false);
{
}
}
catch (e_2) {
env_1.error = e_2;

View File

@ -65,8 +65,6 @@ async function main() {
const env_1 = { stack: [], error: void 0, hasError: false };
try {
const d1 = __addDisposableResource(env_1, d1_1, false);
{
}
}
catch (e_1) {
env_1.error = e_1;

View File

@ -123,8 +123,6 @@ function main() {
env_1 = { stack: [], error: void 0, hasError: false };
try {
d1 = __addDisposableResource(env_1, d1_1, false);
{
}
}
catch (e_2) {
env_1.error = e_2;

View File

@ -62,8 +62,6 @@ for (const d1_1 of [{ [Symbol.dispose]() { } }, null, undefined]) {
const env_1 = { stack: [], error: void 0, hasError: false };
try {
const d1 = __addDisposableResource(env_1, d1_1, false);
{
}
}
catch (e_1) {
env_1.error = e_1;

View File

@ -62,8 +62,6 @@ for (const d1_1 of [{ [Symbol.dispose]() { } }, null, undefined]) {
const env_1 = { stack: [], error: void 0, hasError: false };
try {
const d1 = __addDisposableResource(env_1, d1_1, false);
{
}
}
catch (e_1) {
env_1.error = e_1;

View File

@ -62,8 +62,6 @@ for (const d1_1 of [{ [Symbol.dispose]() { } }, null, undefined]) {
const env_1 = { stack: [], error: void 0, hasError: false };
try {
const d1 = __addDisposableResource(env_1, d1_1, false);
{
}
}
catch (e_1) {
env_1.error = e_1;

View File

@ -64,8 +64,6 @@ for (var _i = 0, _b = [(_a = {}, _a[Symbol.dispose] = function () { }, _a), null
var env_1 = { stack: [], error: void 0, hasError: false };
try {
var d1 = __addDisposableResource(env_1, d1_1, false);
{
}
}
catch (e_1) {
env_1.error = e_1;