From c9a21fd6ac80015a6bb231947bd80e0dd27008ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Sun, 5 Oct 2025 11:14:48 +0200 Subject: [PATCH] Port "Properly disallow `yield` in bodyless arrows" --- internal/parser/parser.go | 1 + .../conformance/YieldExpression20_es6.errors.txt | 12 ++++++++++++ .../YieldExpression20_es6.errors.txt.diff | 16 ---------------- 3 files changed, 13 insertions(+), 16 deletions(-) create mode 100644 testdata/baselines/reference/submodule/conformance/YieldExpression20_es6.errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/YieldExpression20_es6.errors.txt.diff diff --git a/internal/parser/parser.go b/internal/parser/parser.go index 60e0b3efb9..f9d6d814df 100644 --- a/internal/parser/parser.go +++ b/internal/parser/parser.go @@ -4324,6 +4324,7 @@ func (p *Parser) parseArrowFunctionExpressionBody(isAsync bool, allowReturnTypeI } saveContextFlags := p.contextFlags p.setContextFlags(ast.NodeFlagsAwaitContext, isAsync) + p.setContextFlags(ast.NodeFlagsYieldContext, false) node := p.parseAssignmentExpressionOrHigherWorker(allowReturnTypeInArrowFunction) p.contextFlags = saveContextFlags return node diff --git a/testdata/baselines/reference/submodule/conformance/YieldExpression20_es6.errors.txt b/testdata/baselines/reference/submodule/conformance/YieldExpression20_es6.errors.txt new file mode 100644 index 0000000000..4352abf778 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/YieldExpression20_es6.errors.txt @@ -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. + }); + } + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/YieldExpression20_es6.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/YieldExpression20_es6.errors.txt.diff deleted file mode 100644 index ff9d3f5d74..0000000000 --- a/testdata/baselines/reference/submodule/conformance/YieldExpression20_es6.errors.txt.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- old.YieldExpression20_es6.errors.txt -+++ new.YieldExpression20_es6.errors.txt -@@= skipped -0, +0 lines =@@ --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. -- }); -- } -- -+ \ No newline at end of file