Add tests for for-of destructuring

This commit is contained in:
Jason Freeman 2015-02-25 18:56:12 -08:00
parent f3543b718f
commit 00408a68d3
22 changed files with 285 additions and 0 deletions

View File

@ -0,0 +1,13 @@
//// [for-of38.ts]
var map = new Map([["", true]]);
for (var [k, v] of map) {
k;
v;
}
//// [for-of38.js]
var map = new Map([["", true]]);
for (var [k, v] of map) {
k;
v;
}

View File

@ -0,0 +1,19 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of38.ts ===
var map = new Map([["", true]]);
>map : Map<string, boolean>
>new Map([["", true]]) : Map<string, boolean>
>Map : MapConstructor
>[["", true]] : [string, boolean][]
>["", true] : [string, boolean]
for (var [k, v] of map) {
>k : string
>v : boolean
>map : Map<string, boolean>
k;
>k : string
v;
>v : boolean
}

View File

@ -0,0 +1,13 @@
tests/cases/conformance/es6/for-ofStatements/for-of39.ts(1,15): error TS2453: The type argument for type parameter 'V' cannot be inferred from the usage. Consider specifying the type arguments explicitly.
Type argument candidate 'boolean' is not a valid type argument because it is not a supertype of candidate 'number'.
==== tests/cases/conformance/es6/for-ofStatements/for-of39.ts (1 errors) ====
var map = new Map([["", true], ["", 0]]);
~~~
!!! error TS2453: The type argument for type parameter 'V' cannot be inferred from the usage. Consider specifying the type arguments explicitly.
!!! error TS2453: Type argument candidate 'boolean' is not a valid type argument because it is not a supertype of candidate 'number'.
for (var [k, v] of map) {
k;
v;
}

View File

@ -0,0 +1,13 @@
//// [for-of39.ts]
var map = new Map([["", true], ["", 0]]);
for (var [k, v] of map) {
k;
v;
}
//// [for-of39.js]
var map = new Map([["", true], ["", 0]]);
for (var [k, v] of map) {
k;
v;
}

View File

@ -0,0 +1,13 @@
//// [for-of40.ts]
var map = new Map([["", true]]);
for (var [k = "", v = false] of map) {
k;
v;
}
//// [for-of40.js]
var map = new Map([["", true]]);
for (var [k = "", v = false] of map) {
k;
v;
}

View File

@ -0,0 +1,19 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of40.ts ===
var map = new Map([["", true]]);
>map : Map<string, boolean>
>new Map([["", true]]) : Map<string, boolean>
>Map : MapConstructor
>[["", true]] : [string, boolean][]
>["", true] : [string, boolean]
for (var [k = "", v = false] of map) {
>k : string
>v : boolean
>map : Map<string, boolean>
k;
>k : string
v;
>v : boolean
}

View File

@ -0,0 +1,13 @@
//// [for-of41.ts]
var array = [{x: [0], y: {p: ""}}]
for (var {x: [a], y: {p}} of array) {
a;
p;
}
//// [for-of41.js]
var array = [{ x: [0], y: { p: "" } }];
for (var { x: [a], y: { p } } of array) {
a;
p;
}

View File

@ -0,0 +1,24 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of41.ts ===
var array = [{x: [0], y: {p: ""}}]
>array : { x: number[]; y: { p: string; }; }[]
>[{x: [0], y: {p: ""}}] : { x: number[]; y: { p: string; }; }[]
>{x: [0], y: {p: ""}} : { x: number[]; y: { p: string; }; }
>x : number[]
>[0] : number[]
>y : { p: string; }
>{p: ""} : { p: string; }
>p : string
for (var {x: [a], y: {p}} of array) {
>x : unknown
>a : number
>y : unknown
>p : string
>array : { x: number[]; y: { p: string; }; }[]
a;
>a : number
p;
>p : string
}

View File

@ -0,0 +1,13 @@
//// [for-of42.ts]
var array = [{ x: "", y: 0 }]
for (var {x: a, y: b} of array) {
a;
b;
}
//// [for-of42.js]
var array = [{ x: "", y: 0 }];
for (var { x: a, y: b } of array) {
a;
b;
}

View File

