diff --git a/tests/baselines/reference/for-of38.js b/tests/baselines/reference/for-of38.js new file mode 100644 index 00000000000..1f0ac09682e --- /dev/null +++ b/tests/baselines/reference/for-of38.js @@ -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; +} diff --git a/tests/baselines/reference/for-of38.types b/tests/baselines/reference/for-of38.types new file mode 100644 index 00000000000..cdd1e05dd7e --- /dev/null +++ b/tests/baselines/reference/for-of38.types @@ -0,0 +1,19 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of38.ts === +var map = new Map([["", true]]); +>map : Map +>new Map([["", true]]) : Map +>Map : MapConstructor +>[["", true]] : [string, boolean][] +>["", true] : [string, boolean] + +for (var [k, v] of map) { +>k : string +>v : boolean +>map : Map + + k; +>k : string + + v; +>v : boolean +} diff --git a/tests/baselines/reference/for-of39.errors.txt b/tests/baselines/reference/for-of39.errors.txt new file mode 100644 index 00000000000..48db183a58c --- /dev/null +++ b/tests/baselines/reference/for-of39.errors.txt @@ -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; + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of39.js b/tests/baselines/reference/for-of39.js new file mode 100644 index 00000000000..91dbc56c0ab --- /dev/null +++ b/tests/baselines/reference/for-of39.js @@ -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; +} diff --git a/tests/baselines/reference/for-of40.js b/tests/baselines/reference/for-of40.js new file mode 100644 index 00000000000..243f81097db --- /dev/null +++ b/tests/baselines/reference/for-of40.js @@ -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; +} diff --git a/tests/baselines/reference/for-of40.types b/tests/baselines/reference/for-of40.types new file mode 100644 index 00000000000..c0fe7cbbc02 --- /dev/null +++ b/tests/baselines/reference/for-of40.types @@ -0,0 +1,19 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of40.ts === +var map = new Map([["", true]]); +>map : Map +>new Map([["", true]]) : Map +>Map : MapConstructor +>[["", true]] : [string, boolean][] +>["", true] : [string, boolean] + +for (var [k = "", v = false] of map) { +>k : string +>v : boolean +>map : Map + + k; +>k : string + + v; +>v : boolean +} diff --git a/tests/baselines/reference/for-of41.js b/tests/baselines/reference/for-of41.js new file mode 100644 index 00000000000..0fa380c53c4 --- /dev/null +++ b/tests/baselines/reference/for-of41.js @@ -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; +} diff --git a/tests/baselines/reference/for-of41.types b/tests/baselines/reference/for-of41.types new file mode 100644 index 00000000000..54e58aa1ec7 --- /dev/null +++ b/tests/baselines/reference/for-of41.types @@ -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 +} diff --git a/tests/baselines/reference/for-of42.js b/tests/baselines/reference/for-of42.js new file mode 100644 index 00000000000..1fa9219df47 --- /dev/null +++ b/tests/baselines/reference/for-of42.js @@ -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; +} diff --git a/tests/baselines/reference/for-of42.types b/tests/baselines/reference/for-of42.types new file mode 100644 index 00000000000..1a819452770 --- /dev/null +++ b/tests/baselines/reference/for-of42.types @@ -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 +} diff --git a/tests/baselines/reference/for-of43.errors.txt b/tests/baselines/reference/for-of43.errors.txt new file mode 100644 index 00000000000..c5790278e53 --- /dev/null +++ b/tests/baselines/reference/for-of43.errors.txt @@ -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; + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of43.js b/tests/baselines/reference/for-of43.js new file mode 100644 index 00000000000..de3b4fcd9b0 --- /dev/null +++ b/tests/baselines/reference/for-of43.js @@ -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; +} diff --git a/tests/baselines/reference/for-of44.js b/tests/baselines/reference/for-of44.js new file mode 100644 index 00000000000..087485ed73f --- /dev/null +++ b/tests/baselines/reference/for-of44.js @@ -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; +} diff --git a/tests/baselines/reference/for-of44.types b/tests/baselines/reference/for-of44.types new file mode 100644 index 00000000000..078b49bd309 --- /dev/null +++ b/tests/baselines/reference/for-of44.types @@ -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 +} diff --git a/tests/baselines/reference/for-of45.types b/tests/baselines/reference/for-of45.types new file mode 100644 index 00000000000..53b82a90111 --- /dev/null +++ b/tests/baselines/reference/for-of45.types @@ -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 +} diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of38.ts b/tests/cases/conformance/es6/for-ofStatements/for-of38.ts new file mode 100644 index 00000000000..0511ff140bd --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of38.ts @@ -0,0 +1,6 @@ +//@target: ES6 +var map = new Map([["", true]]); +for (var [k, v] of map) { + k; + v; +} \ No newline at end of file diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of39.ts b/tests/cases/conformance/es6/for-ofStatements/for-of39.ts new file mode 100644 index 00000000000..1d3ae5fc76c --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of39.ts @@ -0,0 +1,6 @@ +//@target: ES6 +var map = new Map([["", true], ["", 0]]); +for (var [k, v] of map) { + k; + v; +} \ No newline at end of file diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of40.ts b/tests/cases/conformance/es6/for-ofStatements/for-of40.ts new file mode 100644 index 00000000000..128e6b4f186 --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of40.ts @@ -0,0 +1,6 @@ +//@target: ES6 +var map = new Map([["", true]]); +for (var [k = "", v = false] of map) { + k; + v; +} \ No newline at end of file diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of41.ts b/tests/cases/conformance/es6/for-ofStatements/for-of41.ts new file mode 100644 index 00000000000..207ab8ab2b9 --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of41.ts @@ -0,0 +1,6 @@ +//@target: ES6 +var array = [{x: [0], y: {p: ""}}] +for (var {x: [a], y: {p}} of array) { + a; + p; +} \ No newline at end of file diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of42.ts b/tests/cases/conformance/es6/for-ofStatements/for-of42.ts new file mode 100644 index 00000000000..2eb25ab52f2 --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of42.ts @@ -0,0 +1,6 @@ +//@target: ES6 +var array = [{ x: "", y: 0 }] +for (var {x: a, y: b} of array) { + a; + b; +} \ No newline at end of file diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of43.ts b/tests/cases/conformance/es6/for-ofStatements/for-of43.ts new file mode 100644 index 00000000000..fec349e1073 --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of43.ts @@ -0,0 +1,6 @@ +//@target: ES6 +var array = [{ x: "", y: 0 }] +for (var {x: a = "", y: b = true} of array) { + a; + b; +} \ No newline at end of file diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of44.ts b/tests/cases/conformance/es6/for-ofStatements/for-of44.ts new file mode 100644 index 00000000000..7d7d21d8691 --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of44.ts @@ -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; +} \ No newline at end of file