mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-07 23:08:20 -06:00
Component commits: ffc82db6fc Fix visitLexicalEnvironment to properly merge hoisted declarations
This commit is contained in:
parent
a109d14644
commit
cd32df66ec
@ -141,11 +141,8 @@ namespace ts {
|
||||
export function visitLexicalEnvironment(statements: NodeArray<Statement>, visitor: Visitor, context: TransformationContext, start?: number, ensureUseStrict?: boolean) {
|
||||
context.startLexicalEnvironment();
|
||||
statements = visitNodes(statements, visitor, isStatement, start);
|
||||
if (ensureUseStrict && !startsWithUseStrict(statements)) {
|
||||
statements = setTextRange(createNodeArray([createExpressionStatement(createLiteral("use strict")), ...statements]), statements);
|
||||
}
|
||||
const declarations = context.endLexicalEnvironment();
|
||||
return setTextRange(createNodeArray(concatenate(declarations, statements)), statements);
|
||||
if (ensureUseStrict) statements = ts.ensureUseStrict(statements); // tslint:disable-line no-unnecessary-qualifier
|
||||
return mergeLexicalEnvironment(statements, context.endLexicalEnvironment());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
//// [instanceMemberWithComputedPropertyName.ts]
|
||||
// https://github.com/microsoft/TypeScript/issues/30953
|
||||
"use strict";
|
||||
const x = 1;
|
||||
class C {
|
||||
[x] = true;
|
||||
@ -9,8 +10,9 @@ class C {
|
||||
}
|
||||
|
||||
//// [instanceMemberWithComputedPropertyName.js]
|
||||
var _a;
|
||||
// https://github.com/microsoft/TypeScript/issues/30953
|
||||
"use strict";
|
||||
var _a;
|
||||
var x = 1;
|
||||
var C = /** @class */ (function () {
|
||||
function C() {
|
||||
|
||||
@ -1,20 +1,21 @@
|
||||
=== tests/cases/conformance/classes/propertyMemberDeclarations/instanceMemberWithComputedPropertyName.ts ===
|
||||
// https://github.com/microsoft/TypeScript/issues/30953
|
||||
"use strict";
|
||||
const x = 1;
|
||||
>x : Symbol(x, Decl(instanceMemberWithComputedPropertyName.ts, 1, 5))
|
||||
>x : Symbol(x, Decl(instanceMemberWithComputedPropertyName.ts, 2, 5))
|
||||
|
||||
class C {
|
||||
>C : Symbol(C, Decl(instanceMemberWithComputedPropertyName.ts, 1, 12))
|
||||
>C : Symbol(C, Decl(instanceMemberWithComputedPropertyName.ts, 2, 12))
|
||||
|
||||
[x] = true;
|
||||
>[x] : Symbol(C[x], Decl(instanceMemberWithComputedPropertyName.ts, 2, 9))
|
||||
>x : Symbol(x, Decl(instanceMemberWithComputedPropertyName.ts, 1, 5))
|
||||
>[x] : Symbol(C[x], Decl(instanceMemberWithComputedPropertyName.ts, 3, 9))
|
||||
>x : Symbol(x, Decl(instanceMemberWithComputedPropertyName.ts, 2, 5))
|
||||
|
||||
constructor() {
|
||||
const { a, b } = { a: 1, b: 2 };
|
||||
>a : Symbol(a, Decl(instanceMemberWithComputedPropertyName.ts, 5, 15))
|
||||
>b : Symbol(b, Decl(instanceMemberWithComputedPropertyName.ts, 5, 18))
|
||||
>a : Symbol(a, Decl(instanceMemberWithComputedPropertyName.ts, 5, 26))
|
||||
>b : Symbol(b, Decl(instanceMemberWithComputedPropertyName.ts, 5, 32))
|
||||
>a : Symbol(a, Decl(instanceMemberWithComputedPropertyName.ts, 6, 15))
|
||||
>b : Symbol(b, Decl(instanceMemberWithComputedPropertyName.ts, 6, 18))
|
||||
>a : Symbol(a, Decl(instanceMemberWithComputedPropertyName.ts, 6, 26))
|
||||
>b : Symbol(b, Decl(instanceMemberWithComputedPropertyName.ts, 6, 32))
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
=== tests/cases/conformance/classes/propertyMemberDeclarations/instanceMemberWithComputedPropertyName.ts ===
|
||||
// https://github.com/microsoft/TypeScript/issues/30953
|
||||
"use strict";
|
||||
>"use strict" : "use strict"
|
||||
|
||||
const x = 1;
|
||||
>x : 1
|
||||
>1 : 1
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
// https://github.com/microsoft/TypeScript/issues/30953
|
||||
"use strict";
|
||||
const x = 1;
|
||||
class C {
|
||||
[x] = true;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user