Skip to content

Commit f017fa0

Browse files
committed
Scan types of yield expressions in classes too
Also, drop the other cases where they were ignored, since they're forbidden in enums, and the others are fine wrt the comment that was there. Fixes #34892
1 parent 20b246c commit f017fa0

9 files changed

+9
-12
lines changed

src/compiler/utilities.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1221,11 +1221,8 @@ namespace ts {
12211221
case SyntaxKind.InterfaceDeclaration:
12221222
case SyntaxKind.ModuleDeclaration:
12231223
case SyntaxKind.TypeAliasDeclaration:
1224-
case SyntaxKind.ClassDeclaration:
1225-
case SyntaxKind.ClassExpression:
12261224
// These are not allowed inside a generator now, but eventually they may be allowed
1227-
// as local types. Regardless, any yield statements contained within them should be
1228-
// skipped in this traversal.
1225+
// as local types. Regardless, skip them to avoid the work.
12291226
return;
12301227
default:
12311228
if (isFunctionLike(node)) {

tests/baselines/reference/generatorTypeCheck39.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ function decorator(x: any) {
88
>y : any
99
}
1010
function* g() {
11-
>g : () => Generator<never, void, unknown>
11+
>g : () => Generator<number, void, any>
1212

1313
@decorator(yield 0)
1414
>decorator(yield 0) : (y: any) => void

tests/baselines/reference/generatorTypeCheck40.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
=== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck40.ts ===
22
function* g() {
3-
>g : () => Generator<never, void, unknown>
3+
>g : () => Generator<number, void, unknown>
44

55
class C extends (yield 0) { }
66
>C : C

tests/baselines/reference/generatorTypeCheck55.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
=== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck55.ts ===
22
function* g() {
3-
>g : () => Generator<never, void, unknown>
3+
>g : () => Generator<any, void, unknown>
44

55
var x = class C extends (yield) {};
66
>x : typeof C

tests/baselines/reference/generatorTypeCheck56.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
=== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck56.ts ===
22
function* g() {
3-
>g : () => Generator<never, void, unknown>
3+
>g : () => Generator<number, void, unknown>
44

55
var x = class C {
66
>x : typeof C

tests/baselines/reference/generatorTypeCheck57.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
=== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck57.ts ===
22
function* g() {
3-
>g : () => Generator<never, void, unknown>
3+
>g : () => Generator<number, void, unknown>
44

55
class C {
66
>C : C

tests/baselines/reference/generatorTypeCheck58.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
=== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck58.ts ===
22
function* g() {
3-
>g : () => Generator<never, void, unknown>
3+
>g : () => Generator<number, void, unknown>
44

55
class C {
66
>C : C

tests/baselines/reference/generatorTypeCheck60.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
=== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck60.ts ===
22
function* g() {
3-
>g : () => Generator<never, void, unknown>
3+
>g : () => Generator<any, void, unknown>
44

55
class C extends (yield) {};
66
>C : C

tests/baselines/reference/generatorTypeCheck61.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
=== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck61.ts ===
22
function * g() {
3-
>g : () => Generator<never, void, unknown>
3+
>g : () => Generator<number, void, unknown>
44

55
@(yield 0)
66
>(yield 0) : any

0 commit comments

Comments
 (0)