@ -0,0 +1,21 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of42.ts ===
var array = [{ x: "", y: 0 }]
>array : { x: string; y: number; }[]
>[{ x: "", y: 0 }] : { x: string; y: number; }[]
>{ x: "", y: 0 } : { x: string; y: number; }
>x : string
>y : number
for (var {x: a, y: b} of array) {
>x : unknown
>a : string
>y : unknown
>b : number
>array : { x: string; y: number; }[]
a;
>a : string
b;
>b : number
}

View File

@ -0,0 +1,11 @@
tests/cases/conformance/es6/for-ofStatements/for-of43.ts(2,25): error TS2322: Type 'boolean' is not assignable to type 'number'.
==== tests/cases/conformance/es6/for-ofStatements/for-of43.ts (1 errors) ====
var array = [{ x: "", y: 0 }]
for (var {x: a = "", y: b = true} of array) {
~
!!! error TS2322: Type 'boolean' is not assignable to type 'number'.
a;
b;
}

View File

@ -0,0 +1,13 @@
//// [for-of43.ts]
var array = [{ x: "", y: 0 }]
for (var {x: a = "", y: b = true} of array) {
a;
b;
}
//// [for-of43.js]
var array = [{ x: "", y: 0 }];
for (var { x: a = "", y: b = true } of array) {
a;
b;
}

View File

@ -0,0 +1,13 @@
//// [for-of44.ts]
var array: [number, string | boolean | symbol][] = [[0, ""], [0, true], [1, Symbol()]]
for (var [num, strBoolSym] of array) {
num;
strBoolSym;
}
//// [for-of44.js]
var array = [[0, ""], [0, true], [1, Symbol()]];
for (var [num, strBoolSym] of array) {
num;
strBoolSym;
}

View File

@ -0,0 +1,21 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of44.ts ===
var array: [number, string | boolean | symbol][] = [[0, ""], [0, true], [1, Symbol()]]
>array : [number, string | boolean | symbol][]
>[[0, ""], [0, true], [1, Symbol()]] : ([number, string] | [number, boolean] | [number, symbol])[]
>[0, ""] : [number, string]
>[0, true] : [number, boolean]
>[1, Symbol()] : [number, symbol]
>Symbol() : symbol
>Symbol : SymbolConstructor
for (var [num, strBoolSym] of array) {
>num : number
>strBoolSym : string | boolean | symbol
>array : [number, string | boolean | symbol][]
num;
>num : number
strBoolSym;
>strBoolSym : string | boolean | symbol
}

View File

@ -0,0 +1,24 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of45.ts ===
var array = [{x: [0], y: {p: ""}}]
>array : { x: number[]; y: { p: string; }; }[]
>[{x: [0], y: {p: ""}}] : { x: number[]; y: { p: string; }; }[]
>{x: [0], y: {p: ""}} : { x: number[]; y: { p: string; }; }
>x : number[]
>[0] : number[]
>y : { p: string; }
>{p: ""} : { p: string; }
>p : string
for (var {x: [a], y: {p}} of array) {
>x : unknown
>a : number
>y : unknown
>p : string
>array : { x: number[]; y: { p: string; }; }[]
a;
>a : number
p;
>p : string
}

View File

@ -0,0 +1,6 @@
//@target: ES6
var map = new Map([["", true]]);
for (var [k, v] of map) {
k;
v;
}

View File

@ -0,0 +1,6 @@
//@target: ES6
var map = new Map([["", true], ["", 0]]);
for (var [k, v] of map) {
k;
v;
}

View File

@ -0,0 +1,6 @@
//@target: ES6
var map = new Map([["", true]]);
for (var [k = "", v = false] of map) {
k;
v;
}

View File

@ -0,0 +1,6 @@
//@target: ES6
var array = [{x: [0], y: {p: ""}}]
for (var {x: [a], y: {p}} of array) {
a;
p;
}

View File

@ -0,0 +1,6 @@
//@target: ES6
var array = [{ x: "", y: 0 }]
for (var {x: a, y: b} of array) {
a;
b;
}

View File

@ -0,0 +1,6 @@
//@target: ES6
var array = [{ x: "", y: 0 }]
for (var {x: a = "", y: b = true} of array) {
a;
b;
}

View File

@ -0,0 +1,6 @@
//@target: ES6
var array: [number, string | boolean | symbol][] = [[0, ""], [0, true], [1, Symbol()]]
for (var [num, strBoolSym] of array) {
num;
strBoolSym;
}