ruff/crates/ruff_python_parser/resources/valid/expressions
Brent Westbrook d45593288f
[syntax-errors] Starred expressions in return, yield, and for (#17134)
Summary
--

Fixes https://github.com/astral-sh/ruff/issues/16520 by flagging single,
starred expressions in `return`, `yield`, and
`for` statements.

I thought `yield from` would also be included here, but that error is
emitted by
the CPython parser:

```pycon
>>> ast.parse("def f(): yield from *x")
Traceback (most recent call last):
  File "<python-input-214>", line 1, in <module>
    ast.parse("def f(): yield from *x")
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/ast.py", line 54, in parse
    return compile(source, filename, mode, flags,
                   _feature_version=feature_version, optimize=optimize)
  File "<unknown>", line 1
    def f(): yield from *x
                        ^
SyntaxError: invalid syntax
```

And we also already catch it in our parser.

Test Plan
--

New inline tests and updates to existing tests.
2025-04-02 08:38:25 -04:00
..
arguments.py [syntax-errors] Start detecting compile-time syntax errors (#16106) 2025-03-21 14:45:25 -04:00
attribute.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
await.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
bin_op.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
bool_op.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
call.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
compare.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
dictionary.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
dictionary_comprehension.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
f_string.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
generator.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
if.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
lambda.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
list.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
list_comprehension.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
name.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
named.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
number_literal.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
parenthesized.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
set.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
set_comprehension.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
slice.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
starred.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
string.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
subscript.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
tuple.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
unary_op.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
yield.py [syntax-errors] Starred expressions in return, yield, and for (#17134) 2025-04-02 08:38:25 -04:00
yield_from.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30