File tree Expand file tree Collapse file tree 2 files changed +20
-4
lines changed
src/transformation/visitors Expand file tree Collapse file tree 2 files changed +20
-4
lines changed Original file line number Diff line number Diff line change @@ -21,10 +21,14 @@ export function transformArrayBindingElement(
2121 } else if ( ts . isIdentifier ( name ) ) {
2222 return transformIdentifier ( context , name ) ;
2323 } else if ( ts . isBindingElement ( name ) ) {
24- // TODO: It should always be true when called from `transformVariableDeclaration`,
25- // but could be false from `transformForOfLuaIteratorStatement`.
26- assert ( ts . isIdentifier ( name . name ) ) ;
27- return transformIdentifier ( context , name . name ) ;
24+ if ( ts . isIdentifier ( name . name ) ) {
25+ return transformIdentifier ( context , name . name ) ;
26+ } else {
27+ // ts.isBindingPattern(name.name)
28+ const tempName = context . createTempNameForNode ( name . name ) ;
29+ context . addPrecedingStatements ( transformBindingPattern ( context , name . name , tempName ) ) ;
30+ return tempName ;
31+ }
2832 } else {
2933 assertNever ( name ) ;
3034 }
Original file line number Diff line number Diff line change @@ -279,6 +279,18 @@ test("forof destructing", () => {
279279 ` . expectToMatchJsResult ( ) ;
280280} ) ;
281281
282+ test ( "forof nested destructing" , ( ) => {
283+ util . testFunction `
284+ const obj = { a: [3], b: [5] };
285+ let result = 0;
286+
287+ for(const [k, [v]] of Object.entries(obj)){
288+ result += v;
289+ }
290+ return result;
291+ ` . expectToMatchJsResult ( ) ;
292+ } ) ;
293+
282294test ( "forof destructing with existing variables" , ( ) => {
283295 const input = [
284296 [ 1 , 2 ] ,
You can’t perform that action at this time.
0 commit comments