Fix merge lexical environment to *always* respect prologue statements (#24602)

This commit is contained in:
Wesley Wigham 2018-06-04 10:34:38 -07:00 committed by GitHub
parent 886377f8d3
commit 779fa98475
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 46 additions and 1 deletions

View File

@ -1468,7 +1468,7 @@ namespace ts {
}
return isNodeArray(statements)
? setTextRange(createNodeArray(concatenate(declarations, statements)), statements)
? setTextRange(createNodeArray(prependStatements(statements.slice(), declarations)), statements)
: prependStatements(statements, declarations);
}

View File

@ -0,0 +1,12 @@
//// [destructuringTempOccursAfterPrologue.ts]
function test(p: any) {
'use strict';
p = { prop: p } = p;
}
//// [destructuringTempOccursAfterPrologue.js]
function test(p) {
'use strict';
var _a;
p = (_a = p, p = _a.prop, _a);
}

View File

@ -0,0 +1,12 @@
=== tests/cases/compiler/destructuringTempOccursAfterPrologue.ts ===
function test(p: any) {
>test : Symbol(test, Decl(destructuringTempOccursAfterPrologue.ts, 0, 0))
>p : Symbol(p, Decl(destructuringTempOccursAfterPrologue.ts, 0, 14))
'use strict';
p = { prop: p } = p;
>p : Symbol(p, Decl(destructuringTempOccursAfterPrologue.ts, 0, 14))
>prop : Symbol(prop, Decl(destructuringTempOccursAfterPrologue.ts, 2, 9))
>p : Symbol(p, Decl(destructuringTempOccursAfterPrologue.ts, 0, 14))
>p : Symbol(p, Decl(destructuringTempOccursAfterPrologue.ts, 0, 14))
}

View File

@ -0,0 +1,17 @@
=== tests/cases/compiler/destructuringTempOccursAfterPrologue.ts ===
function test(p: any) {
>test : (p: any) => void
>p : any
'use strict';
>'use strict' : "use strict"
p = { prop: p } = p;
>p = { prop: p } = p : any
>p : any
>{ prop: p } = p : any
>{ prop: p } : { prop: any; }
>prop : any
>p : any
>p : any
}

View File

@ -0,0 +1,4 @@
function test(p: any) {
'use strict';
p = { prop: p } = p;
}