=== tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5.ts === // If the parameter is a rest parameter, the parameter type is any[] // A type annotation for a rest parameter must denote an array type. // RestParameter: // ... Identifier TypeAnnotation(opt) type arrayString = Array >arrayString : Symbol(arrayString, Decl(destructuringParameterDeclaration3ES5.ts, 0, 0)) >Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 1439, 1)) >String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 1538, 1)) type someArray = Array | number[]; >someArray : Symbol(someArray, Decl(destructuringParameterDeclaration3ES5.ts, 7, 32)) >Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 1439, 1)) >String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 1538, 1)) type stringOrNumArray = Array; >stringOrNumArray : Symbol(stringOrNumArray, Decl(destructuringParameterDeclaration3ES5.ts, 8, 42)) >Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 1439, 1)) >String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 1538, 1)) >Number : Symbol(Number, Decl(lib.d.ts, 456, 40), Decl(lib.d.ts, 518, 11)) function a1(...x: (number|string)[]) { } >a1 : Symbol(a1, Decl(destructuringParameterDeclaration3ES5.ts, 9, 45)) >x : Symbol(x, Decl(destructuringParameterDeclaration3ES5.ts, 11, 12)) function a2(...a) { } >a2 : Symbol(a2, Decl(destructuringParameterDeclaration3ES5.ts, 11, 40)) >a : Symbol(a, Decl(destructuringParameterDeclaration3ES5.ts, 12, 12)) function a3(...a: Array) { } >a3 : Symbol(a3, Decl(destructuringParameterDeclaration3ES5.ts, 12, 21)) >a : Symbol(a, Decl(destructuringParameterDeclaration3ES5.ts, 13, 12)) >Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(lib.d.ts, 1439, 1)) >String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11), Decl(lib.d.ts, 1538, 1)) function a4(...a: arrayString) { } >a4 : Symbol(a4, Decl(destructuringParameterDeclaration3ES5.ts, 13, 36)) >a : Symbol(a, Decl(destructuringParameterDeclaration3ES5.ts, 14, 12)) >arrayString : Symbol(arrayString, Decl(destructuringParameterDeclaration3ES5.ts, 0, 0)) function a5(...a: stringOrNumArray) { } >a5 : Symbol(a5, Decl(destructuringParameterDeclaration3ES5.ts, 14, 34)) >a : Symbol(a, Decl(destructuringParameterDeclaration3ES5.ts, 15, 12)) >stringOrNumArray : Symbol(stringOrNumArray, Decl(destructuringParameterDeclaration3ES5.ts, 8, 42)) function a9([a, b, [[c]]]) { } >a9 : Symbol(a9, Decl(destructuringParameterDeclaration3ES5.ts, 15, 39)) >a : Symbol(a, Decl(destructuringParameterDeclaration3ES5.ts, 16, 13)) >b : Symbol(b, Decl(destructuringParameterDeclaration3ES5.ts, 16, 15)) >c : Symbol(c, Decl(destructuringParameterDeclaration3ES5.ts, 16, 21)) function a10([a, b, [[c]], ...x]) { } >a10 : Symbol(a10, Decl(destructuringParameterDeclaration3ES5.ts, 16, 30)) >a : Symbol(a, Decl(destructuringParameterDeclaration3ES5.ts, 17, 14)) >b : Symbol(b, Decl(destructuringParameterDeclaration3ES5.ts, 17, 16)) >c : Symbol(c, Decl(destructuringParameterDeclaration3ES5.ts, 17, 22)) >x : Symbol(x, Decl(destructuringParameterDeclaration3ES5.ts, 17, 26)) function a11([a, b, c, ...x]: number[]) { } >a11 : Symbol(a11, Decl(destructuringParameterDeclaration3ES5.ts, 17, 37)) >a : Symbol(a, Decl(destructuringParameterDeclaration3ES5.ts, 18, 14)) >b : Symbol(b, Decl(destructuringParameterDeclaration3ES5.ts, 18, 16)) >c : Symbol(c, Decl(destructuringParameterDeclaration3ES5.ts, 18, 19)) >x : Symbol(x, Decl(destructuringParameterDeclaration3ES5.ts, 18, 22)) var array = [1, 2, 3]; >array : Symbol(array, Decl(destructuringParameterDeclaration3ES5.ts, 21, 3)) var array2 = [true, false, "hello"]; >array2 : Symbol(array2, Decl(destructuringParameterDeclaration3ES5.ts, 22, 3)) a2([...array]); >a2 : Symbol(a2, Decl(destructuringParameterDeclaration3ES5.ts, 11, 40)) >array : Symbol(array, Decl(destructuringParameterDeclaration3ES5.ts, 21, 3)) a1(...array); >a1 : Symbol(a1, Decl(destructuringParameterDeclaration3ES5.ts, 9, 45)) >array : Symbol(array, Decl(destructuringParameterDeclaration3ES5.ts, 21, 3)) a9([1, 2, [["string"]], false, true]); // Parameter type is [any, any, [[any]]] >a9 : Symbol(a9, Decl(destructuringParameterDeclaration3ES5.ts, 15, 39)) a10([1, 2, [["string"]], false, true]); // Parameter type is any[] >a10 : Symbol(a10, Decl(destructuringParameterDeclaration3ES5.ts, 16, 30)) a10([1, 2, 3, false, true]); // Parameter type is any[] >a10 : Symbol(a10, Decl(destructuringParameterDeclaration3ES5.ts, 16, 30)) a10([1, 2]); // Parameter type is any[] >a10 : Symbol(a10, Decl(destructuringParameterDeclaration3ES5.ts, 16, 30)) a11([1, 2]); // Parameter type is number[] >a11 : Symbol(a11, Decl(destructuringParameterDeclaration3ES5.ts, 17, 37)) // Rest parameter with generic function foo(...a: T[]) { } >foo : Symbol(foo, Decl(destructuringParameterDeclaration3ES5.ts, 31, 12)) >T : Symbol(T, Decl(destructuringParameterDeclaration3ES5.ts, 34, 13)) >a : Symbol(a, Decl(destructuringParameterDeclaration3ES5.ts, 34, 16)) >T : Symbol(T, Decl(destructuringParameterDeclaration3ES5.ts, 34, 13)) foo("hello", 1, 2); >foo : Symbol(foo, Decl(destructuringParameterDeclaration3ES5.ts, 31, 12)) foo("hello", "world"); >foo : Symbol(foo, Decl(destructuringParameterDeclaration3ES5.ts, 31, 12)) enum E { a, b } >E : Symbol(E, Decl(destructuringParameterDeclaration3ES5.ts, 36, 22)) >a : Symbol(E.a, Decl(destructuringParameterDeclaration3ES5.ts, 38, 8)) >b : Symbol(E.b, Decl(destructuringParameterDeclaration3ES5.ts, 38, 11)) const enum E1 { a, b } >E1 : Symbol(E1, Decl(destructuringParameterDeclaration3ES5.ts, 38, 15)) >a : Symbol(E1.a, Decl(destructuringParameterDeclaration3ES5.ts, 39, 15)) >b : Symbol(E1.b, Decl(destructuringParameterDeclaration3ES5.ts, 39, 18)) function foo1(...a: T[]) { } >foo1 : Symbol(foo1, Decl(destructuringParameterDeclaration3ES5.ts, 39, 22)) >T : Symbol(T, Decl(destructuringParameterDeclaration3ES5.ts, 40, 14)) >Number : Symbol(Number, Decl(lib.d.ts, 456, 40), Decl(lib.d.ts, 518, 11)) >a : Symbol(a, Decl(destructuringParameterDeclaration3ES5.ts, 40, 32)) >T : Symbol(T, Decl(destructuringParameterDeclaration3ES5.ts, 40, 14)) foo1(1, 2, 3, E.a); >foo1 : Symbol(foo1, Decl(destructuringParameterDeclaration3ES5.ts, 39, 22)) >E.a : Symbol(E.a, Decl(destructuringParameterDeclaration3ES5.ts, 38, 8)) >E : Symbol(E, Decl(destructuringParameterDeclaration3ES5.ts, 36, 22)) >a : Symbol(E.a, Decl(destructuringParameterDeclaration3ES5.ts, 38, 8)) foo1(1, 2, 3, E1.a, E.b); >foo1 : Symbol(foo1, Decl(destructuringParameterDeclaration3ES5.ts, 39, 22)) >E1.a : Symbol(E1.a, Decl(destructuringParameterDeclaration3ES5.ts, 39, 15)) >E1 : Symbol(E1, Decl(destructuringParameterDeclaration3ES5.ts, 38, 15)) >a : Symbol(E1.a, Decl(destructuringParameterDeclaration3ES5.ts, 39, 15)) >E.b : Symbol(E.b, Decl(destructuringParameterDeclaration3ES5.ts, 38, 11)) >E : Symbol(E, Decl(destructuringParameterDeclaration3ES5.ts, 36, 22)) >b : Symbol(E.b, Decl(destructuringParameterDeclaration3ES5.ts, 38, 11))