ruff/crates/ruff_python_parser/resources/inline/ok
Brent Westbrook 3a32e56445
[syntax-errors] Unparenthesized assignment expressions in sets and indexes (#16404)
## Summary
This PR detects unparenthesized assignment expressions used in set
literals and comprehensions and in sequence indexes. The link to the
release notes in https://github.com/astral-sh/ruff/issues/6591 just has
this entry:
> * Assignment expressions can now be used unparenthesized within set
literals and set comprehensions, as well as in sequence indexes (but not
slices).

with no other information, so hopefully the test cases I came up with
cover all of the changes. I also tested these out in the Python REPL and
they actually worked in Python 3.9 too. I'm guessing this may be another
case that was "formally made part of the language spec in Python 3.10,
but usable -- and commonly used -- in Python >=3.9" as @AlexWaygood
added to the body of #6591 for context managers. So we may want to
change the version cutoff, but I've gone along with the release notes
for now.

## Test Plan

New inline parser tests and linter CLI tests.
2025-03-14 15:06:42 -04:00
..
ambiguous_lpar_with_items_binary_expr.py Consider binary expr for parenthesized with items parsing (#11012) 2024-04-18 21:39:30 +05:30
ambiguous_lpar_with_items_if_expr.py Consider if expression for parenthesized with items parsing (#11010) 2024-04-18 14:30:15 +00:00
ann_assign_stmt_simple_target.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
args_unparenthesized_generator.py Raise syntax error for unparenthesized generator expr in multi-argument call (#12445) 2024-07-22 14:44:20 +05:30
assign_targets_terminator.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
async_for_statement.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
async_function_definition.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
async_with_statement.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
class_def_arguments.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
class_type_params_py312.py [syntax-errors] Type parameter lists before Python 3.12 (#16479) 2025-03-05 13:19:09 +00:00
comma_separated_regular_list_terminator.py Implement re-lexing logic for better error recovery (#11845) 2024-06-17 06:47:00 +00:00
decorator_async_function.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
decorator_expression_dotted_ident_py38.py [syntax-errors] Named expressions in decorators before Python 3.9 (#16386) 2025-03-05 17:08:18 +00:00
decorator_expression_eval_hack_py38.py [syntax-errors] Named expressions in decorators before Python 3.9 (#16386) 2025-03-05 17:08:18 +00:00
decorator_expression_identity_hack_py38.py [syntax-errors] Named expressions in decorators before Python 3.9 (#16386) 2025-03-05 17:08:18 +00:00
decorator_expression_py39.py [syntax-errors] Named expressions in decorators before Python 3.9 (#16386) 2025-03-05 17:08:18 +00:00
del_targets_terminator.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
dotted_name_normalized_spaces.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
except_star_py311.py [syntax-errors] except* before Python 3.11 (#16446) 2025-03-02 18:20:18 +00:00
except_stmt_as_name_soft_keyword.py Maintain synchronicity between the lexer and the parser (#11457) 2024-06-03 18:23:50 +05:30
for_in_target_valid_expr.py Add ExpressionContext for expression parsing (#11055) 2024-04-23 04:19:05 +00:00
for_iter_unpack_py38.py [syntax-errors] Tuple unpacking in for statement iterator clause before Python 3.9 (#16558) 2025-03-13 15:55:17 -04:00
for_iter_unpack_py39.py [syntax-errors] Tuple unpacking in for statement iterator clause before Python 3.9 (#16558) 2025-03-13 15:55:17 -04:00
from_import_no_space.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
from_import_soft_keyword_module_name.py Maintain synchronicity between the lexer and the parser (#11457) 2024-06-03 18:23:50 +05:30
from_import_stmt_terminator.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
fstring_format_spec_terminator.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
function_def_parameter_range.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
function_def_parenthesized_return_types.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
function_def_valid_return_expr.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
function_type_params_py312.py [syntax-errors] Type parameter lists before Python 3.12 (#16479) 2025-03-05 13:19:09 +00:00
global_stmt.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
import_as_name_soft_keyword.py Maintain synchronicity between the lexer and the parser (#11457) 2024-06-03 18:23:50 +05:30
import_stmt_terminator.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
iter_unpack_return_py37.py [syntax-errors] Tuple unpacking in return and yield before Python 3.8 (#16485) 2025-03-06 11:57:20 -05:00
iter_unpack_return_py38.py [syntax-errors] Tuple unpacking in return and yield before Python 3.8 (#16485) 2025-03-06 11:57:20 -05:00
iter_unpack_yield_py37.py [syntax-errors] Tuple unpacking in return and yield before Python 3.8 (#16485) 2025-03-06 11:57:20 -05:00
iter_unpack_yield_py38.py [syntax-errors] Tuple unpacking in return and yield before Python 3.8 (#16485) 2025-03-06 11:57:20 -05:00
lambda_with_no_parameters.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
lambda_with_valid_body.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
match_after_py310.py Allow passing ParseOptions to inline tests (#16357) 2025-02-27 10:23:15 -05:00
match_as_pattern.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
match_as_pattern_soft_keyword.py Maintain synchronicity between the lexer and the parser (#11457) 2024-06-03 18:23:50 +05:30
match_attr_pattern_soft_keyword.py Maintain synchronicity between the lexer and the parser (#11457) 2024-06-03 18:23:50 +05:30
match_classify_as_identifier_1.py Maintain synchronicity between the lexer and the parser (#11457) 2024-06-03 18:23:50 +05:30
match_classify_as_identifier_2.py Maintain synchronicity between the lexer and the parser (#11457) 2024-06-03 18:23:50 +05:30
match_classify_as_keyword_1.py Maintain synchronicity between the lexer and the parser (#11457) 2024-06-03 18:23:50 +05:30
match_classify_as_keyword_2.py Maintain synchronicity between the lexer and the parser (#11457) 2024-06-03 18:23:50 +05:30
match_classify_as_keyword_or_identifier.py Maintain synchronicity between the lexer and the parser (#11457) 2024-06-03 18:23:50 +05:30
match_sequence_pattern_parentheses_terminator.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
match_sequence_pattern_terminator.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
match_stmt_subject_expr.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
match_stmt_valid_guard_expr.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
nonlocal_stmt.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
param_with_annotation.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
param_with_default.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
param_with_star_annotation.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
param_with_star_annotation_py311.py [syntax-errors] Star annotations before Python 3.11 (#16545) 2025-03-14 15:20:44 +00:00
params_non_default_after_star.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
params_seen_keyword_only_param_after_star.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
parenthesized_kwarg_py37.py [syntax-errors] Parenthesized keyword argument names after Python 3.8 (#16482) 2025-03-06 12:18:13 -05:00
parenthesized_named_expr_index_py38.py [syntax-errors] Unparenthesized assignment expressions in sets and indexes (#16404) 2025-03-14 15:06:42 -04:00
parenthesized_named_expr_py38.py [syntax-errors] Unparenthesized assignment expressions in sets and indexes (#16404) 2025-03-14 15:06:42 -04:00
pos_only_py38.py [syntax-errors] Positional-only parameters before Python 3.8 (#16481) 2025-03-05 13:46:43 +00:00
simple_stmts_in_block.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
simple_stmts_with_semicolons.py Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
star_index_py311.py [syntax-errors] Star expression in index before Python 3.11 (#16544) 2025-03-14 14:51:34 +00:00
type_param_default_py313.py [syntax-errors] Type parameter defaults before Python 3.13 (#16447) 2025-03-04 16:53:38 +00:00
type_param_param_spec.py Add support for PEP 696 syntax (#11120) 2024-04-26 09:47:29 +02:00
type_param_type_var.py Add support for PEP 696 syntax (#11120) 2024-04-26 09:47:29 +02:00
type_param_type_var_tuple.py Add support for PEP 696 syntax (#11120) 2024-04-26 09:47:29 +02:00
type_stmt_py312.py [syntax-errors] type alias statements before Python 3.12 (#16478) 2025-03-04 17:20:10 +00:00
unparenthesized_named_expr_index_py39.py [syntax-errors] Unparenthesized assignment expressions in sets and indexes (#16404) 2025-03-14 15:06:42 -04:00
unparenthesized_named_expr_py39.py [syntax-errors] Unparenthesized assignment expressions in sets and indexes (#16404) 2025-03-14 15:06:42 -04:00
walrus_py38.py [syntax-errors] Assignment expressions before Python 3.8 (#16383) 2025-02-28 17:13:46 -05:00