@@ -239,7 +239,7 @@ describe("LuaIterable with array value type", () => {
239239 test ( "basic destructuring" , ( ) => {
240240 util . testFunction `
241241 ${ testIterable }
242- const results: Array<string[]> = [];
242+ const results = [];
243243 for (const [x, y] of testIterable()) {
244244 results.push([x, y]);
245245 }
@@ -252,7 +252,7 @@ describe("LuaIterable with array value type", () => {
252252 test ( "destructure with external control variable" , ( ) => {
253253 util . testFunction `
254254 ${ testIterable }
255- const results: Array<string[]> = [];
255+ const results = []
256256 let x: string, y: string;
257257 for ([x, y] of testIterable()) {
258258 results.push([x, y]);
@@ -326,8 +326,8 @@ describe("LuaIterable with array value type", () => {
326326
327327describe ( "LuaIterable with LuaMultiReturn value type" , ( ) => {
328328 const testIterable = `
329- function testIterable(this: void): LuaIterable<LuaMultiReturn<string[ ]>> {
330- const strsArray = [["a1", "a2" ], ["b1", "b2" ], ["c1", "c2" ]];
329+ function testIterable(this: void): LuaIterable<LuaMultiReturn<[string, {a: string} ]>> {
330+ const strsArray = [["a1", {a: "a"} ], ["b1", {a: "b"} ], ["c1", {a: "c"} ]];
331331 let i = 0;
332332 return (() => {
333333 const strs = strsArray[i++];
@@ -338,15 +338,15 @@ describe("LuaIterable with LuaMultiReturn value type", () => {
338338 }
339339 ` ;
340340 const testResults = [
341- [ "a1" , "a2" ] ,
342- [ "b1" , "b2" ] ,
343- [ "c1" , "c2" ] ,
341+ [ "a1" , { a : "a" } ] ,
342+ [ "b1" , { a : "b" } ] ,
343+ [ "c1" , { a : "c" } ] ,
344344 ] ;
345345
346346 test ( "basic destructuring" , ( ) => {
347347 util . testFunction `
348348 ${ testIterable }
349- const results: Array<string[]> = [];
349+ const results = [];
350350 for (const [x, y] of testIterable()) {
351351 results.push([x, y]);
352352 }
@@ -359,8 +359,8 @@ describe("LuaIterable with LuaMultiReturn value type", () => {
359359 test ( "destructure with external control variable" , ( ) => {
360360 util . testFunction `
361361 ${ testIterable }
362- const results: Array<string[]> = [];
363- let x: string, y: string ;
362+ const results = [];
363+ let x: string, y: any ;
364364 for ([x, y] of testIterable()) {
365365 results.push([x, y]);
366366 }
@@ -374,7 +374,7 @@ describe("LuaIterable with LuaMultiReturn value type", () => {
374374 util . testFunction `
375375 ${ testIterable }
376376 function forward() { return testIterable(); }
377- const results: Array<string[]> = [];
377+ const results = [];
378378 for (const [x, y] of forward()) {
379379 results.push([x, y]);
380380 }
@@ -388,7 +388,7 @@ describe("LuaIterable with LuaMultiReturn value type", () => {
388388 util . testFunction `
389389 ${ testIterable }
390390 function forward() { const iter = testIterable(); return iter; }
391- const results: Array<string[]> = [];
391+ const results = [];
392392 for (const [x, y] of forward()) {
393393 results.push([x, y]);
394394 }
@@ -402,7 +402,7 @@ describe("LuaIterable with LuaMultiReturn value type", () => {
402402 util . testFunction `
403403 ${ testIterable }
404404 const forward = () => testIterable();
405- const results: Array<string[]> = [];
405+ const results = [];
406406 for (const [x, y] of forward()) {
407407 results.push([x, y]);
408408 }
@@ -415,7 +415,7 @@ describe("LuaIterable with LuaMultiReturn value type", () => {
415415 test ( "destructure manual use" , ( ) => {
416416 util . testFunction `
417417 ${ testIterable }
418- const results: Array<string[]> = [];
418+ const results = [];
419419 const iter = testIterable();
420420 while (true) {
421421 const [x, y] = iter();
@@ -430,6 +430,23 @@ describe("LuaIterable with LuaMultiReturn value type", () => {
430430 . expectToEqual ( testResults ) ;
431431 } ) ;
432432
433+ test ( "nested destructuring" , ( ) => {
434+ util . testFunction `
435+ ${ testIterable }
436+ const results = [];
437+ for (const [x, {a}] of testIterable()) {
438+ results.push([x, a]);
439+ }
440+ return results;
441+ `
442+ . withLanguageExtensions ( )
443+ . expectToEqual ( [
444+ [ "a1" , "a" ] ,
445+ [ "b1" , "b" ] ,
446+ [ "c1" , "c" ] ,
447+ ] ) ;
448+ } ) ;
449+
433450 test . each ( [ "for (const s of testIterable()) {}" , "let s; for (s of testIterable()) {}" ] ) (
434451 "invalid LuaIterable<LuaMultiReturn> without destructuring (%p)" ,
435452 statement => {
0 commit comments