diff --git a/tests/baselines/reference/for-of10.errors.txt b/tests/baselines/reference/for-of10.errors.txt new file mode 100644 index 0000000000..1636f1a02d --- /dev/null +++ b/tests/baselines/reference/for-of10.errors.txt @@ -0,0 +1,8 @@ +tests/cases/conformance/es6/for-ofStatements/for-of10.ts(2,6): error TS2322: Type 'number' is not assignable to type 'string'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of10.ts (1 errors) ==== + var v: string; + for (v of [0]) { } + ~ +!!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/for-of10.js b/tests/baselines/reference/for-of10.js new file mode 100644 index 0000000000..7fd05f5479 --- /dev/null +++ b/tests/baselines/reference/for-of10.js @@ -0,0 +1,7 @@ +//// [for-of10.ts] +var v: string; +for (v of [0]) { } + +//// [for-of10.js] +var v; +for (v of [0]) { } diff --git a/tests/baselines/reference/for-of11.errors.txt b/tests/baselines/reference/for-of11.errors.txt new file mode 100644 index 0000000000..dc527e73ef --- /dev/null +++ b/tests/baselines/reference/for-of11.errors.txt @@ -0,0 +1,10 @@ +tests/cases/conformance/es6/for-ofStatements/for-of11.ts(2,6): error TS2322: Type 'string | number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of11.ts (1 errors) ==== + var v: string; + for (v of [0, ""]) { } + ~ +!!! error TS2322: Type 'string | number' is not assignable to type 'string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/for-of11.js b/tests/baselines/reference/for-of11.js new file mode 100644 index 0000000000..055ed0039d --- /dev/null +++ b/tests/baselines/reference/for-of11.js @@ -0,0 +1,7 @@ +//// [for-of11.ts] +var v: string; +for (v of [0, ""]) { } + +//// [for-of11.js] +var v; +for (v of [0, ""]) { } diff --git a/tests/baselines/reference/for-of12.errors.txt b/tests/baselines/reference/for-of12.errors.txt new file mode 100644 index 0000000000..f19fa5ed01 --- /dev/null +++ b/tests/baselines/reference/for-of12.errors.txt @@ -0,0 +1,10 @@ +tests/cases/conformance/es6/for-ofStatements/for-of12.ts(2,6): error TS2322: Type 'string | number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of12.ts (1 errors) ==== + var v: string; + for (v of [0, ""].values()) { } + ~ +!!! error TS2322: Type 'string | number' is not assignable to type 'string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/for-of12.js b/tests/baselines/reference/for-of12.js new file mode 100644 index 0000000000..6185ca8e33 --- /dev/null +++ b/tests/baselines/reference/for-of12.js @@ -0,0 +1,7 @@ +//// [for-of12.ts] +var v: string; +for (v of [0, ""].values()) { } + +//// [for-of12.js] +var v; +for (v of [0, ""].values()) { } diff --git a/tests/baselines/reference/for-of13.js b/tests/baselines/reference/for-of13.js new file mode 100644 index 0000000000..e66668f173 --- /dev/null +++ b/tests/baselines/reference/for-of13.js @@ -0,0 +1,7 @@ +//// [for-of13.ts] +var v: string; +for (v of [""].values()) { } + +//// [for-of13.js] +var v; +for (v of [""].values()) { } diff --git a/tests/baselines/reference/for-of13.types b/tests/baselines/reference/for-of13.types new file mode 100644 index 0000000000..4bb29c1e0a --- /dev/null +++ b/tests/baselines/reference/for-of13.types @@ -0,0 +1,11 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of13.ts === +var v: string; +>v : string + +for (v of [""].values()) { } +>v : string +>[""].values() : IterableIterator +>[""].values : () => IterableIterator +>[""] : string[] +>values : () => IterableIterator + diff --git a/tests/baselines/reference/for-of3.errors.txt b/tests/baselines/reference/for-of3.errors.txt index 973230003f..ba8e3e4a5c 100644 --- a/tests/baselines/reference/for-of3.errors.txt +++ b/tests/baselines/reference/for-of3.errors.txt @@ -1,8 +1,8 @@ -tests/cases/conformance/es6/for-ofStatements/for-of3.ts(2,6): error TS2486: Invalid left-hand side in 'for...of' statement. +tests/cases/conformance/es6/for-ofStatements/for-of3.ts(2,6): error TS2487: Invalid left-hand side in 'for...of' statement. ==== tests/cases/conformance/es6/for-ofStatements/for-of3.ts (1 errors) ==== var v; for (v++ of []) { } ~~~ -!!! error TS2486: Invalid left-hand side in 'for...of' statement. \ No newline at end of file +!!! error TS2487: Invalid left-hand side in 'for...of' statement. \ No newline at end of file diff --git a/tests/baselines/reference/for-of9.js b/tests/baselines/reference/for-of9.js new file mode 100644 index 0000000000..f96d353bd7 --- /dev/null +++ b/tests/baselines/reference/for-of9.js @@ -0,0 +1,9 @@ +//// [for-of9.ts] +var v: string; +for (v of ["hello"]) { } +for (v of "hello") { } + +//// [for-of9.js] +var v; +for (v of ["hello"]) { } +for (v of "hello") { } diff --git a/tests/baselines/reference/for-of9.types b/tests/baselines/reference/for-of9.types new file mode 100644 index 0000000000..55c8167094 --- /dev/null +++ b/tests/baselines/reference/for-of9.types @@ -0,0 +1,11 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of9.ts === +var v: string; +>v : string + +for (v of ["hello"]) { } +>v : string +>["hello"] : string[] + +for (v of "hello") { } +>v : string + diff --git a/tests/baselines/reference/parserForOfStatement18.types b/tests/baselines/reference/parserForOfStatement18.types new file mode 100644 index 0000000000..8e3b52ac87 --- /dev/null +++ b/tests/baselines/reference/parserForOfStatement18.types @@ -0,0 +1,5 @@ +=== tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement18.ts === +for (var of of of) { } +>of : any +>of : any + diff --git a/tests/baselines/reference/parserForOfStatement8.types b/tests/baselines/reference/parserForOfStatement8.types new file mode 100644 index 0000000000..a4168caf26 --- /dev/null +++ b/tests/baselines/reference/parserForOfStatement8.types @@ -0,0 +1,5 @@ +=== tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement8.ts === +for (var v of X) { +>v : any +>X : unknown +} diff --git a/tests/baselines/reference/parserForOfStatement9.types b/tests/baselines/reference/parserForOfStatement9.types new file mode 100644 index 0000000000..0285a3e4b7 --- /dev/null +++ b/tests/baselines/reference/parserForOfStatement9.types @@ -0,0 +1,5 @@ +=== tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement9.ts === +for (let v of X) { +>v : any +>X : unknown +} diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of10.ts b/tests/cases/conformance/es6/for-ofStatements/for-of10.ts new file mode 100644 index 0000000000..dec00541e9 --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of10.ts @@ -0,0 +1,3 @@ +//@target: ES6 +var v: string; +for (v of [0]) { } \ No newline at end of file diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of11.ts b/tests/cases/conformance/es6/for-ofStatements/for-of11.ts new file mode 100644 index 0000000000..e434758efa --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of11.ts @@ -0,0 +1,3 @@ +//@target: ES6 +var v: string; +for (v of [0, ""]) { } \ No newline at end of file diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of12.ts b/tests/cases/conformance/es6/for-ofStatements/for-of12.ts new file mode 100644 index 0000000000..78cfbaccec --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of12.ts @@ -0,0 +1,3 @@ +//@target: ES6 +var v: string; +for (v of [0, ""].values()) { } \ No newline at end of file diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of13.ts b/tests/cases/conformance/es6/for-ofStatements/for-of13.ts new file mode 100644 index 0000000000..2f2b922cb1 --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of13.ts @@ -0,0 +1,3 @@ +//@target: ES6 +var v: string; +for (v of [""].values()) { } \ No newline at end of file diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of14.ts b/tests/cases/conformance/es6/for-ofStatements/for-of14.ts new file mode 100644 index 0000000000..8bb3e95950 --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of14.ts @@ -0,0 +1,9 @@ +//@target: ES6 +var v: string; +for (v of new StringIterator) { } // Should fail because the iterator is not iterable + +class StringIterator implements Iterator { + next() { + return ""; + } +} \ No newline at end of file diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of15.ts b/tests/cases/conformance/es6/for-ofStatements/for-of15.ts new file mode 100644 index 0000000000..87ff3e9603 --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of15.ts @@ -0,0 +1,12 @@ +//@target: ES6 +var v: string; +for (v of new StringIterator) { } // Should succeed + +class StringIterator implements Iterator { + next() { + return ""; + } + [Symbol.iterator]() { + return this; + } +} \ No newline at end of file diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of16.ts b/tests/cases/conformance/es6/for-ofStatements/for-of16.ts new file mode 100644 index 0000000000..92b3b4e6de --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of16.ts @@ -0,0 +1,12 @@ +//@target: ES6 +var v: string; +for (v of (new StringIterator)[Symbol.iterator]()) { } // Should succeed + +class StringIterator implements Iterator { + next() { + return ""; + } + [Symbol.iterator]() { + return this; + } +} \ No newline at end of file diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of17.ts b/tests/cases/conformance/es6/for-ofStatements/for-of17.ts new file mode 100644 index 0000000000..819e9218bd --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of17.ts @@ -0,0 +1,12 @@ +//@target: ES6 +var v: number; +for (v of (new NumberIterator)[Symbol.iterator]().next()) { } // Should fail + +class NumberIterator { + next() { + return 0; + } + [Symbol.iterator]() { + return this; + } +} \ No newline at end of file diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of18.ts b/tests/cases/conformance/es6/for-ofStatements/for-of18.ts new file mode 100644 index 0000000000..10e566cf64 --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of18.ts @@ -0,0 +1,15 @@ +//@target: ES6 +var v: string; +for (v of (new StringIterator)[Symbol.iterator]().next()) { } // Should succeed + +class StringIterator { + next() { + return { + value: "", + done: false + }; + } + [Symbol.iterator]() { + return this; + } +} \ No newline at end of file diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of19.ts b/tests/cases/conformance/es6/for-ofStatements/for-of19.ts new file mode 100644 index 0000000000..1e45c32e8a --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of19.ts @@ -0,0 +1,15 @@ +//@target: ES6 +var v: string; +for (v of (new StringIterator)[Symbol.iterator]().next()) { } // Should fail + +class StringIterator { + next() { + return { + value: 0, + done: false + }; + } + [Symbol.iterator]() { + return this; + } +} \ No newline at end of file diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of9.ts b/tests/cases/conformance/es6/for-ofStatements/for-of9.ts new file mode 100644 index 0000000000..45a3c7e1d9 --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of9.ts @@ -0,0 +1,4 @@ +//@target: ES6 +var v: string; +for (v of ["hello"]) { } +for (v of "hello") { } \ No newline at end of file