Cherry-pick PR #33219 into release-3.6 (#33222)

Component commits:
ffc82db6fc Fix visitLexicalEnvironment to properly merge hoisted declarations
This commit is contained in:
TypeScript Bot
2019-09-03 15:28:35 -07:00
committed by Ron Buckton
parent a109d14644
commit cd32df66ec
5 changed files with 18 additions and 14 deletions

View File

@@ -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());
}
/**