diff --git a/src/compiler/transformers/esnext.ts b/src/compiler/transformers/esnext.ts index d7519127ed9..2c89d082ae9 100644 --- a/src/compiler/transformers/esnext.ts +++ b/src/compiler/transformers/esnext.ts @@ -15,7 +15,6 @@ import { ExportSpecifier, Expression, firstOrUndefined, - forEachChild, ForOfStatement, ForStatement, GeneratedIdentifierFlags, @@ -37,7 +36,6 @@ import { isPrologueDirective, isSourceFile, isStatement, - isVariableDeclaration, isVariableDeclarationList, isVariableStatement, ModifierFlags, @@ -297,55 +295,7 @@ export function transformESNext(context: TransformationContext): (x: SourceFile /** * Collects all variable declarations that shadow a given identifier name in a statement. */ - function collectShadowingVariables(statement: Statement, shadowedName: string): VariableDeclaration[] { - const shadowingVars: VariableDeclaration[] = []; - - function visit(node: Node): void { - if (isVariableStatement(node)) { - for (const declaration of node.declarationList.declarations) { - if (isIdentifier(declaration.name) && declaration.name.escapedText === shadowedName) { - shadowingVars.push(declaration); - } - } - } - forEachChild(node, visit); - } - - visit(statement); - return shadowingVars; - } - /** - * Creates a visitor that renames shadowing variables to avoid conflicts. - */ - function createShadowingVariableRenamer(shadowedName: string): (node: Node) => VisitResult { - const renamingMap = new Map(); - - return function renameShadowingVariables(node: Node): VisitResult { - if (isVariableDeclaration(node) && isIdentifier(node.name) && node.name.escapedText === shadowedName) { - // Create a unique name for this shadowing variable - const uniqueName = factory.createUniqueName(shadowedName as string, GeneratedIdentifierFlags.Optimistic); - renamingMap.set(node.name.escapedText as string, uniqueName); - - return factory.updateVariableDeclaration( - node, - uniqueName, - node.exclamationToken, - node.type, - visitNode(node.initializer, renameShadowingVariables, isExpression) - ); - } - - if (isIdentifier(node)) { - const renamed = renamingMap.get(node.escapedText as string); - if (renamed) { - return renamed; - } - } - - return visitEachChild(node, renameShadowingVariables, context); - }; - } function visitForOfStatement(node: ForOfStatement) { if (isUsingVariableDeclarationList(node.initializer)) { @@ -356,11 +306,12 @@ export function transformESNext(context: TransformationContext): (x: SourceFile // produces a shallow transformation to: // // for (const x_1 of y) { - // using x = x; - // ... + // using x = x_1; + // { ... } // } // - // before handing the shallow transformation back to the visitor for an in-depth transformation. + // where the original loop body is wrapped in an additional block scope + // to handle shadowing variables naturally through block scoping. const forInitializer = node.initializer; const forDecl = firstOrUndefined(forInitializer.declarations) || factory.createVariableDeclaration(factory.createTempVariable(/*recordTempVariable*/ undefined)); @@ -370,18 +321,10 @@ export function transformESNext(context: TransformationContext): (x: SourceFile const usingVarList = factory.createVariableDeclarationList([usingVar], isAwaitUsing ? NodeFlags.AwaitUsing : NodeFlags.Using); const usingVarStatement = factory.createVariableStatement(/*modifiers*/ undefined, usingVarList); - // Check if the loop body contains shadowing variables and rename them if necessary - const shadowedName = isIdentifier(forDecl.name) ? forDecl.name.escapedText as string : undefined; - let transformedStatement = node.statement; - - if (shadowedName) { - const shadowingVars = collectShadowingVariables(node.statement, shadowedName); - if (shadowingVars.length > 0) { - // Apply the renaming visitor to the loop body - const renamer = createShadowingVariableRenamer(shadowedName); - transformedStatement = visitNode(node.statement, renamer, isStatement); - } - } + // 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); return visitNode( factory.updateForOfStatement( @@ -391,15 +334,10 @@ export function transformESNext(context: TransformationContext): (x: SourceFile factory.createVariableDeclaration(temp), ], NodeFlags.Const), node.expression, - isBlock(transformedStatement) ? - factory.updateBlock(transformedStatement, [ - usingVarStatement, - ...transformedStatement.statements, - ]) : - factory.createBlock([ - usingVarStatement, - transformedStatement, - ], /*multiLine*/ true), + factory.createBlock([ + usingVarStatement, + wrappedStatement, + ], /*multiLine*/ true), ), visitor, isStatement, diff --git a/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf(target=es2015).js b/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf(target=es2015).js index aa6dd826bd5..b994b9f538c 100644 --- a/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf(target=es2015).js +++ b/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf(target=es2015).js @@ -88,6 +88,8 @@ 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; diff --git a/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf(target=es2017).js b/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf(target=es2017).js index 18c95ea8e4f..e4a640e0ea9 100644 --- a/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf(target=es2017).js +++ b/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf(target=es2017).js @@ -76,6 +76,8 @@ 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; diff --git a/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf(target=es2022).js b/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf(target=es2022).js index ac74f897e70..05178b52df5 100644 --- a/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf(target=es2022).js +++ b/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf(target=es2022).js @@ -64,6 +64,8 @@ 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; diff --git a/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf(target=es5).js b/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf(target=es5).js index 4deda344151..6a7212e524a 100644 --- a/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf(target=es5).js +++ b/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf(target=es5).js @@ -128,6 +128,8 @@ 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(); diff --git a/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf.3(target=es5).js b/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf.3(target=es5).js index f929d3d0c6c..db43dff80b2 100644 --- a/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf.3(target=es5).js +++ b/tests/baselines/reference/awaitUsingDeclarationsInForAwaitOf.3(target=es5).js @@ -118,7 +118,9 @@ try { var env_1 = { stack: [], error: void 0, hasError: false }; try { var _e = __addDisposableResource(env_1, _e_1, true); - ; + { + ; + } } catch (e_2) { env_1.error = e_2; @@ -159,7 +161,9 @@ export function test() { case 3: _f.trys.push([3, 4, 5, 8]); _b = __addDisposableResource(env_2, _b_1, true); - ; + { + ; + } return [3 /*break*/, 8]; case 4: e_3 = _f.sent(); diff --git a/tests/baselines/reference/awaitUsingDeclarationsInForOf.1(target=es2015).js b/tests/baselines/reference/awaitUsingDeclarationsInForOf.1(target=es2015).js index 9ea879d8b74..842b9e4efab 100644 --- a/tests/baselines/reference/awaitUsingDeclarationsInForOf.1(target=es2015).js +++ b/tests/baselines/reference/awaitUsingDeclarationsInForOf.1(target=es2015).js @@ -77,6 +77,8 @@ 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; diff --git a/tests/baselines/reference/awaitUsingDeclarationsInForOf.1(target=es2017).js b/tests/baselines/reference/awaitUsingDeclarationsInForOf.1(target=es2017).js index 4d81c8b1f5f..1befc14d6d7 100644 --- a/tests/baselines/reference/awaitUsingDeclarationsInForOf.1(target=es2017).js +++ b/tests/baselines/reference/awaitUsingDeclarationsInForOf.1(target=es2017).js @@ -65,6 +65,8 @@ 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; diff --git a/tests/baselines/reference/awaitUsingDeclarationsInForOf.1(target=es2022).js b/tests/baselines/reference/awaitUsingDeclarationsInForOf.1(target=es2022).js index 4d81c8b1f5f..1befc14d6d7 100644 --- a/tests/baselines/reference/awaitUsingDeclarationsInForOf.1(target=es2022).js +++ b/tests/baselines/reference/awaitUsingDeclarationsInForOf.1(target=es2022).js @@ -65,6 +65,8 @@ 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; diff --git a/tests/baselines/reference/awaitUsingDeclarationsInForOf.1(target=es5).js b/tests/baselines/reference/awaitUsingDeclarationsInForOf.1(target=es5).js index b48951bbe6d..898f349ac8e 100644 --- a/tests/baselines/reference/awaitUsingDeclarationsInForOf.1(target=es5).js +++ b/tests/baselines/reference/awaitUsingDeclarationsInForOf.1(target=es5).js @@ -117,6 +117,8 @@ 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(); diff --git a/tests/baselines/reference/awaitUsingDeclarationsInForOf.5(target=es5).js b/tests/baselines/reference/awaitUsingDeclarationsInForOf.5(target=es5).js index 6b9e8308d45..bc1a01dae2d 100644 --- a/tests/baselines/reference/awaitUsingDeclarationsInForOf.5(target=es5).js +++ b/tests/baselines/reference/awaitUsingDeclarationsInForOf.5(target=es5).js @@ -107,7 +107,9 @@ for (var _i = 0, x_1 = x; _i < x_1.length; _i++) { var env_1 = { stack: [], error: void 0, hasError: false }; try { var _a = __addDisposableResource(env_1, _a_1, true); - ; + { + ; + } } catch (e_1) { env_1.error = e_1; @@ -135,7 +137,9 @@ export function test() { case 2: _b.trys.push([2, 3, 4, 7]); _a = __addDisposableResource(env_2, _a_2, true); - ; + { + ; + } return [3 /*break*/, 7]; case 3: e_2 = _b.sent(); diff --git a/tests/baselines/reference/usingDeclarationsInForAwaitOf(target=es2015).js b/tests/baselines/reference/usingDeclarationsInForAwaitOf(target=es2015).js index 52a0d20d1ef..75740f92dd8 100644 --- a/tests/baselines/reference/usingDeclarationsInForAwaitOf(target=es2015).js +++ b/tests/baselines/reference/usingDeclarationsInForAwaitOf(target=es2015).js @@ -87,6 +87,8 @@ 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; diff --git a/tests/baselines/reference/usingDeclarationsInForAwaitOf(target=es2017).js b/tests/baselines/reference/usingDeclarationsInForAwaitOf(target=es2017).js index 9d4fa33d6ef..1438154e3b8 100644 --- a/tests/baselines/reference/usingDeclarationsInForAwaitOf(target=es2017).js +++ b/tests/baselines/reference/usingDeclarationsInForAwaitOf(target=es2017).js @@ -77,6 +77,8 @@ 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; diff --git a/tests/baselines/reference/usingDeclarationsInForAwaitOf(target=es2022).js b/tests/baselines/reference/usingDeclarationsInForAwaitOf(target=es2022).js index 353ac015ec2..3466b933764 100644 --- a/tests/baselines/reference/usingDeclarationsInForAwaitOf(target=es2022).js +++ b/tests/baselines/reference/usingDeclarationsInForAwaitOf(target=es2022).js @@ -65,6 +65,8 @@ 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; diff --git a/tests/baselines/reference/usingDeclarationsInForAwaitOf(target=es5).js b/tests/baselines/reference/usingDeclarationsInForAwaitOf(target=es5).js index 31d3c5ab036..63b53693efb 100644 --- a/tests/baselines/reference/usingDeclarationsInForAwaitOf(target=es5).js +++ b/tests/baselines/reference/usingDeclarationsInForAwaitOf(target=es5).js @@ -123,6 +123,8 @@ 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; diff --git a/tests/baselines/reference/usingDeclarationsInForOf.1(target=es2015).js b/tests/baselines/reference/usingDeclarationsInForOf.1(target=es2015).js index 3ae4724bd55..974b23c8cc5 100644 --- a/tests/baselines/reference/usingDeclarationsInForOf.1(target=es2015).js +++ b/tests/baselines/reference/usingDeclarationsInForOf.1(target=es2015).js @@ -62,6 +62,8 @@ 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; diff --git a/tests/baselines/reference/usingDeclarationsInForOf.1(target=es2017).js b/tests/baselines/reference/usingDeclarationsInForOf.1(target=es2017).js index 3ae4724bd55..974b23c8cc5 100644 --- a/tests/baselines/reference/usingDeclarationsInForOf.1(target=es2017).js +++ b/tests/baselines/reference/usingDeclarationsInForOf.1(target=es2017).js @@ -62,6 +62,8 @@ 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; diff --git a/tests/baselines/reference/usingDeclarationsInForOf.1(target=es2022).js b/tests/baselines/reference/usingDeclarationsInForOf.1(target=es2022).js index 3ae4724bd55..974b23c8cc5 100644 --- a/tests/baselines/reference/usingDeclarationsInForOf.1(target=es2022).js +++ b/tests/baselines/reference/usingDeclarationsInForOf.1(target=es2022).js @@ -62,6 +62,8 @@ 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; diff --git a/tests/baselines/reference/usingDeclarationsInForOf.1(target=es5).js b/tests/baselines/reference/usingDeclarationsInForOf.1(target=es5).js index caec071966f..245ad434ecb 100644 --- a/tests/baselines/reference/usingDeclarationsInForOf.1(target=es5).js +++ b/tests/baselines/reference/usingDeclarationsInForOf.1(target=es5).js @@ -64,6 +64,8 @@ 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; diff --git a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2015).errors.txt b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2015).errors.txt index 198c10b1b75..9ff1e77bc34 100644 --- a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2015).errors.txt +++ b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2015).errors.txt @@ -20,4 +20,5 @@ main.ts(12,7): error TS2481: Cannot initialize outer scoped variable 'baz' in th ==== tslib.d.ts (0 errors) ==== export declare function __addDisposableResource(env: any, value: T, async: boolean): T; - export declare function __disposeResources(env: any): void; \ No newline at end of file + export declare function __disposeResources(env: any): void; + \ No newline at end of file diff --git a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2015).js b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2015).js index f7b53c21cc4..c7aa6cbd243 100644 --- a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2015).js +++ b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2015).js @@ -17,7 +17,8 @@ for (using baz of []) { //// [tslib.d.ts] export declare function __addDisposableResource(env: any, value: T, async: boolean): T; -export declare function __disposeResources(env: any): void; +export declare function __disposeResources(env: any): void; + //// [main.js] var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) { @@ -78,7 +79,9 @@ for (const foo_1 of []) { const env_1 = { stack: [], error: void 0, hasError: false }; try { const foo = __addDisposableResource(env_1, foo_1, false); - const foo_2 = new Foo(); + { + const foo = new Foo(); + } } catch (e_1) { env_1.error = e_1; @@ -92,7 +95,9 @@ for (const bar_1 of []) { const env_2 = { stack: [], error: void 0, hasError: false }; try { const bar = __addDisposableResource(env_2, bar_1, false); - let bar_2 = "test"; + { + let bar = "test"; + } } catch (e_2) { env_2.error = e_2; @@ -106,7 +111,9 @@ for (const baz_1 of []) { const env_3 = { stack: [], error: void 0, hasError: false }; try { const baz = __addDisposableResource(env_3, baz_1, false); - var baz_2 = 42; + { + var baz = 42; + } } catch (e_3) { env_3.error = e_3; diff --git a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2017).errors.txt b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2017).errors.txt index 198c10b1b75..9ff1e77bc34 100644 --- a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2017).errors.txt +++ b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2017).errors.txt @@ -20,4 +20,5 @@ main.ts(12,7): error TS2481: Cannot initialize outer scoped variable 'baz' in th ==== tslib.d.ts (0 errors) ==== export declare function __addDisposableResource(env: any, value: T, async: boolean): T; - export declare function __disposeResources(env: any): void; \ No newline at end of file + export declare function __disposeResources(env: any): void; + \ No newline at end of file diff --git a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2017).js b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2017).js index f7b53c21cc4..c7aa6cbd243 100644 --- a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2017).js +++ b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2017).js @@ -17,7 +17,8 @@ for (using baz of []) { //// [tslib.d.ts] export declare function __addDisposableResource(env: any, value: T, async: boolean): T; -export declare function __disposeResources(env: any): void; +export declare function __disposeResources(env: any): void; + //// [main.js] var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) { @@ -78,7 +79,9 @@ for (const foo_1 of []) { const env_1 = { stack: [], error: void 0, hasError: false }; try { const foo = __addDisposableResource(env_1, foo_1, false); - const foo_2 = new Foo(); + { + const foo = new Foo(); + } } catch (e_1) { env_1.error = e_1; @@ -92,7 +95,9 @@ for (const bar_1 of []) { const env_2 = { stack: [], error: void 0, hasError: false }; try { const bar = __addDisposableResource(env_2, bar_1, false); - let bar_2 = "test"; + { + let bar = "test"; + } } catch (e_2) { env_2.error = e_2; @@ -106,7 +111,9 @@ for (const baz_1 of []) { const env_3 = { stack: [], error: void 0, hasError: false }; try { const baz = __addDisposableResource(env_3, baz_1, false); - var baz_2 = 42; + { + var baz = 42; + } } catch (e_3) { env_3.error = e_3; diff --git a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2022).errors.txt b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2022).errors.txt index 198c10b1b75..9ff1e77bc34 100644 --- a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2022).errors.txt +++ b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2022).errors.txt @@ -20,4 +20,5 @@ main.ts(12,7): error TS2481: Cannot initialize outer scoped variable 'baz' in th ==== tslib.d.ts (0 errors) ==== export declare function __addDisposableResource(env: any, value: T, async: boolean): T; - export declare function __disposeResources(env: any): void; \ No newline at end of file + export declare function __disposeResources(env: any): void; + \ No newline at end of file diff --git a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2022).js b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2022).js index f7b53c21cc4..c7aa6cbd243 100644 --- a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2022).js +++ b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es2022).js @@ -17,7 +17,8 @@ for (using baz of []) { //// [tslib.d.ts] export declare function __addDisposableResource(env: any, value: T, async: boolean): T; -export declare function __disposeResources(env: any): void; +export declare function __disposeResources(env: any): void; + //// [main.js] var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) { @@ -78,7 +79,9 @@ for (const foo_1 of []) { const env_1 = { stack: [], error: void 0, hasError: false }; try { const foo = __addDisposableResource(env_1, foo_1, false); - const foo_2 = new Foo(); + { + const foo = new Foo(); + } } catch (e_1) { env_1.error = e_1; @@ -92,7 +95,9 @@ for (const bar_1 of []) { const env_2 = { stack: [], error: void 0, hasError: false }; try { const bar = __addDisposableResource(env_2, bar_1, false); - let bar_2 = "test"; + { + let bar = "test"; + } } catch (e_2) { env_2.error = e_2; @@ -106,7 +111,9 @@ for (const baz_1 of []) { const env_3 = { stack: [], error: void 0, hasError: false }; try { const baz = __addDisposableResource(env_3, baz_1, false); - var baz_2 = 42; + { + var baz = 42; + } } catch (e_3) { env_3.error = e_3; diff --git a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es5).errors.txt b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es5).errors.txt index 198c10b1b75..9ff1e77bc34 100644 --- a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es5).errors.txt +++ b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es5).errors.txt @@ -20,4 +20,5 @@ main.ts(12,7): error TS2481: Cannot initialize outer scoped variable 'baz' in th ==== tslib.d.ts (0 errors) ==== export declare function __addDisposableResource(env: any, value: T, async: boolean): T; - export declare function __disposeResources(env: any): void; \ No newline at end of file + export declare function __disposeResources(env: any): void; + \ No newline at end of file diff --git a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es5).js b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es5).js index 85ca43a0988..be5771ac0a6 100644 --- a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es5).js +++ b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=es5).js @@ -17,7 +17,8 @@ for (using baz of []) { //// [tslib.d.ts] export declare function __addDisposableResource(env: any, value: T, async: boolean): T; -export declare function __disposeResources(env: any): void; +export declare function __disposeResources(env: any): void; + //// [main.js] var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) { @@ -82,7 +83,9 @@ for (var _i = 0, _a = []; _i < _a.length; _i++) { var env_1 = { stack: [], error: void 0, hasError: false }; try { var foo = __addDisposableResource(env_1, foo_1, false); - var foo_2 = new Foo(); + { + var foo_2 = new Foo(); + } } catch (e_1) { env_1.error = e_1; @@ -97,7 +100,9 @@ for (var _b = 0, _c = []; _b < _c.length; _b++) { var env_2 = { stack: [], error: void 0, hasError: false }; try { var bar = __addDisposableResource(env_2, bar_1, false); - var bar_2 = "test"; + { + var bar_2 = "test"; + } } catch (e_2) { env_2.error = e_2; @@ -112,7 +117,9 @@ for (var _d = 0, _e = []; _d < _e.length; _d++) { var env_3 = { stack: [], error: void 0, hasError: false }; try { var baz_1 = __addDisposableResource(env_3, baz_1, false); - var baz_2 = 42; + { + var baz = 42; + } } catch (e_3) { env_3.error = e_3; diff --git a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=esnext).errors.txt b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=esnext).errors.txt index 198c10b1b75..9ff1e77bc34 100644 --- a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=esnext).errors.txt +++ b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=esnext).errors.txt @@ -20,4 +20,5 @@ main.ts(12,7): error TS2481: Cannot initialize outer scoped variable 'baz' in th ==== tslib.d.ts (0 errors) ==== export declare function __addDisposableResource(env: any, value: T, async: boolean): T; - export declare function __disposeResources(env: any): void; \ No newline at end of file + export declare function __disposeResources(env: any): void; + \ No newline at end of file diff --git a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=esnext).js b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=esnext).js index 2e74200a0d3..ac64cb95ffa 100644 --- a/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=esnext).js +++ b/tests/baselines/reference/usingDeclarationsInForOfShadowing(target=esnext).js @@ -17,7 +17,8 @@ for (using baz of []) { //// [tslib.d.ts] export declare function __addDisposableResource(env: any, value: T, async: boolean): T; -export declare function __disposeResources(env: any): void; +export declare function __disposeResources(env: any): void; + //// [main.js] class Foo {