summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_generators.py5
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2024-07-13-12-27-31.gh-issue-121657.wgOYLw.rst2
-rw-r--r--Python/compile.c2
3 files changed, 8 insertions, 1 deletions
diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py
index daa6571..34f79da 100644
--- a/Lib/test/test_generators.py
+++ b/Lib/test/test_generators.py
@@ -2247,6 +2247,11 @@ Traceback (most recent call last):
...
SyntaxError: 'yield' outside function
+>>> yield from [1,2]
+Traceback (most recent call last):
+ ...
+SyntaxError: 'yield from' outside function
+
>>> def f(): x = yield = y
Traceback (most recent call last):
...
diff --git a/Misc/NEWS.d/next/Core and Builtins/2024-07-13-12-27-31.gh-issue-121657.wgOYLw.rst b/Misc/NEWS.d/next/Core and Builtins/2024-07-13-12-27-31.gh-issue-121657.wgOYLw.rst
new file mode 100644
index 0000000..cb18629
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2024-07-13-12-27-31.gh-issue-121657.wgOYLw.rst
@@ -0,0 +1,2 @@
+Improve the :exc:`SyntaxError` message if the user tries to use
+:keyword:`yield from <yield>` outside a function.
diff --git a/Python/compile.c b/Python/compile.c
index 4190b14..ca64b5c 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -6119,7 +6119,7 @@ compiler_visit_expr(struct compiler *c, expr_ty e)
break;
case YieldFrom_kind:
if (!_PyST_IsFunctionLike(SYMTABLE_ENTRY(c))) {
- return compiler_error(c, loc, "'yield' outside function");
+ return compiler_error(c, loc, "'yield from' outside function");
}
if (c->u->u_scope_type == COMPILER_SCOPE_ASYNC_FUNCTION) {
return compiler_error(c, loc, "'yield from' inside async function");