mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-12-11 09:24:19 -06:00
Properly disallow yield in bodyless arrows (#61976)
This commit is contained in:
parent
b70d4d7e4b
commit
1ea1809e16
@ -5559,12 +5559,15 @@ namespace Parser {
|
||||
return parseFunctionBlock(SignatureFlags.IgnoreMissingOpenBrace | (isAsync ? SignatureFlags.Await : SignatureFlags.None));
|
||||
}
|
||||
|
||||
const savedYieldContext = inYieldContext();
|
||||
setYieldContext(false);
|
||||
const savedTopLevel = topLevel;
|
||||
topLevel = false;
|
||||
const node = isAsync
|
||||
? doInAwaitContext(() => parseAssignmentExpressionOrHigher(allowReturnTypeInArrowFunction))
|
||||
: doOutsideOfAwaitContext(() => parseAssignmentExpressionOrHigher(allowReturnTypeInArrowFunction));
|
||||
topLevel = savedTopLevel;
|
||||
setYieldContext(savedYieldContext);
|
||||
return node;
|
||||
}
|
||||
|
||||
|
||||
12
tests/baselines/reference/YieldExpression20_es6.errors.txt
Normal file
12
tests/baselines/reference/YieldExpression20_es6.errors.txt
Normal file
@ -0,0 +1,12 @@
|
||||
YieldExpression20_es6.ts(3,8): error TS1163: A 'yield' expression is only allowed in a generator body.
|
||||
|
||||
|
||||
==== YieldExpression20_es6.ts (1 errors) ====
|
||||
function* test() {
|
||||
return () => ({
|
||||
b: yield 2, // error
|
||||
~~~~~
|
||||
!!! error TS1163: A 'yield' expression is only allowed in a generator body.
|
||||
});
|
||||
}
|
||||
|
||||
16
tests/baselines/reference/YieldExpression20_es6.js
Normal file
16
tests/baselines/reference/YieldExpression20_es6.js
Normal file
@ -0,0 +1,16 @@
|
||||
//// [tests/cases/conformance/es6/yieldExpressions/YieldExpression20_es6.ts] ////
|
||||
|
||||
//// [YieldExpression20_es6.ts]
|
||||
function* test() {
|
||||
return () => ({
|
||||
b: yield 2, // error
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//// [YieldExpression20_es6.js]
|
||||
function* test() {
|
||||
return () => ({
|
||||
b: yield 2, // error
|
||||
});
|
||||
}
|
||||
13
tests/baselines/reference/YieldExpression20_es6.symbols
Normal file
13
tests/baselines/reference/YieldExpression20_es6.symbols
Normal file
@ -0,0 +1,13 @@
|
||||
//// [tests/cases/conformance/es6/yieldExpressions/YieldExpression20_es6.ts] ////
|
||||
|
||||
=== YieldExpression20_es6.ts ===
|
||||
function* test() {
|
||||
>test : Symbol(test, Decl(YieldExpression20_es6.ts, 0, 0))
|
||||
|
||||
return () => ({
|
||||
b: yield 2, // error
|
||||
>b : Symbol(b, Decl(YieldExpression20_es6.ts, 1, 17))
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
26
tests/baselines/reference/YieldExpression20_es6.types
Normal file
26
tests/baselines/reference/YieldExpression20_es6.types
Normal file
@ -0,0 +1,26 @@
|
||||
//// [tests/cases/conformance/es6/yieldExpressions/YieldExpression20_es6.ts] ////
|
||||
|
||||
=== YieldExpression20_es6.ts ===
|
||||
function* test() {
|
||||
>test : () => Generator<never, () => { b: any; }, unknown>
|
||||
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
return () => ({
|
||||
>() => ({ b: yield 2, // error }) : () => { b: any; }
|
||||
> : ^^^^^^^^^^^^^^^^^
|
||||
>({ b: yield 2, // error }) : { b: any; }
|
||||
> : ^^^^^^^^^^^
|
||||
>{ b: yield 2, // error } : { b: any; }
|
||||
> : ^^^^^^^^^^^
|
||||
|
||||
b: yield 2, // error
|
||||
>b : any
|
||||
> : ^^^
|
||||
>yield 2 : any
|
||||
> : ^^^
|
||||
>2 : 2
|
||||
> : ^
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@ -0,0 +1,7 @@
|
||||
// @target: es6
|
||||
|
||||
function* test() {
|
||||
return () => ({
|
||||
b: yield 2, // error
|
||||
});
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user