>;
diff --git a/tests/baselines/reference/conflictMarkerTrivia4.errors.txt b/tests/baselines/reference/conflictMarkerTrivia4.errors.txt
new file mode 100644
index 00000000000..476dbbce6ce
--- /dev/null
+++ b/tests/baselines/reference/conflictMarkerTrivia4.errors.txt
@@ -0,0 +1,14 @@
+tests/cases/compiler/conflictMarkerTrivia4.ts(1,12): error TS2304: Cannot find name 'div'.
+tests/cases/compiler/conflictMarkerTrivia4.ts(2,1): error TS1185: Merge conflict marker encountered.
+tests/cases/compiler/conflictMarkerTrivia4.ts(2,13): error TS1109: Expression expected.
+
+
+==== tests/cases/compiler/conflictMarkerTrivia4.ts (3 errors) ====
+ const x =
+ ~~~
+!!! error TS2304: Cannot find name 'div'.
+ <<<<<<< HEAD
+ ~~~~~~~
+!!! error TS1185: Merge conflict marker encountered.
+
+!!! error TS1109: Expression expected.
\ No newline at end of file
diff --git a/tests/baselines/reference/conflictMarkerTrivia4.js b/tests/baselines/reference/conflictMarkerTrivia4.js
new file mode 100644
index 00000000000..945e82b2f2d
--- /dev/null
+++ b/tests/baselines/reference/conflictMarkerTrivia4.js
@@ -0,0 +1,6 @@
+//// [conflictMarkerTrivia4.ts]
+const x =
+<<<<<<< HEAD
+
+//// [conflictMarkerTrivia4.js]
+var x = ;
diff --git a/tests/baselines/reference/derivedClasses.errors.txt b/tests/baselines/reference/derivedClasses.errors.txt
index fdd38d8c060..ff6946df2ca 100644
--- a/tests/baselines/reference/derivedClasses.errors.txt
+++ b/tests/baselines/reference/derivedClasses.errors.txt
@@ -1,10 +1,10 @@
-tests/cases/compiler/derivedClasses.ts(1,19): error TS2690: A class must be declared after its base class.
+tests/cases/compiler/derivedClasses.ts(1,19): error TS2449: Class 'Color' used before its declaration.
==== tests/cases/compiler/derivedClasses.ts (1 errors) ====
class Red extends Color {
~~~~~
-!!! error TS2690: A class must be declared after its base class.
+!!! error TS2449: Class 'Color' used before its declaration.
public shade() {
var getHue = () => { return this.hue(); };
return getHue() + " red";
diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types
index 524f7c9b71b..c375fb6f455 100644
--- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types
+++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types
@@ -80,7 +80,7 @@ class C7 {
>C7 : C7
async * f() {
->f : () => AsyncIterableIterator
+>f : () => AsyncIterableIterator<1>
return 1;
>1 : 1
diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types
index c20e0d35010..e4be9f80d4a 100644
--- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types
+++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types
@@ -80,7 +80,7 @@ class C7 {
>C7 : C7
async * f() {
->f : () => AsyncIterableIterator
+>f : () => AsyncIterableIterator<1>
return 1;
>1 : 1
diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.esnext.types b/tests/baselines/reference/emitter.asyncGenerators.classMethods.esnext.types
index b5230006f1b..1232130a389 100644
--- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.esnext.types
+++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.esnext.types
@@ -80,7 +80,7 @@ class C7 {
>C7 : C7
async * f() {
->f : () => AsyncIterableIterator
+>f : () => AsyncIterableIterator<1>
return 1;
>1 : 1
diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types
index 5d57519d140..0e434639906 100644
--- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types
+++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types
@@ -53,7 +53,7 @@ async function * f6() {
}
=== tests/cases/conformance/emitter/es2015/asyncGenerators/F7.ts ===
async function * f7() {
->f7 : () => AsyncIterableIterator
+>f7 : () => AsyncIterableIterator<1>
return 1;
>1 : 1
diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types
index 2c3063eca59..9ebd2659ef4 100644
--- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types
+++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types
@@ -53,7 +53,7 @@ async function * f6() {
}
=== tests/cases/conformance/emitter/es5/asyncGenerators/F7.ts ===
async function * f7() {
->f7 : () => AsyncIterableIterator
+>f7 : () => AsyncIterableIterator<1>
return 1;
>1 : 1
diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.esnext.types b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.esnext.types
index 5eb09901ac8..4e61c903227 100644
--- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.esnext.types
+++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.esnext.types
@@ -53,7 +53,7 @@ async function * f6() {
}
=== tests/cases/conformance/emitter/esnext/asyncGenerators/F7.ts ===
async function * f7() {
->f7 : () => AsyncIterableIterator
+>f7 : () => AsyncIterableIterator<1>
return 1;
>1 : 1
diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types
index ab41ffd9c71..83d65ce5246 100644
--- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types
+++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types
@@ -59,8 +59,8 @@ const f6 = async function * () {
}
=== tests/cases/conformance/emitter/es2015/asyncGenerators/F7.ts ===
const f7 = async function * () {
->f7 : () => AsyncIterableIterator
->async function * () { return 1;} : () => AsyncIterableIterator
+>f7 : () => AsyncIterableIterator<1>
+>async function * () { return 1;} : () => AsyncIterableIterator<1>
return 1;
>1 : 1
diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types
index 424f09cf53b..7d736b2327c 100644
--- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types
+++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types
@@ -59,8 +59,8 @@ const f6 = async function * () {
}
=== tests/cases/conformance/emitter/es5/asyncGenerators/F7.ts ===
const f7 = async function * () {
->f7 : () => AsyncIterableIterator
->async function * () { return 1;} : () => AsyncIterableIterator
+>f7 : () => AsyncIterableIterator<1>
+>async function * () { return 1;} : () => AsyncIterableIterator<1>
return 1;
>1 : 1
diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.esnext.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.esnext.types
index e4559e3ecef..6c40f9cebb1 100644
--- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.esnext.types
+++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.esnext.types
@@ -59,8 +59,8 @@ const f6 = async function * () {
}
=== tests/cases/conformance/emitter/esnext/asyncGenerators/F7.ts ===
const f7 = async function * () {
->f7 : () => AsyncIterableIterator
->async function * () { return 1;} : () => AsyncIterableIterator
+>f7 : () => AsyncIterableIterator<1>
+>async function * () { return 1;} : () => AsyncIterableIterator<1>
return 1;
>1 : 1
diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types
index 0e89d9a1ca6..59c5bcfa167 100644
--- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types
+++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types
@@ -83,11 +83,11 @@ const o6 = {
}
=== tests/cases/conformance/emitter/es2015/asyncGenerators/O7.ts ===
const o7 = {
->o7 : { f(): AsyncIterableIterator; }
->{ async * f() { return 1; }} : { f(): AsyncIterableIterator; }
+>o7 : { f(): AsyncIterableIterator<1>; }
+>{ async * f() { return 1; }} : { f(): AsyncIterableIterator<1>; }
async * f() {
->f : () => AsyncIterableIterator
+>f : () => AsyncIterableIterator<1>
return 1;
>1 : 1
diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types
index 4c8ae47b6a2..3e7ead2f737 100644
--- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types
+++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types
@@ -83,11 +83,11 @@ const o6 = {
}
=== tests/cases/conformance/emitter/es5/asyncGenerators/O7.ts ===
const o7 = {
->o7 : { f(): AsyncIterableIterator; }
->{ async * f() { return 1; }} : { f(): AsyncIterableIterator; }
+>o7 : { f(): AsyncIterableIterator<1>; }
+>{ async * f() { return 1; }} : { f(): AsyncIterableIterator<1>; }
async * f() {
->f : () => AsyncIterableIterator
+>f : () => AsyncIterableIterator<1>
return 1;
>1 : 1
diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.esnext.types b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.esnext.types
index 511cd7ec9e0..9e5aad8af23 100644
--- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.esnext.types
+++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.esnext.types
@@ -83,11 +83,11 @@ const o6 = {
}
=== tests/cases/conformance/emitter/esnext/asyncGenerators/O7.ts ===
const o7 = {
->o7 : { f(): AsyncIterableIterator; }
->{ async * f() { return 1; }} : { f(): AsyncIterableIterator; }
+>o7 : { f(): AsyncIterableIterator<1>; }
+>{ async * f() { return 1; }} : { f(): AsyncIterableIterator<1>; }
async * f() {
->f : () => AsyncIterableIterator
+>f : () => AsyncIterableIterator<1>
return 1;
>1 : 1
diff --git a/tests/baselines/reference/enumUsedBeforeDeclaration.errors.txt b/tests/baselines/reference/enumUsedBeforeDeclaration.errors.txt
new file mode 100644
index 00000000000..aea5366389b
--- /dev/null
+++ b/tests/baselines/reference/enumUsedBeforeDeclaration.errors.txt
@@ -0,0 +1,15 @@
+tests/cases/compiler/enumUsedBeforeDeclaration.ts(1,18): error TS2450: Enum 'Color' used before its declaration.
+tests/cases/compiler/enumUsedBeforeDeclaration.ts(2,24): error TS2450: Enum 'ConstColor' used before its declaration.
+
+
+==== tests/cases/compiler/enumUsedBeforeDeclaration.ts (2 errors) ====
+ const v: Color = Color.Green;
+ ~~~~~
+!!! error TS2450: Enum 'Color' used before its declaration.
+ const v2: ConstColor = ConstColor.Green;
+ ~~~~~~~~~~
+!!! error TS2450: Enum 'ConstColor' used before its declaration.
+ enum Color { Red, Green, Blue }
+ const enum ConstColor { Red, Green, Blue }
+
+
\ No newline at end of file
diff --git a/tests/baselines/reference/enumUsedBeforeDeclaration.js b/tests/baselines/reference/enumUsedBeforeDeclaration.js
new file mode 100644
index 00000000000..63fc38471b2
--- /dev/null
+++ b/tests/baselines/reference/enumUsedBeforeDeclaration.js
@@ -0,0 +1,17 @@
+//// [enumUsedBeforeDeclaration.ts]
+const v: Color = Color.Green;
+const v2: ConstColor = ConstColor.Green;
+enum Color { Red, Green, Blue }
+const enum ConstColor { Red, Green, Blue }
+
+
+
+//// [enumUsedBeforeDeclaration.js]
+var v = Color.Green;
+var v2 = 1 /* Green */;
+var Color;
+(function (Color) {
+ Color[Color["Red"] = 0] = "Red";
+ Color[Color["Green"] = 1] = "Green";
+ Color[Color["Blue"] = 2] = "Blue";
+})(Color || (Color = {}));
diff --git a/tests/baselines/reference/es5ExportDefaultClassDeclaration3.errors.txt b/tests/baselines/reference/es5ExportDefaultClassDeclaration3.errors.txt
new file mode 100644
index 00000000000..951e8bbffd1
--- /dev/null
+++ b/tests/baselines/reference/es5ExportDefaultClassDeclaration3.errors.txt
@@ -0,0 +1,20 @@
+tests/cases/compiler/es5ExportDefaultClassDeclaration3.ts(2,21): error TS2449: Class 'C' used before its declaration.
+
+
+==== tests/cases/compiler/es5ExportDefaultClassDeclaration3.ts (1 errors) ====
+
+ var before: C = new C();
+ ~
+!!! error TS2449: Class 'C' used before its declaration.
+
+ export default class C {
+ method(): C {
+ return new C();
+ }
+ }
+
+ var after: C = new C();
+
+ var t: typeof C = C;
+
+
\ No newline at end of file
diff --git a/tests/baselines/reference/es5ExportDefaultClassDeclaration3.symbols b/tests/baselines/reference/es5ExportDefaultClassDeclaration3.symbols
deleted file mode 100644
index d5c8243161b..00000000000
--- a/tests/baselines/reference/es5ExportDefaultClassDeclaration3.symbols
+++ /dev/null
@@ -1,30 +0,0 @@
-=== tests/cases/compiler/es5ExportDefaultClassDeclaration3.ts ===
-
-var before: C = new C();
->before : Symbol(before, Decl(es5ExportDefaultClassDeclaration3.ts, 1, 3))
->C : Symbol(C, Decl(es5ExportDefaultClassDeclaration3.ts, 1, 24))
->C : Symbol(C, Decl(es5ExportDefaultClassDeclaration3.ts, 1, 24))
-
-export default class C {
->C : Symbol(C, Decl(es5ExportDefaultClassDeclaration3.ts, 1, 24))
-
- method(): C {
->method : Symbol(C.method, Decl(es5ExportDefaultClassDeclaration3.ts, 3, 24))
->C : Symbol(C, Decl(es5ExportDefaultClassDeclaration3.ts, 1, 24))
-
- return new C();
->C : Symbol(C, Decl(es5ExportDefaultClassDeclaration3.ts, 1, 24))
- }
-}
-
-var after: C = new C();
->after : Symbol(after, Decl(es5ExportDefaultClassDeclaration3.ts, 9, 3))
->C : Symbol(C, Decl(es5ExportDefaultClassDeclaration3.ts, 1, 24))
->C : Symbol(C, Decl(es5ExportDefaultClassDeclaration3.ts, 1, 24))
-
-var t: typeof C = C;
->t : Symbol(t, Decl(es5ExportDefaultClassDeclaration3.ts, 11, 3))
->C : Symbol(C, Decl(es5ExportDefaultClassDeclaration3.ts, 1, 24))
->C : Symbol(C, Decl(es5ExportDefaultClassDeclaration3.ts, 1, 24))
-
-
diff --git a/tests/baselines/reference/es5ExportDefaultClassDeclaration3.types b/tests/baselines/reference/es5ExportDefaultClassDeclaration3.types
deleted file mode 100644
index 1ed302ac45e..00000000000
--- a/tests/baselines/reference/es5ExportDefaultClassDeclaration3.types
+++ /dev/null
@@ -1,33 +0,0 @@
-=== tests/cases/compiler/es5ExportDefaultClassDeclaration3.ts ===
-
-var before: C = new C();
->before : C
->C : C
->new C() : C
->C : typeof C
-
-export default class C {
->C : C
-
- method(): C {
->method : () => C
->C : C
-
- return new C();
->new C() : C
->C : typeof C
- }
-}
-
-var after: C = new C();
->after : C
->C : C
->new C() : C
->C : typeof C
-
-var t: typeof C = C;
->t : typeof C
->C : typeof C
->C : typeof C
-
-
diff --git a/tests/baselines/reference/exportAssignmentOfGenericType1.errors.txt b/tests/baselines/reference/exportAssignmentOfGenericType1.errors.txt
new file mode 100644
index 00000000000..e484d4096bb
--- /dev/null
+++ b/tests/baselines/reference/exportAssignmentOfGenericType1.errors.txt
@@ -0,0 +1,17 @@
+tests/cases/compiler/exportAssignmentOfGenericType1_0.ts(1,10): error TS2449: Class 'T' used before its declaration.
+
+
+==== tests/cases/compiler/exportAssignmentOfGenericType1_1.ts (0 errors) ====
+ ///
+ import q = require("exportAssignmentOfGenericType1_0");
+
+ class M extends q { }
+ var m: M;
+ var r: string = m.foo;
+
+==== tests/cases/compiler/exportAssignmentOfGenericType1_0.ts (1 errors) ====
+ export = T;
+ ~
+!!! error TS2449: Class 'T' used before its declaration.
+ class T { foo: X; }
+
\ No newline at end of file
diff --git a/tests/baselines/reference/exportImport.errors.txt b/tests/baselines/reference/exportImport.errors.txt
new file mode 100644
index 00000000000..fb5a41fe1eb
--- /dev/null
+++ b/tests/baselines/reference/exportImport.errors.txt
@@ -0,0 +1,22 @@
+tests/cases/compiler/w1.ts(2,1): error TS2449: Class 'Widget1' used before its declaration.
+tests/cases/compiler/w1.ts(2,10): error TS2449: Class 'Widget1' used before its declaration.
+
+
+==== tests/cases/compiler/consumer.ts (0 errors) ====
+ import e = require('./exporter');
+
+ export function w(): e.w { // Should be OK
+ return new e.w();
+ }
+==== tests/cases/compiler/w1.ts (2 errors) ====
+
+ export = Widget1
+ ~~~~~~~~~~~~~~~~
+!!! error TS2449: Class 'Widget1' used before its declaration.
+ ~~~~~~~
+!!! error TS2449: Class 'Widget1' used before its declaration.
+ class Widget1 { name = 'one'; }
+
+==== tests/cases/compiler/exporter.ts (0 errors) ====
+ export import w = require('./w1');
+
\ No newline at end of file
diff --git a/tests/baselines/reference/extendBaseClassBeforeItsDeclared.errors.txt b/tests/baselines/reference/extendBaseClassBeforeItsDeclared.errors.txt
index 2678fdf8667..64e5c7d3ef3 100644
--- a/tests/baselines/reference/extendBaseClassBeforeItsDeclared.errors.txt
+++ b/tests/baselines/reference/extendBaseClassBeforeItsDeclared.errors.txt
@@ -1,9 +1,9 @@
-tests/cases/compiler/extendBaseClassBeforeItsDeclared.ts(1,23): error TS2690: A class must be declared after its base class.
+tests/cases/compiler/extendBaseClassBeforeItsDeclared.ts(1,23): error TS2449: Class 'base' used before its declaration.
==== tests/cases/compiler/extendBaseClassBeforeItsDeclared.ts (1 errors) ====
class derived extends base { }
~~~~
-!!! error TS2690: A class must be declared after its base class.
+!!! error TS2449: Class 'base' used before its declaration.
class base { constructor (public n: number) { } }
\ No newline at end of file
diff --git a/tests/baselines/reference/for-of14.errors.txt b/tests/baselines/reference/for-of14.errors.txt
index ab95d042689..d4ec79620d9 100644
--- a/tests/baselines/reference/for-of14.errors.txt
+++ b/tests/baselines/reference/for-of14.errors.txt
@@ -1,14 +1,14 @@
-tests/cases/conformance/es6/for-ofStatements/for-of14.ts(2,11): error TS2488: Type must have a '[Symbol.iterator]()' method that returns an iterator.
+tests/cases/conformance/es6/for-ofStatements/for-of14.ts(8,11): error TS2488: Type must have a '[Symbol.iterator]()' method that returns an iterator.
==== tests/cases/conformance/es6/for-ofStatements/for-of14.ts (1 errors) ====
- var v: string;
- for (v of new StringIterator) { } // Should fail because the iterator is not iterable
- ~~~~~~~~~~~~~~~~~~
-!!! error TS2488: Type must have a '[Symbol.iterator]()' method that returns an iterator.
-
class StringIterator {
next() {
return "";
}
- }
\ No newline at end of file
+ }
+
+ var v: string;
+ for (v of new StringIterator) { } // Should fail because the iterator is not iterable
+ ~~~~~~~~~~~~~~~~~~
+!!! error TS2488: Type must have a '[Symbol.iterator]()' method that returns an iterator.
\ No newline at end of file
diff --git a/tests/baselines/reference/for-of14.js b/tests/baselines/reference/for-of14.js
index 42832f8e58e..ac3af1ff1db 100644
--- a/tests/baselines/reference/for-of14.js
+++ b/tests/baselines/reference/for-of14.js
@@ -1,18 +1,18 @@
//// [for-of14.ts]
-var v: string;
-for (v of new StringIterator) { } // Should fail because the iterator is not iterable
-
class StringIterator {
next() {
return "";
}
-}
+}
+
+var v: string;
+for (v of new StringIterator) { } // Should fail because the iterator is not iterable
//// [for-of14.js]
-var v;
-for (v of new StringIterator) { } // Should fail because the iterator is not iterable
class StringIterator {
next() {
return "";
}
}
+var v;
+for (v of new StringIterator) { } // Should fail because the iterator is not iterable
diff --git a/tests/baselines/reference/for-of15.errors.txt b/tests/baselines/reference/for-of15.errors.txt
index 20a4abe4bd0..6d990aa01fc 100644
--- a/tests/baselines/reference/for-of15.errors.txt
+++ b/tests/baselines/reference/for-of15.errors.txt
@@ -1,12 +1,7 @@
-tests/cases/conformance/es6/for-ofStatements/for-of15.ts(2,11): error TS2490: The type returned by the 'next()' method of an iterator must have a 'value' property.
+tests/cases/conformance/es6/for-ofStatements/for-of15.ts(11,11): error TS2490: The type returned by the 'next()' method of an iterator must have a 'value' property.
==== tests/cases/conformance/es6/for-ofStatements/for-of15.ts (1 errors) ====
- var v: string;
- for (v of new StringIterator) { } // Should fail
- ~~~~~~~~~~~~~~~~~~
-!!! error TS2490: The type returned by the 'next()' method of an iterator must have a 'value' property.
-
class StringIterator {
next() {
return "";
@@ -14,4 +9,9 @@ tests/cases/conformance/es6/for-ofStatements/for-of15.ts(2,11): error TS2490: Th
[Symbol.iterator]() {
return this;
}
- }
\ No newline at end of file
+ }
+
+ var v: string;
+ for (v of new StringIterator) { } // Should fail
+ ~~~~~~~~~~~~~~~~~~
+!!! error TS2490: The type returned by the 'next()' method of an iterator must have a 'value' property.
\ No newline at end of file
diff --git a/tests/baselines/reference/for-of15.js b/tests/baselines/reference/for-of15.js
index 62232745c8c..f88c8640168 100644
--- a/tests/baselines/reference/for-of15.js
+++ b/tests/baselines/reference/for-of15.js
@@ -1,7 +1,4 @@
//// [for-of15.ts]
-var v: string;
-for (v of new StringIterator) { } // Should fail
-
class StringIterator {
next() {
return "";
@@ -9,11 +6,12 @@ class StringIterator {
[Symbol.iterator]() {
return this;
}
-}
+}
+
+var v: string;
+for (v of new StringIterator) { } // Should fail
//// [for-of15.js]
-var v;
-for (v of new StringIterator) { } // Should fail
class StringIterator {
next() {
return "";
@@ -22,3 +20,5 @@ class StringIterator {
return this;
}
}
+var v;
+for (v of new StringIterator) { } // Should fail
diff --git a/tests/baselines/reference/for-of16.errors.txt b/tests/baselines/reference/for-of16.errors.txt
index 20e3e876537..7574f98e3d8 100644
--- a/tests/baselines/reference/for-of16.errors.txt
+++ b/tests/baselines/reference/for-of16.errors.txt
@@ -1,14 +1,14 @@
-tests/cases/conformance/es6/for-ofStatements/for-of16.ts(2,11): error TS2489: An iterator must have a 'next()' method.
+tests/cases/conformance/es6/for-ofStatements/for-of16.ts(8,11): error TS2489: An iterator must have a 'next()' method.
==== tests/cases/conformance/es6/for-ofStatements/for-of16.ts (1 errors) ====
- var v: string;
- for (v of new StringIterator) { } // Should fail
- ~~~~~~~~~~~~~~~~~~
-!!! error TS2489: An iterator must have a 'next()' method.
-
class StringIterator {
[Symbol.iterator]() {
return this;
}
- }
\ No newline at end of file
+ }
+
+ var v: string;
+ for (v of new StringIterator) { } // Should fail
+ ~~~~~~~~~~~~~~~~~~
+!!! error TS2489: An iterator must have a 'next()' method.
\ No newline at end of file
diff --git a/tests/baselines/reference/for-of16.js b/tests/baselines/reference/for-of16.js
index 974be239fd7..2219e15a6f9 100644
--- a/tests/baselines/reference/for-of16.js
+++ b/tests/baselines/reference/for-of16.js
@@ -1,18 +1,18 @@
//// [for-of16.ts]
-var v: string;
-for (v of new StringIterator) { } // Should fail
-
class StringIterator {
[Symbol.iterator]() {
return this;
}
-}
+}
+
+var v: string;
+for (v of new StringIterator) { } // Should fail
//// [for-of16.js]
-var v;
-for (v of new StringIterator) { } // Should fail
class StringIterator {
[Symbol.iterator]() {
return this;
}
}
+var v;
+for (v of new StringIterator) { } // Should fail
diff --git a/tests/baselines/reference/for-of17.errors.txt b/tests/baselines/reference/for-of17.errors.txt
index dfdeb8db007..5a77815369f 100644
--- a/tests/baselines/reference/for-of17.errors.txt
+++ b/tests/baselines/reference/for-of17.errors.txt
@@ -1,12 +1,7 @@
-tests/cases/conformance/es6/for-ofStatements/for-of17.ts(2,6): error TS2322: Type 'number' is not assignable to type 'string'.
+tests/cases/conformance/es6/for-ofStatements/for-of17.ts(14,6): error TS2322: Type 'number' is not assignable to type 'string'.
==== tests/cases/conformance/es6/for-ofStatements/for-of17.ts (1 errors) ====
- var v: string;
- for (v of new NumberIterator) { } // Should succeed
- ~
-!!! error TS2322: Type 'number' is not assignable to type 'string'.
-
class NumberIterator {
next() {
return {
@@ -17,4 +12,9 @@ tests/cases/conformance/es6/for-ofStatements/for-of17.ts(2,6): error TS2322: Typ
[Symbol.iterator]() {
return this;
}
- }
\ No newline at end of file
+ }
+
+ var v: string;
+ for (v of new NumberIterator) { } // Should succeed
+ ~
+!!! error TS2322: Type 'number' is not assignable to type 'string'.
\ No newline at end of file
diff --git a/tests/baselines/reference/for-of17.js b/tests/baselines/reference/for-of17.js
index a3927647005..2cd6bbe0d2e 100644
--- a/tests/baselines/reference/for-of17.js
+++ b/tests/baselines/reference/for-of17.js
@@ -1,7 +1,4 @@
//// [for-of17.ts]
-var v: string;
-for (v of new NumberIterator) { } // Should succeed
-
class NumberIterator {
next() {
return {
@@ -12,11 +9,12 @@ class NumberIterator {
[Symbol.iterator]() {
return this;
}
-}
+}
+
+var v: string;
+for (v of new NumberIterator) { } // Should succeed
//// [for-of17.js]
-var v;
-for (v of new NumberIterator) { } // Should succeed
class NumberIterator {
next() {
return {
@@ -28,3 +26,5 @@ class NumberIterator {
return this;
}
}
+var v;
+for (v of new NumberIterator) { } // Should succeed
diff --git a/tests/baselines/reference/for-of18.js b/tests/baselines/reference/for-of18.js
index c31e6b6e8ca..fb7a684098a 100644
--- a/tests/baselines/reference/for-of18.js
+++ b/tests/baselines/reference/for-of18.js
@@ -1,7 +1,4 @@
//// [for-of18.ts]
-var v: string;
-for (v of new StringIterator) { } // Should succeed
-
class StringIterator {
next() {
return {
@@ -12,11 +9,12 @@ class StringIterator {
[Symbol.iterator]() {
return this;
}
-}
+}
+
+var v: string;
+for (v of new StringIterator) { } // Should succeed
//// [for-of18.js]
-var v;
-for (v of new StringIterator) { } // Should succeed
class StringIterator {
next() {
return {
@@ -28,3 +26,5 @@ class StringIterator {
return this;
}
}
+var v;
+for (v of new StringIterator) { } // Should succeed
diff --git a/tests/baselines/reference/for-of18.symbols b/tests/baselines/reference/for-of18.symbols
index b9d32662713..8f552c2757c 100644
--- a/tests/baselines/reference/for-of18.symbols
+++ b/tests/baselines/reference/for-of18.symbols
@@ -1,23 +1,16 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of18.ts ===
-var v: string;
->v : Symbol(v, Decl(for-of18.ts, 0, 3))
-
-for (v of new StringIterator) { } // Should succeed
->v : Symbol(v, Decl(for-of18.ts, 0, 3))
->StringIterator : Symbol(StringIterator, Decl(for-of18.ts, 1, 33))
-
class StringIterator {
->StringIterator : Symbol(StringIterator, Decl(for-of18.ts, 1, 33))
+>StringIterator : Symbol(StringIterator, Decl(for-of18.ts, 0, 0))
next() {
->next : Symbol(StringIterator.next, Decl(for-of18.ts, 3, 22))
+>next : Symbol(StringIterator.next, Decl(for-of18.ts, 0, 22))
return {
value: "",
->value : Symbol(value, Decl(for-of18.ts, 5, 16))
+>value : Symbol(value, Decl(for-of18.ts, 2, 16))
done: false
->done : Symbol(done, Decl(for-of18.ts, 6, 22))
+>done : Symbol(done, Decl(for-of18.ts, 3, 22))
};
}
@@ -27,6 +20,14 @@ class StringIterator {
>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --))
return this;
->this : Symbol(StringIterator, Decl(for-of18.ts, 1, 33))
+>this : Symbol(StringIterator, Decl(for-of18.ts, 0, 0))
}
}
+
+var v: string;
+>v : Symbol(v, Decl(for-of18.ts, 12, 3))
+
+for (v of new StringIterator) { } // Should succeed
+>v : Symbol(v, Decl(for-of18.ts, 12, 3))
+>StringIterator : Symbol(StringIterator, Decl(for-of18.ts, 0, 0))
+
diff --git a/tests/baselines/reference/for-of18.types b/tests/baselines/reference/for-of18.types
index 86978b62cc7..8b70c446254 100644
--- a/tests/baselines/reference/for-of18.types
+++ b/tests/baselines/reference/for-of18.types
@@ -1,12 +1,4 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of18.ts ===
-var v: string;
->v : string
-
-for (v of new StringIterator) { } // Should succeed
->v : string
->new StringIterator : StringIterator
->StringIterator : typeof StringIterator
-
class StringIterator {
>StringIterator : StringIterator
@@ -35,3 +27,12 @@ class StringIterator {
>this : this
}
}
+
+var v: string;
+>v : string
+
+for (v of new StringIterator) { } // Should succeed
+>v : string
+>new StringIterator : StringIterator
+>StringIterator : typeof StringIterator
+
diff --git a/tests/baselines/reference/for-of19.js b/tests/baselines/reference/for-of19.js
index d0f95caa1e2..c0000d8d107 100644
--- a/tests/baselines/reference/for-of19.js
+++ b/tests/baselines/reference/for-of19.js
@@ -1,8 +1,4 @@
//// [for-of19.ts]
-for (var v of new FooIterator) {
- v;
-}
-
class Foo { }
class FooIterator {
next() {
@@ -14,12 +10,13 @@ class FooIterator {
[Symbol.iterator]() {
return this;
}
+}
+
+for (var v of new FooIterator) {
+ v;
}
//// [for-of19.js]
-for (var v of new FooIterator) {
- v;
-}
class Foo {
}
class FooIterator {
@@ -33,3 +30,6 @@ class FooIterator {
return this;
}
}
+for (var v of new FooIterator) {
+ v;
+}
diff --git a/tests/baselines/reference/for-of19.symbols b/tests/baselines/reference/for-of19.symbols
index e1a129aa324..f36dd74f9b9 100644
--- a/tests/baselines/reference/for-of19.symbols
+++ b/tests/baselines/reference/for-of19.symbols
@@ -1,28 +1,20 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of19.ts ===
-for (var v of new FooIterator) {
->v : Symbol(v, Decl(for-of19.ts, 0, 8))
->FooIterator : Symbol(FooIterator, Decl(for-of19.ts, 4, 13))
-
- v;
->v : Symbol(v, Decl(for-of19.ts, 0, 8))
-}
-
class Foo { }
->Foo : Symbol(Foo, Decl(for-of19.ts, 2, 1))
+>Foo : Symbol(Foo, Decl(for-of19.ts, 0, 0))
class FooIterator {
->FooIterator : Symbol(FooIterator, Decl(for-of19.ts, 4, 13))
+>FooIterator : Symbol(FooIterator, Decl(for-of19.ts, 0, 13))
next() {
->next : Symbol(FooIterator.next, Decl(for-of19.ts, 5, 19))
+>next : Symbol(FooIterator.next, Decl(for-of19.ts, 1, 19))
return {
value: new Foo,
->value : Symbol(value, Decl(for-of19.ts, 7, 16))
->Foo : Symbol(Foo, Decl(for-of19.ts, 2, 1))
+>value : Symbol(value, Decl(for-of19.ts, 3, 16))
+>Foo : Symbol(Foo, Decl(for-of19.ts, 0, 0))
done: false
->done : Symbol(done, Decl(for-of19.ts, 8, 27))
+>done : Symbol(done, Decl(for-of19.ts, 4, 27))
};
}
@@ -32,6 +24,14 @@ class FooIterator {
>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --))
return this;
->this : Symbol(FooIterator, Decl(for-of19.ts, 4, 13))
+>this : Symbol(FooIterator, Decl(for-of19.ts, 0, 13))
}
}
+
+for (var v of new FooIterator) {
+>v : Symbol(v, Decl(for-of19.ts, 13, 8))
+>FooIterator : Symbol(FooIterator, Decl(for-of19.ts, 0, 13))
+
+ v;
+>v : Symbol(v, Decl(for-of19.ts, 13, 8))
+}
diff --git a/tests/baselines/reference/for-of19.types b/tests/baselines/reference/for-of19.types
index a2882ccf1ac..a62b2d64c8e 100644
--- a/tests/baselines/reference/for-of19.types
+++ b/tests/baselines/reference/for-of19.types
@@ -1,13 +1,4 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of19.ts ===
-for (var v of new FooIterator) {
->v : Foo
->new FooIterator : FooIterator
->FooIterator : typeof FooIterator
-
- v;
->v : Foo
-}
-
class Foo { }
>Foo : Foo
@@ -40,3 +31,12 @@ class FooIterator {
>this : this
}
}
+
+for (var v of new FooIterator) {
+>v : Foo
+>new FooIterator : FooIterator
+>FooIterator : typeof FooIterator
+
+ v;
+>v : Foo
+}
diff --git a/tests/baselines/reference/for-of20.js b/tests/baselines/reference/for-of20.js
index c098abd2f73..97259778d26 100644
--- a/tests/baselines/reference/for-of20.js
+++ b/tests/baselines/reference/for-of20.js
@@ -1,8 +1,4 @@
//// [for-of20.ts]
-for (let v of new FooIterator) {
- v;
-}
-
class Foo { }
class FooIterator {
next() {
@@ -14,12 +10,13 @@ class FooIterator {
[Symbol.iterator]() {
return this;
}
+}
+
+for (let v of new FooIterator) {
+ v;
}
//// [for-of20.js]
-for (let v of new FooIterator) {
- v;
-}
class Foo {
}
class FooIterator {
@@ -33,3 +30,6 @@ class FooIterator {
return this;
}
}
+for (let v of new FooIterator) {
+ v;
+}
diff --git a/tests/baselines/reference/for-of20.symbols b/tests/baselines/reference/for-of20.symbols
index 20b444e6bcc..5fff9fd7871 100644
--- a/tests/baselines/reference/for-of20.symbols
+++ b/tests/baselines/reference/for-of20.symbols
@@ -1,28 +1,20 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of20.ts ===
-for (let v of new FooIterator) {
->v : Symbol(v, Decl(for-of20.ts, 0, 8))
->FooIterator : Symbol(FooIterator, Decl(for-of20.ts, 4, 13))
-
- v;
->v : Symbol(v, Decl(for-of20.ts, 0, 8))
-}
-
class Foo { }
->Foo : Symbol(Foo, Decl(for-of20.ts, 2, 1))
+>Foo : Symbol(Foo, Decl(for-of20.ts, 0, 0))
class FooIterator {
->FooIterator : Symbol(FooIterator, Decl(for-of20.ts, 4, 13))
+>FooIterator : Symbol(FooIterator, Decl(for-of20.ts, 0, 13))
next() {
->next : Symbol(FooIterator.next, Decl(for-of20.ts, 5, 19))
+>next : Symbol(FooIterator.next, Decl(for-of20.ts, 1, 19))
return {
value: new Foo,
->value : Symbol(value, Decl(for-of20.ts, 7, 16))
->Foo : Symbol(Foo, Decl(for-of20.ts, 2, 1))
+>value : Symbol(value, Decl(for-of20.ts, 3, 16))
+>Foo : Symbol(Foo, Decl(for-of20.ts, 0, 0))
done: false
->done : Symbol(done, Decl(for-of20.ts, 8, 27))
+>done : Symbol(done, Decl(for-of20.ts, 4, 27))
};
}
@@ -32,6 +24,14 @@ class FooIterator {
>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --))
return this;
->this : Symbol(FooIterator, Decl(for-of20.ts, 4, 13))
+>this : Symbol(FooIterator, Decl(for-of20.ts, 0, 13))
}
}
+
+for (let v of new FooIterator) {
+>v : Symbol(v, Decl(for-of20.ts, 13, 8))
+>FooIterator : Symbol(FooIterator, Decl(for-of20.ts, 0, 13))
+
+ v;
+>v : Symbol(v, Decl(for-of20.ts, 13, 8))
+}
diff --git a/tests/baselines/reference/for-of20.types b/tests/baselines/reference/for-of20.types
index 9274c7f4b96..e620b603107 100644
--- a/tests/baselines/reference/for-of20.types
+++ b/tests/baselines/reference/for-of20.types
@@ -1,13 +1,4 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of20.ts ===
-for (let v of new FooIterator) {
->v : Foo
->new FooIterator : FooIterator
->FooIterator : typeof FooIterator
-
- v;
->v : Foo
-}
-
class Foo { }
>Foo : Foo
@@ -40,3 +31,12 @@ class FooIterator {
>this : this
}
}
+
+for (let v of new FooIterator) {
+>v : Foo
+>new FooIterator : FooIterator
+>FooIterator : typeof FooIterator
+
+ v;
+>v : Foo
+}
diff --git a/tests/baselines/reference/for-of21.js b/tests/baselines/reference/for-of21.js
index 27da28e3b4f..66791de89b3 100644
--- a/tests/baselines/reference/for-of21.js
+++ b/tests/baselines/reference/for-of21.js
@@ -1,8 +1,4 @@
//// [for-of21.ts]
-for (const v of new FooIterator) {
- v;
-}
-
class Foo { }
class FooIterator {
next() {
@@ -14,12 +10,13 @@ class FooIterator {
[Symbol.iterator]() {
return this;
}
+}
+
+for (const v of new FooIterator) {
+ v;
}
//// [for-of21.js]
-for (const v of new FooIterator) {
- v;
-}
class Foo {
}
class FooIterator {
@@ -33,3 +30,6 @@ class FooIterator {
return this;
}
}
+for (const v of new FooIterator) {
+ v;
+}
diff --git a/tests/baselines/reference/for-of21.symbols b/tests/baselines/reference/for-of21.symbols
index 71403edfc9e..0068c9ef4a8 100644
--- a/tests/baselines/reference/for-of21.symbols
+++ b/tests/baselines/reference/for-of21.symbols
@@ -1,28 +1,20 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of21.ts ===
-for (const v of new FooIterator) {
->v : Symbol(v, Decl(for-of21.ts, 0, 10))
->FooIterator : Symbol(FooIterator, Decl(for-of21.ts, 4, 13))
-
- v;
->v : Symbol(v, Decl(for-of21.ts, 0, 10))
-}
-
class Foo { }
->Foo : Symbol(Foo, Decl(for-of21.ts, 2, 1))
+>Foo : Symbol(Foo, Decl(for-of21.ts, 0, 0))
class FooIterator {
->FooIterator : Symbol(FooIterator, Decl(for-of21.ts, 4, 13))
+>FooIterator : Symbol(FooIterator, Decl(for-of21.ts, 0, 13))
next() {
->next : Symbol(FooIterator.next, Decl(for-of21.ts, 5, 19))
+>next : Symbol(FooIterator.next, Decl(for-of21.ts, 1, 19))
return {
value: new Foo,
->value : Symbol(value, Decl(for-of21.ts, 7, 16))
->Foo : Symbol(Foo, Decl(for-of21.ts, 2, 1))
+>value : Symbol(value, Decl(for-of21.ts, 3, 16))
+>Foo : Symbol(Foo, Decl(for-of21.ts, 0, 0))
done: false
->done : Symbol(done, Decl(for-of21.ts, 8, 27))
+>done : Symbol(done, Decl(for-of21.ts, 4, 27))
};
}
@@ -32,6 +24,14 @@ class FooIterator {
>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --))
return this;
->this : Symbol(FooIterator, Decl(for-of21.ts, 4, 13))
+>this : Symbol(FooIterator, Decl(for-of21.ts, 0, 13))
}
}
+
+for (const v of new FooIterator) {
+>v : Symbol(v, Decl(for-of21.ts, 13, 10))
+>FooIterator : Symbol(FooIterator, Decl(for-of21.ts, 0, 13))
+
+ v;
+>v : Symbol(v, Decl(for-of21.ts, 13, 10))
+}
diff --git a/tests/baselines/reference/for-of21.types b/tests/baselines/reference/for-of21.types
index 1366cb1a420..59c66b2a41e 100644
--- a/tests/baselines/reference/for-of21.types
+++ b/tests/baselines/reference/for-of21.types
@@ -1,13 +1,4 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of21.ts ===
-for (const v of new FooIterator) {
->v : Foo
->new FooIterator : FooIterator
->FooIterator : typeof FooIterator
-
- v;
->v : Foo
-}
-
class Foo { }
>Foo : Foo
@@ -40,3 +31,12 @@ class FooIterator {
>this : this
}
}
+
+for (const v of new FooIterator) {
+>v : Foo
+>new FooIterator : FooIterator
+>FooIterator : typeof FooIterator
+
+ v;
+>v : Foo
+}
diff --git a/tests/baselines/reference/for-of22.js b/tests/baselines/reference/for-of22.js
index 886e8dba7c3..767ed1cc15d 100644
--- a/tests/baselines/reference/for-of22.js
+++ b/tests/baselines/reference/for-of22.js
@@ -1,9 +1,4 @@
//// [for-of22.ts]
-v;
-for (var v of new FooIterator) {
-
-}
-
class Foo { }
class FooIterator {
next() {
@@ -15,12 +10,14 @@ class FooIterator {
[Symbol.iterator]() {
return this;
}
+}
+
+v;
+for (var v of new FooIterator) {
+
}
//// [for-of22.js]
-v;
-for (var v of new FooIterator) {
-}
class Foo {
}
class FooIterator {
@@ -34,3 +31,6 @@ class FooIterator {
return this;
}
}
+v;
+for (var v of new FooIterator) {
+}
diff --git a/tests/baselines/reference/for-of22.symbols b/tests/baselines/reference/for-of22.symbols
index 36a522759cf..929cae4ed77 100644
--- a/tests/baselines/reference/for-of22.symbols
+++ b/tests/baselines/reference/for-of22.symbols
@@ -1,29 +1,20 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of22.ts ===
-v;
->v : Symbol(v, Decl(for-of22.ts, 1, 8))
-
-for (var v of new FooIterator) {
->v : Symbol(v, Decl(for-of22.ts, 1, 8))
->FooIterator : Symbol(FooIterator, Decl(for-of22.ts, 5, 13))
-
-}
-
class Foo { }
->Foo : Symbol(Foo, Decl(for-of22.ts, 3, 1))
+>Foo : Symbol(Foo, Decl(for-of22.ts, 0, 0))
class FooIterator {
->FooIterator : Symbol(FooIterator, Decl(for-of22.ts, 5, 13))
+>FooIterator : Symbol(FooIterator, Decl(for-of22.ts, 0, 13))
next() {
->next : Symbol(FooIterator.next, Decl(for-of22.ts, 6, 19))
+>next : Symbol(FooIterator.next, Decl(for-of22.ts, 1, 19))
return {
value: new Foo,
->value : Symbol(value, Decl(for-of22.ts, 8, 16))
->Foo : Symbol(Foo, Decl(for-of22.ts, 3, 1))
+>value : Symbol(value, Decl(for-of22.ts, 3, 16))
+>Foo : Symbol(Foo, Decl(for-of22.ts, 0, 0))
done: false
->done : Symbol(done, Decl(for-of22.ts, 9, 27))
+>done : Symbol(done, Decl(for-of22.ts, 4, 27))
};
}
@@ -33,6 +24,15 @@ class FooIterator {
>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --))
return this;
->this : Symbol(FooIterator, Decl(for-of22.ts, 5, 13))
+>this : Symbol(FooIterator, Decl(for-of22.ts, 0, 13))
}
}
+
+v;
+>v : Symbol(v, Decl(for-of22.ts, 14, 8))
+
+for (var v of new FooIterator) {
+>v : Symbol(v, Decl(for-of22.ts, 14, 8))
+>FooIterator : Symbol(FooIterator, Decl(for-of22.ts, 0, 13))
+
+}
diff --git a/tests/baselines/reference/for-of22.types b/tests/baselines/reference/for-of22.types
index 80cd42b2b33..e1449875da5 100644
--- a/tests/baselines/reference/for-of22.types
+++ b/tests/baselines/reference/for-of22.types
@@ -1,14 +1,4 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of22.ts ===
-v;
->v : Foo
-
-for (var v of new FooIterator) {
->v : Foo
->new FooIterator : FooIterator
->FooIterator : typeof FooIterator
-
-}
-
class Foo { }
>Foo : Foo
@@ -41,3 +31,13 @@ class FooIterator {
>this : this
}
}
+
+v;
+>v : Foo
+
+for (var v of new FooIterator) {
+>v : Foo
+>new FooIterator : FooIterator
+>FooIterator : typeof FooIterator
+
+}
diff --git a/tests/baselines/reference/for-of23.js b/tests/baselines/reference/for-of23.js
index f5649128c11..9ad03c0109a 100644
--- a/tests/baselines/reference/for-of23.js
+++ b/tests/baselines/reference/for-of23.js
@@ -1,8 +1,4 @@
//// [for-of23.ts]
-for (const v of new FooIterator) {
- const v = 0; // new scope
-}
-
class Foo { }
class FooIterator {
next() {
@@ -14,12 +10,13 @@ class FooIterator {
[Symbol.iterator]() {
return this;
}
+}
+
+for (const v of new FooIterator) {
+ const v = 0; // new scope
}
//// [for-of23.js]
-for (const v of new FooIterator) {
- const v = 0; // new scope
-}
class Foo {
}
class FooIterator {
@@ -33,3 +30,6 @@ class FooIterator {
return this;
}
}
+for (const v of new FooIterator) {
+ const v = 0; // new scope
+}
diff --git a/tests/baselines/reference/for-of23.symbols b/tests/baselines/reference/for-of23.symbols
index 3be07f4fd4a..7a57e38baf7 100644
--- a/tests/baselines/reference/for-of23.symbols
+++ b/tests/baselines/reference/for-of23.symbols
@@ -1,28 +1,20 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of23.ts ===
-for (const v of new FooIterator) {
->v : Symbol(v, Decl(for-of23.ts, 0, 10))
->FooIterator : Symbol(FooIterator, Decl(for-of23.ts, 4, 13))
-
- const v = 0; // new scope
->v : Symbol(v, Decl(for-of23.ts, 1, 9))
-}
-
class Foo { }
->Foo : Symbol(Foo, Decl(for-of23.ts, 2, 1))
+>Foo : Symbol(Foo, Decl(for-of23.ts, 0, 0))
class FooIterator {
->FooIterator : Symbol(FooIterator, Decl(for-of23.ts, 4, 13))
+>FooIterator : Symbol(FooIterator, Decl(for-of23.ts, 0, 13))
next() {
->next : Symbol(FooIterator.next, Decl(for-of23.ts, 5, 19))
+>next : Symbol(FooIterator.next, Decl(for-of23.ts, 1, 19))
return {
value: new Foo,
->value : Symbol(value, Decl(for-of23.ts, 7, 16))
->Foo : Symbol(Foo, Decl(for-of23.ts, 2, 1))
+>value : Symbol(value, Decl(for-of23.ts, 3, 16))
+>Foo : Symbol(Foo, Decl(for-of23.ts, 0, 0))
done: false
->done : Symbol(done, Decl(for-of23.ts, 8, 27))
+>done : Symbol(done, Decl(for-of23.ts, 4, 27))
};
}
@@ -32,6 +24,14 @@ class FooIterator {
>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --))
return this;
->this : Symbol(FooIterator, Decl(for-of23.ts, 4, 13))
+>this : Symbol(FooIterator, Decl(for-of23.ts, 0, 13))
}
}
+
+for (const v of new FooIterator) {
+>v : Symbol(v, Decl(for-of23.ts, 13, 10))
+>FooIterator : Symbol(FooIterator, Decl(for-of23.ts, 0, 13))
+
+ const v = 0; // new scope
+>v : Symbol(v, Decl(for-of23.ts, 14, 9))
+}
diff --git a/tests/baselines/reference/for-of23.types b/tests/baselines/reference/for-of23.types
index ed74156f514..427eb57f5a1 100644
--- a/tests/baselines/reference/for-of23.types
+++ b/tests/baselines/reference/for-of23.types
@@ -1,14 +1,4 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of23.ts ===
-for (const v of new FooIterator) {
->v : Foo
->new FooIterator : FooIterator
->FooIterator : typeof FooIterator
-
- const v = 0; // new scope
->v : 0
->0 : 0
-}
-
class Foo { }
>Foo : Foo
@@ -41,3 +31,13 @@ class FooIterator {
>this : this
}
}
+
+for (const v of new FooIterator) {
+>v : Foo
+>new FooIterator : FooIterator
+>FooIterator : typeof FooIterator
+
+ const v = 0; // new scope
+>v : 0
+>0 : 0
+}
diff --git a/tests/baselines/reference/for-of25.js b/tests/baselines/reference/for-of25.js
index 5715f6e8a3a..032efa52ae3 100644
--- a/tests/baselines/reference/for-of25.js
+++ b/tests/baselines/reference/for-of25.js
@@ -1,18 +1,18 @@
//// [for-of25.ts]
-var x: any;
-for (var v of new StringIterator) { }
-
class StringIterator {
[Symbol.iterator]() {
return x;
}
-}
+}
+
+var x: any;
+for (var v of new StringIterator) { }
//// [for-of25.js]
-var x;
-for (var v of new StringIterator) { }
class StringIterator {
[Symbol.iterator]() {
return x;
}
}
+var x;
+for (var v of new StringIterator) { }
diff --git a/tests/baselines/reference/for-of25.symbols b/tests/baselines/reference/for-of25.symbols
index e21348ba565..e9304e517bd 100644
--- a/tests/baselines/reference/for-of25.symbols
+++ b/tests/baselines/reference/for-of25.symbols
@@ -1,13 +1,6 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of25.ts ===
-var x: any;
->x : Symbol(x, Decl(for-of25.ts, 0, 3))
-
-for (var v of new StringIterator) { }
->v : Symbol(v, Decl(for-of25.ts, 1, 8))
->StringIterator : Symbol(StringIterator, Decl(for-of25.ts, 1, 37))
-
class StringIterator {
->StringIterator : Symbol(StringIterator, Decl(for-of25.ts, 1, 37))
+>StringIterator : Symbol(StringIterator, Decl(for-of25.ts, 0, 0))
[Symbol.iterator]() {
>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --))
@@ -15,6 +8,14 @@ class StringIterator {
>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --))
return x;
->x : Symbol(x, Decl(for-of25.ts, 0, 3))
+>x : Symbol(x, Decl(for-of25.ts, 6, 3))
}
}
+
+var x: any;
+>x : Symbol(x, Decl(for-of25.ts, 6, 3))
+
+for (var v of new StringIterator) { }
+>v : Symbol(v, Decl(for-of25.ts, 7, 8))
+>StringIterator : Symbol(StringIterator, Decl(for-of25.ts, 0, 0))
+
diff --git a/tests/baselines/reference/for-of25.types b/tests/baselines/reference/for-of25.types
index c4d6b32aebc..7a11b7acf67 100644
--- a/tests/baselines/reference/for-of25.types
+++ b/tests/baselines/reference/for-of25.types
@@ -1,12 +1,4 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of25.ts ===
-var x: any;
->x : any
-
-for (var v of new StringIterator) { }
->v : any
->new StringIterator : StringIterator
->StringIterator : typeof StringIterator
-
class StringIterator {
>StringIterator : StringIterator
@@ -19,3 +11,12 @@ class StringIterator {
>x : any
}
}
+
+var x: any;
+>x : any
+
+for (var v of new StringIterator) { }
+>v : any
+>new StringIterator : StringIterator
+>StringIterator : typeof StringIterator
+
diff --git a/tests/baselines/reference/for-of26.js b/tests/baselines/reference/for-of26.js
index 33319f50efa..ab9c4fdca92 100644
--- a/tests/baselines/reference/for-of26.js
+++ b/tests/baselines/reference/for-of26.js
@@ -1,7 +1,4 @@
//// [for-of26.ts]
-var x: any;
-for (var v of new StringIterator) { }
-
class StringIterator {
next() {
return x;
@@ -9,11 +6,12 @@ class StringIterator {
[Symbol.iterator]() {
return this;
}
-}
+}
+
+var x: any;
+for (var v of new StringIterator) { }
//// [for-of26.js]
-var x;
-for (var v of new StringIterator) { }
class StringIterator {
next() {
return x;
@@ -22,3 +20,5 @@ class StringIterator {
return this;
}
}
+var x;
+for (var v of new StringIterator) { }
diff --git a/tests/baselines/reference/for-of26.symbols b/tests/baselines/reference/for-of26.symbols
index 947240bf8e3..20473898253 100644
--- a/tests/baselines/reference/for-of26.symbols
+++ b/tests/baselines/reference/for-of26.symbols
@@ -1,19 +1,12 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of26.ts ===
-var x: any;
->x : Symbol(x, Decl(for-of26.ts, 0, 3))
-
-for (var v of new StringIterator) { }
->v : Symbol(v, Decl(for-of26.ts, 1, 8))
->StringIterator : Symbol(StringIterator, Decl(for-of26.ts, 1, 37))
-
class StringIterator {
->StringIterator : Symbol(StringIterator, Decl(for-of26.ts, 1, 37))
+>StringIterator : Symbol(StringIterator, Decl(for-of26.ts, 0, 0))
next() {
->next : Symbol(StringIterator.next, Decl(for-of26.ts, 3, 22))
+>next : Symbol(StringIterator.next, Decl(for-of26.ts, 0, 22))
return x;
->x : Symbol(x, Decl(for-of26.ts, 0, 3))
+>x : Symbol(x, Decl(for-of26.ts, 9, 3))
}
[Symbol.iterator]() {
>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --))
@@ -21,6 +14,14 @@ class StringIterator {
>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --))
return this;
->this : Symbol(StringIterator, Decl(for-of26.ts, 1, 37))
+>this : Symbol(StringIterator, Decl(for-of26.ts, 0, 0))
}
}
+
+var x: any;
+>x : Symbol(x, Decl(for-of26.ts, 9, 3))
+
+for (var v of new StringIterator) { }
+>v : Symbol(v, Decl(for-of26.ts, 10, 8))
+>StringIterator : Symbol(StringIterator, Decl(for-of26.ts, 0, 0))
+
diff --git a/tests/baselines/reference/for-of26.types b/tests/baselines/reference/for-of26.types
index fe930e2e57f..b0cfd891741 100644
--- a/tests/baselines/reference/for-of26.types
+++ b/tests/baselines/reference/for-of26.types
@@ -1,12 +1,4 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of26.ts ===
-var x: any;
->x : any
-
-for (var v of new StringIterator) { }
->v : any
->new StringIterator : StringIterator
->StringIterator : typeof StringIterator
-
class StringIterator {
>StringIterator : StringIterator
@@ -25,3 +17,12 @@ class StringIterator {
>this : this
}
}
+
+var x: any;
+>x : any
+
+for (var v of new StringIterator) { }
+>v : any
+>new StringIterator : StringIterator
+>StringIterator : typeof StringIterator
+
diff --git a/tests/baselines/reference/for-of27.js b/tests/baselines/reference/for-of27.js
index 1ac3a1dfc42..6adc66e241b 100644
--- a/tests/baselines/reference/for-of27.js
+++ b/tests/baselines/reference/for-of27.js
@@ -1,11 +1,11 @@
//// [for-of27.ts]
-for (var v of new StringIterator) { }
-
class StringIterator {
[Symbol.iterator]: any;
-}
+}
+
+for (var v of new StringIterator) { }
//// [for-of27.js]
-for (var v of new StringIterator) { }
class StringIterator {
}
+for (var v of new StringIterator) { }
diff --git a/tests/baselines/reference/for-of27.symbols b/tests/baselines/reference/for-of27.symbols
index b2b733ab13b..4799a138351 100644
--- a/tests/baselines/reference/for-of27.symbols
+++ b/tests/baselines/reference/for-of27.symbols
@@ -1,13 +1,14 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of27.ts ===
-for (var v of new StringIterator) { }
->v : Symbol(v, Decl(for-of27.ts, 0, 8))
->StringIterator : Symbol(StringIterator, Decl(for-of27.ts, 0, 37))
-
class StringIterator {
->StringIterator : Symbol(StringIterator, Decl(for-of27.ts, 0, 37))
+>StringIterator : Symbol(StringIterator, Decl(for-of27.ts, 0, 0))
[Symbol.iterator]: any;
>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --))
>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --))
>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --))
}
+
+for (var v of new StringIterator) { }
+>v : Symbol(v, Decl(for-of27.ts, 4, 8))
+>StringIterator : Symbol(StringIterator, Decl(for-of27.ts, 0, 0))
+
diff --git a/tests/baselines/reference/for-of27.types b/tests/baselines/reference/for-of27.types
index 8e9130ce272..f6115ccf8ce 100644
--- a/tests/baselines/reference/for-of27.types
+++ b/tests/baselines/reference/for-of27.types
@@ -1,9 +1,4 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of27.ts ===
-for (var v of new StringIterator) { }
->v : any
->new StringIterator : StringIterator
->StringIterator : typeof StringIterator
-
class StringIterator {
>StringIterator : StringIterator
@@ -12,3 +7,9 @@ class StringIterator {
>Symbol : SymbolConstructor
>iterator : symbol
}
+
+for (var v of new StringIterator) { }
+>v : any
+>new StringIterator : StringIterator
+>StringIterator : typeof StringIterator
+
diff --git a/tests/baselines/reference/for-of28.js b/tests/baselines/reference/for-of28.js
index 78e86774813..e06e2fc6abc 100644
--- a/tests/baselines/reference/for-of28.js
+++ b/tests/baselines/reference/for-of28.js
@@ -1,17 +1,17 @@
//// [for-of28.ts]
-for (var v of new StringIterator) { }
-
class StringIterator {
next: any;
[Symbol.iterator]() {
return this;
}
-}
+}
+
+for (var v of new StringIterator) { }
//// [for-of28.js]
-for (var v of new StringIterator) { }
class StringIterator {
[Symbol.iterator]() {
return this;
}
}
+for (var v of new StringIterator) { }
diff --git a/tests/baselines/reference/for-of28.symbols b/tests/baselines/reference/for-of28.symbols
index 52ed4fd7459..ad5ea53a80e 100644
--- a/tests/baselines/reference/for-of28.symbols
+++ b/tests/baselines/reference/for-of28.symbols
@@ -1,13 +1,9 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of28.ts ===
-for (var v of new StringIterator) { }
->v : Symbol(v, Decl(for-of28.ts, 0, 8))
->StringIterator : Symbol(StringIterator, Decl(for-of28.ts, 0, 37))
-
class StringIterator {
->StringIterator : Symbol(StringIterator, Decl(for-of28.ts, 0, 37))
+>StringIterator : Symbol(StringIterator, Decl(for-of28.ts, 0, 0))
next: any;
->next : Symbol(StringIterator.next, Decl(for-of28.ts, 2, 22))
+>next : Symbol(StringIterator.next, Decl(for-of28.ts, 0, 22))
[Symbol.iterator]() {
>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --))
@@ -15,6 +11,11 @@ class StringIterator {
>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --))
return this;
->this : Symbol(StringIterator, Decl(for-of28.ts, 0, 37))
+>this : Symbol(StringIterator, Decl(for-of28.ts, 0, 0))
}
}
+
+for (var v of new StringIterator) { }
+>v : Symbol(v, Decl(for-of28.ts, 7, 8))
+>StringIterator : Symbol(StringIterator, Decl(for-of28.ts, 0, 0))
+
diff --git a/tests/baselines/reference/for-of28.types b/tests/baselines/reference/for-of28.types
index 882d2df6186..a454a0c4485 100644
--- a/tests/baselines/reference/for-of28.types
+++ b/tests/baselines/reference/for-of28.types
@@ -1,9 +1,4 @@
=== tests/cases/conformance/es6/for-ofStatements/for-of28.ts ===
-for (var v of new StringIterator) { }
->v : any
->new StringIterator : StringIterator
->StringIterator : typeof StringIterator
-
class StringIterator {
>StringIterator : StringIterator
@@ -19,3 +14,9 @@ class StringIterator {
>this : this
}
}
+
+for (var v of new StringIterator) { }
+>v : any
+>new StringIterator : StringIterator
+>StringIterator : typeof StringIterator
+
diff --git a/tests/baselines/reference/for-of30.errors.txt b/tests/baselines/reference/for-of30.errors.txt
index 6434b5294d5..b0091c90b57 100644
--- a/tests/baselines/reference/for-of30.errors.txt
+++ b/tests/baselines/reference/for-of30.errors.txt
@@ -1,4 +1,4 @@
-tests/cases/conformance/es6/for-ofStatements/for-of30.ts(1,15): error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'.
+tests/cases/conformance/es6/for-ofStatements/for-of30.ts(16,15): error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'.
Types of property '[Symbol.iterator]' are incompatible.
Type '() => StringIterator' is not assignable to type '() => Iterator'.
Type 'StringIterator' is not assignable to type 'Iterator'.
@@ -7,15 +7,6 @@ tests/cases/conformance/es6/for-ofStatements/for-of30.ts(1,15): error TS2322: Ty
==== tests/cases/conformance/es6/for-ofStatements/for-of30.ts (1 errors) ====
- for (var v of new StringIterator) { }
- ~~~~~~~~~~~~~~~~~~
-!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'.
-!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible.
-!!! error TS2322: Type '() => StringIterator' is not assignable to type '() => Iterator'.
-!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterator'.
-!!! error TS2322: Types of property 'return' are incompatible.
-!!! error TS2322: Type 'number' is not assignable to type '(value?: any) => IteratorResult'.
-
class StringIterator {
next() {
return {
@@ -29,4 +20,13 @@ tests/cases/conformance/es6/for-ofStatements/for-of30.ts(1,15): error TS2322: Ty
[Symbol.iterator]() {
return this;
}
- }
\ No newline at end of file
+ }
+
+ for (var v of new StringIterator) { }
+ ~~~~~~~~~~~~~~~~~~
+!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'.
+!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible.
+!!! error TS2322: Type '() => StringIterator' is not assignable to type '() => Iterator'.
+!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterator'.
+!!! error TS2322: Types of property 'return' are incompatible.
+!!! error TS2322: Type 'number' is not assignable to type '(value?: any) => IteratorResult'.
\ No newline at end of file
diff --git a/tests/baselines/reference/for-of30.js b/tests/baselines/reference/for-of30.js
index 37316774c95..935944db640 100644
--- a/tests/baselines/reference/for-of30.js
+++ b/tests/baselines/reference/for-of30.js
@@ -1,6 +1,4 @@
//// [for-of30.ts]
-for (var v of new StringIterator) { }
-
class StringIterator {
next() {
return {
@@ -14,10 +12,11 @@ class StringIterator {
[Symbol.iterator]() {
return this;
}
-}
+}
+
+for (var v of new StringIterator) { }
//// [for-of30.js]
-for (var v of new StringIterator) { }
class StringIterator {
constructor() {
this.return = 0;
@@ -32,3 +31,4 @@ class StringIterator {
return this;
}
}
+for (var v of new StringIterator) { }
diff --git a/tests/baselines/reference/for-of31.errors.txt b/tests/baselines/reference/for-of31.errors.txt
index 6d5f6e816be..bf38e0f5008 100644
--- a/tests/baselines/reference/for-of31.errors.txt
+++ b/tests/baselines/reference/for-of31.errors.txt
@@ -1,4 +1,4 @@
-tests/cases/conformance/es6/for-ofStatements/for-of31.ts(1,15): error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'.
+tests/cases/conformance/es6/for-ofStatements/for-of31.ts(14,15): error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'.
Types of property '[Symbol.iterator]' are incompatible.
Type '() => StringIterator' is not assignable to type '() => Iterator'.
Type 'StringIterator' is not assignable to type 'Iterator'.
@@ -9,17 +9,6 @@ tests/cases/conformance/es6/for-ofStatements/for-of31.ts(1,15): error TS2322: Ty
==== tests/cases/conformance/es6/for-ofStatements/for-of31.ts (1 errors) ====
- for (var v of new StringIterator) { }
- ~~~~~~~~~~~~~~~~~~
-!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'.
-!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible.
-!!! error TS2322: Type '() => StringIterator' is not assignable to type '() => Iterator'.
-!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterator'.
-!!! error TS2322: Types of property 'next' are incompatible.
-!!! error TS2322: Type '() => { value: string; }' is not assignable to type '(value?: any) => IteratorResult'.
-!!! error TS2322: Type '{ value: string; }' is not assignable to type 'IteratorResult'.
-!!! error TS2322: Property 'done' is missing in type '{ value: string; }'.
-
class StringIterator {
next() {
return {
@@ -31,4 +20,15 @@ tests/cases/conformance/es6/for-ofStatements/for-of31.ts(1,15): error TS2322: Ty
[Symbol.iterator]() {
return this;
}
- }
\ No newline at end of file
+ }
+
+ for (var v of new StringIterator) { }
+ ~~~~~~~~~~~~~~~~~~
+!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'.
+!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible.
+!!! error TS2322: Type '() => StringIterator' is not assignable to type '() => Iterator'.
+!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterator'.
+!!! error TS2322: Types of property 'next' are incompatible.
+!!! error TS2322: Type '() => { value: string; }' is not assignable to type '(value?: any) => IteratorResult'.
+!!! error TS2322: Type '{ value: string; }' is not assignable to type 'IteratorResult'.
+!!! error TS2322: Property 'done' is missing in type '{ value: string; }'.
\ No newline at end of file
diff --git a/tests/baselines/reference/for-of31.js b/tests/baselines/reference/for-of31.js
index a92e827b91e..84e24bed5a9 100644
--- a/tests/baselines/reference/for-of31.js
+++ b/tests/baselines/reference/for-of31.js
@@ -1,6 +1,4 @@
//// [for-of31.ts]
-for (var v of new StringIterator) { }
-
class StringIterator {
next() {
return {
@@ -12,10 +10,11 @@ class StringIterator {
[Symbol.iterator]() {
return this;
}
-}
+}
+
+for (var v of new StringIterator) { }
//// [for-of31.js]
-for (var v of new StringIterator) { }
class StringIterator {
next() {
return {
@@ -27,3 +26,4 @@ class StringIterator {
return this;
}
}
+for (var v of new StringIterator) { }
diff --git a/tests/baselines/reference/for-of33.errors.txt b/tests/baselines/reference/for-of33.errors.txt
index ff1feacd7b3..eba30ce9bf9 100644
--- a/tests/baselines/reference/for-of33.errors.txt
+++ b/tests/baselines/reference/for-of33.errors.txt
@@ -1,16 +1,16 @@
-tests/cases/conformance/es6/for-ofStatements/for-of33.ts(1,10): error TS7022: 'v' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
-tests/cases/conformance/es6/for-ofStatements/for-of33.ts(4,5): error TS7023: '[Symbol.iterator]' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.
+tests/cases/conformance/es6/for-ofStatements/for-of33.ts(2,5): error TS7023: '[Symbol.iterator]' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.
+tests/cases/conformance/es6/for-ofStatements/for-of33.ts(7,10): error TS7022: 'v' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
==== tests/cases/conformance/es6/for-ofStatements/for-of33.ts (2 errors) ====
- for (var v of new StringIterator) { }
- ~
-!!! error TS7022: 'v' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
-
class StringIterator {
[Symbol.iterator]() {
~~~~~~~~~~~~~~~~~
!!! error TS7023: '[Symbol.iterator]' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.
return v;
}
- }
\ No newline at end of file
+ }
+
+ for (var v of new StringIterator) { }
+ ~
+!!! error TS7022: 'v' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
\ No newline at end of file
diff --git a/tests/baselines/reference/for-of33.js b/tests/baselines/reference/for-of33.js
index b63aeedf774..e77d3cf5de8 100644
--- a/tests/baselines/reference/for-of33.js
+++ b/tests/baselines/reference/for-of33.js
@@ -1,16 +1,16 @@
//// [for-of33.ts]
-for (var v of new StringIterator) { }
-
class StringIterator {
[Symbol.iterator]() {
return v;
}
-}
+}
+
+for (var v of new StringIterator) { }
//// [for-of33.js]
-for (var v of new StringIterator) { }
class StringIterator {
[Symbol.iterator]() {
return v;
}
}
+for (var v of new StringIterator) { }
diff --git a/tests/baselines/reference/for-of34.errors.txt b/tests/baselines/reference/for-of34.errors.txt
index c378a8f5bb8..2d53ecb0a20 100644
--- a/tests/baselines/reference/for-of34.errors.txt
+++ b/tests/baselines/reference/for-of34.errors.txt
@@ -1,12 +1,8 @@
-tests/cases/conformance/es6/for-ofStatements/for-of34.ts(1,10): error TS7022: 'v' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
-tests/cases/conformance/es6/for-ofStatements/for-of34.ts(4,5): error TS7023: 'next' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.
+tests/cases/conformance/es6/for-ofStatements/for-of34.ts(2,5): error TS7023: 'next' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.
+tests/cases/conformance/es6/for-ofStatements/for-of34.ts(11,10): error TS7022: 'v' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
==== tests/cases/conformance/es6/for-ofStatements/for-of34.ts (2 errors) ====
- for (var v of new StringIterator) { }
- ~
-!!! error TS7022: 'v' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
-
class StringIterator {
next() {
~~~~
@@ -17,4 +13,8 @@ tests/cases/conformance/es6/for-ofStatements/for-of34.ts(4,5): error TS7023: 'ne
[Symbol.iterator]() {
return this;
}
- }
\ No newline at end of file
+ }
+
+ for (var v of new StringIterator) { }
+ ~
+!!! error TS7022: 'v' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
\ No newline at end of file
diff --git a/tests/baselines/reference/for-of34.js b/tests/baselines/reference/for-of34.js
index f61f04ea955..2d9af61d1a3 100644
--- a/tests/baselines/reference/for-of34.js
+++ b/tests/baselines/reference/for-of34.js
@@ -1,6 +1,4 @@
//// [for-of34.ts]
-for (var v of new StringIterator) { }
-
class StringIterator {
next() {
return v;
@@ -9,10 +7,11 @@ class StringIterator {
[Symbol.iterator]() {
return this;
}
-}
+}
+
+for (var v of new StringIterator) { }
//// [for-of34.js]
-for (var v of new StringIterator) { }
class StringIterator {
next() {
return v;
@@ -21,3 +20,4 @@ class StringIterator {
return this;
}
}
+for (var v of new StringIterator) { }
diff --git a/tests/baselines/reference/for-of35.errors.txt b/tests/baselines/reference/for-of35.errors.txt
index 58fb5056fd7..6f14a24fb96 100644
--- a/tests/baselines/reference/for-of35.errors.txt
+++ b/tests/baselines/reference/for-of35.errors.txt
@@ -1,12 +1,8 @@
-tests/cases/conformance/es6/for-ofStatements/for-of35.ts(1,10): error TS7022: 'v' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
-tests/cases/conformance/es6/for-ofStatements/for-of35.ts(4,5): error TS7023: 'next' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.
+tests/cases/conformance/es6/for-ofStatements/for-of35.ts(2,5): error TS7023: 'next' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.
+tests/cases/conformance/es6/for-ofStatements/for-of35.ts(14,10): error TS7022: 'v' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
==== tests/cases/conformance/es6/for-ofStatements/for-of35.ts (2 errors) ====
- for (var v of new StringIterator) { }
- ~
-!!! error TS7022: 'v' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
-
class StringIterator {
next() {
~~~~
@@ -20,4 +16,8 @@ tests/cases/conformance/es6/for-ofStatements/for-of35.ts(4,5): error TS7023: 'ne
[Symbol.iterator]() {
return this;
}
- }
\ No newline at end of file
+ }
+
+ for (var v of new StringIterator) { }
+ ~
+!!! error TS7022: 'v' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
\ No newline at end of file
diff --git a/tests/baselines/reference/for-of35.js b/tests/baselines/reference/for-of35.js
index c7d7c5890dd..a73f873d7ce 100644
--- a/tests/baselines/reference/for-of35.js
+++ b/tests/baselines/reference/for-of35.js
@@ -1,6 +1,4 @@
//// [for-of35.ts]
-for (var v of new StringIterator) { }
-
class StringIterator {
next() {
return {
@@ -12,10 +10,11 @@ class StringIterator {
[Symbol.iterator]() {
return this;
}
-}
+}
+
+for (var v of new StringIterator) { }
//// [for-of35.js]
-for (var v of new StringIterator) { }
class StringIterator {
next() {
return {
@@ -27,3 +26,4 @@ class StringIterator {
return this;
}
}
+for (var v of new StringIterator) { }
diff --git a/tests/baselines/reference/generatorTypeCheck14.types b/tests/baselines/reference/generatorTypeCheck14.types
index 48565fe2be0..28401e68567 100644
--- a/tests/baselines/reference/generatorTypeCheck14.types
+++ b/tests/baselines/reference/generatorTypeCheck14.types
@@ -1,6 +1,6 @@
=== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck14.ts ===
function* g() {
->g : () => IterableIterator<0>
+>g : () => IterableIterator<0 | "">
yield 0;
>yield 0 : any
diff --git a/tests/baselines/reference/generatorTypeCheck15.types b/tests/baselines/reference/generatorTypeCheck15.types
index eb14208009a..3851d8e56a4 100644
--- a/tests/baselines/reference/generatorTypeCheck15.types
+++ b/tests/baselines/reference/generatorTypeCheck15.types
@@ -1,6 +1,6 @@
=== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck15.ts ===
function* g() {
->g : () => IterableIterator
+>g : () => IterableIterator<"">
return "";
>"" : ""
diff --git a/tests/baselines/reference/generatorTypeCheck34.types b/tests/baselines/reference/generatorTypeCheck34.types
index 2ca11177218..239c5ff1493 100644
--- a/tests/baselines/reference/generatorTypeCheck34.types
+++ b/tests/baselines/reference/generatorTypeCheck34.types
@@ -7,7 +7,7 @@ function* g() {
>0 : 0
function* g2() {
->g2 : () => IterableIterator
+>g2 : () => IterableIterator<"">
return "";
>"" : ""
diff --git a/tests/baselines/reference/generatorTypeCheck62.js b/tests/baselines/reference/generatorTypeCheck62.js
new file mode 100644
index 00000000000..30864722210
--- /dev/null
+++ b/tests/baselines/reference/generatorTypeCheck62.js
@@ -0,0 +1,63 @@
+//// [generatorTypeCheck62.ts]
+
+export interface StrategicState {
+ lastStrategyApplied?: string;
+}
+
+export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator {
+ return function*(state) {
+ for (const next of gen(state)) {
+ if (next) {
+ next.lastStrategyApplied = stratName;
+ }
+ yield next;
+ }
+ }
+}
+
+export interface Strategy {
+ (a: T): IterableIterator;
+}
+
+export interface State extends StrategicState {
+ foo: number;
+}
+
+export const Nothing1: Strategy = strategy("Nothing", function*(state: State) {
+ return state;
+});
+
+export const Nothing2: Strategy = strategy("Nothing", function*(state: State) {
+ yield state;
+});
+
+export const Nothing3: Strategy = strategy("Nothing", function* (state: State) {
+ yield ;
+ return state;
+});
+
+
+//// [generatorTypeCheck62.js]
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+function strategy(stratName, gen) {
+ return function* (state) {
+ for (const next of gen(state)) {
+ if (next) {
+ next.lastStrategyApplied = stratName;
+ }
+ yield next;
+ }
+ };
+}
+exports.strategy = strategy;
+exports.Nothing1 = strategy("Nothing", function* (state) {
+ return state;
+});
+exports.Nothing2 = strategy("Nothing", function* (state) {
+ yield state;
+});
+exports.Nothing3 = strategy("Nothing", function* (state) {
+ yield;
+ return state;
+});
diff --git a/tests/baselines/reference/generatorTypeCheck62.symbols b/tests/baselines/reference/generatorTypeCheck62.symbols
new file mode 100644
index 00000000000..580ab208840
--- /dev/null
+++ b/tests/baselines/reference/generatorTypeCheck62.symbols
@@ -0,0 +1,106 @@
+=== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck62.ts ===
+
+export interface StrategicState {
+>StrategicState : Symbol(StrategicState, Decl(generatorTypeCheck62.ts, 0, 0))
+
+ lastStrategyApplied?: string;
+>lastStrategyApplied : Symbol(StrategicState.lastStrategyApplied, Decl(generatorTypeCheck62.ts, 1, 33))
+}
+
+export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator {
+>strategy : Symbol(strategy, Decl(generatorTypeCheck62.ts, 3, 1))
+>T : Symbol(T, Decl(generatorTypeCheck62.ts, 5, 25))
+>StrategicState : Symbol(StrategicState, Decl(generatorTypeCheck62.ts, 0, 0))
+>stratName : Symbol(stratName, Decl(generatorTypeCheck62.ts, 5, 51))
+>gen : Symbol(gen, Decl(generatorTypeCheck62.ts, 5, 69))
+>a : Symbol(a, Decl(generatorTypeCheck62.ts, 5, 76))
+>T : Symbol(T, Decl(generatorTypeCheck62.ts, 5, 25))
+>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --))
+>T : Symbol(T, Decl(generatorTypeCheck62.ts, 5, 25))
+>a : Symbol(a, Decl(generatorTypeCheck62.ts, 5, 120))
+>T : Symbol(T, Decl(generatorTypeCheck62.ts, 5, 25))
+>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --))
+>T : Symbol(T, Decl(generatorTypeCheck62.ts, 5, 25))
+
+ return function*(state) {
+>state : Symbol(state, Decl(generatorTypeCheck62.ts, 6, 21))
+
+ for (const next of gen(state)) {
+>next : Symbol(next, Decl(generatorTypeCheck62.ts, 7, 18))
+>gen : Symbol(gen, Decl(generatorTypeCheck62.ts, 5, 69))
+>state : Symbol(state, Decl(generatorTypeCheck62.ts, 6, 21))
+
+ if (next) {
+>next : Symbol(next, Decl(generatorTypeCheck62.ts, 7, 18))
+
+ next.lastStrategyApplied = stratName;
+>next.lastStrategyApplied : Symbol(StrategicState.lastStrategyApplied, Decl(generatorTypeCheck62.ts, 1, 33))
+>next : Symbol(next, Decl(generatorTypeCheck62.ts, 7, 18))
+>lastStrategyApplied : Symbol(StrategicState.lastStrategyApplied, Decl(generatorTypeCheck62.ts, 1, 33))
+>stratName : Symbol(stratName, Decl(generatorTypeCheck62.ts, 5, 51))
+ }
+ yield next;
+>next : Symbol(next, Decl(generatorTypeCheck62.ts, 7, 18))
+ }
+ }
+}
+
+export interface Strategy {
+>Strategy : Symbol(Strategy, Decl(generatorTypeCheck62.ts, 14, 1))
+>T : Symbol(T, Decl(generatorTypeCheck62.ts, 16, 26))
+
+ (a: T): IterableIterator;
+>a : Symbol(a, Decl(generatorTypeCheck62.ts, 17, 5))
+>T : Symbol(T, Decl(generatorTypeCheck62.ts, 16, 26))
+>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --))
+>T : Symbol(T, Decl(generatorTypeCheck62.ts, 16, 26))
+}
+
+export interface State extends StrategicState {
+>State : Symbol(State, Decl(generatorTypeCheck62.ts, 18, 1))
+>StrategicState : Symbol(StrategicState, Decl(generatorTypeCheck62.ts, 0, 0))
+
+ foo: number;
+>foo : Symbol(State.foo, Decl(generatorTypeCheck62.ts, 20, 47))
+}
+
+export const Nothing1: Strategy = strategy("Nothing", function*(state: State) {
+>Nothing1 : Symbol(Nothing1, Decl(generatorTypeCheck62.ts, 24, 12))
+>Strategy : Symbol(Strategy, Decl(generatorTypeCheck62.ts, 14, 1))
+>State : Symbol(State, Decl(generatorTypeCheck62.ts, 18, 1))
+>strategy : Symbol(strategy, Decl(generatorTypeCheck62.ts, 3, 1))
+>state : Symbol(state, Decl(generatorTypeCheck62.ts, 24, 71))
+>State : Symbol(State, Decl(generatorTypeCheck62.ts, 18, 1))
+
+ return state;
+>state : Symbol(state, Decl(generatorTypeCheck62.ts, 24, 71))
+
+});
+
+export const Nothing2: Strategy = strategy("Nothing", function*(state: State) {
+>Nothing2 : Symbol(Nothing2, Decl(generatorTypeCheck62.ts, 28, 12))
+>Strategy : Symbol(Strategy, Decl(generatorTypeCheck62.ts, 14, 1))
+>State : Symbol(State, Decl(generatorTypeCheck62.ts, 18, 1))
+>strategy : Symbol(strategy, Decl(generatorTypeCheck62.ts, 3, 1))
+>state : Symbol(state, Decl(generatorTypeCheck62.ts, 28, 71))
+>State : Symbol(State, Decl(generatorTypeCheck62.ts, 18, 1))
+
+ yield state;
+>state : Symbol(state, Decl(generatorTypeCheck62.ts, 28, 71))
+
+});
+
+export const Nothing3: Strategy = strategy("Nothing", function* (state: State) {
+>Nothing3 : Symbol(Nothing3, Decl(generatorTypeCheck62.ts, 32, 12))
+>Strategy : Symbol(Strategy, Decl(generatorTypeCheck62.ts, 14, 1))
+>State : Symbol(State, Decl(generatorTypeCheck62.ts, 18, 1))
+>strategy : Symbol(strategy, Decl(generatorTypeCheck62.ts, 3, 1))
+>state : Symbol(state, Decl(generatorTypeCheck62.ts, 32, 72))
+>State : Symbol(State, Decl(generatorTypeCheck62.ts, 18, 1))
+
+ yield ;
+ return state;
+>state : Symbol(state, Decl(generatorTypeCheck62.ts, 32, 72))
+
+});
+
diff --git a/tests/baselines/reference/generatorTypeCheck62.types b/tests/baselines/reference/generatorTypeCheck62.types
new file mode 100644
index 00000000000..289d33dc7d4
--- /dev/null
+++ b/tests/baselines/reference/generatorTypeCheck62.types
@@ -0,0 +1,122 @@
+=== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck62.ts ===
+
+export interface StrategicState {
+>StrategicState : StrategicState
+
+ lastStrategyApplied?: string;
+>lastStrategyApplied : string
+}
+
+export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator {
+>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator
+>T : T
+>StrategicState : StrategicState
+>stratName : string
+>gen : (a: T) => IterableIterator
+>a : T
+>T : T
+>IterableIterator : IterableIterator
+>T : T
+>a : T
+>T : T
+>IterableIterator : IterableIterator
+>T : T
+
+ return function*(state) {
+>function*(state) { for (const next of gen(state)) { if (next) { next.lastStrategyApplied = stratName; } yield next; } } : (state: T) => IterableIterator
+>state : T
+
+ for (const next of gen(state)) {
+>next : T
+>gen(state) : IterableIterator
+>gen : (a: T) => IterableIterator
+>state : T
+
+ if (next) {
+>next : T
+
+ next.lastStrategyApplied = stratName;
+>next.lastStrategyApplied = stratName : string
+>next.lastStrategyApplied : string
+>next : T
+>lastStrategyApplied : string
+>stratName : string
+ }
+ yield next;
+>yield next : any
+>next : T
+ }
+ }
+}
+
+export interface Strategy {
+>Strategy : Strategy
+>T : T
+
+ (a: T): IterableIterator;
+>a : T
+>T : T
+>IterableIterator : IterableIterator
+>T : T
+}
+
+export interface State extends StrategicState {
+>State : State
+>StrategicState : StrategicState
+
+ foo: number;
+>foo : number
+}
+
+export const Nothing1: Strategy = strategy("Nothing", function*(state: State) {
+>Nothing1 : Strategy
+>Strategy : Strategy
+>State : State
+>strategy("Nothing", function*(state: State) { return state;}) : (a: State) => IterableIterator
+>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator
+>"Nothing" : "Nothing"
+>function*(state: State) { return state;} : (state: State) => IterableIterator
+>state : State
+>State : State
+
+ return state;
+>state : State
+
+});
+
+export const Nothing2: Strategy = strategy("Nothing", function*(state: State) {
+>Nothing2 : Strategy
+>Strategy : Strategy
+>State : State
+>strategy("Nothing", function*(state: State) { yield state;}) : (a: State) => IterableIterator
+>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator
+>"Nothing" : "Nothing"
+>function*(state: State) { yield state;} : (state: State) => IterableIterator
+>state : State
+>State : State
+
+ yield state;
+>yield state : any
+>state : State
+
+});
+
+export const Nothing3: Strategy = strategy("Nothing", function* (state: State) {
+>Nothing3 : Strategy