ruff/crates/ruff_python_parser/src
Dan Parizher 474b00568a
[`parser`] Fix panic when parsing IPython escape command expressions (#21480)
## Summary

Fixes a panic when parsing IPython escape commands with `Help` kind
(`?`) in expression contexts. The parser now reports an error instead of
panicking.

Fixes #21465.

## Problem

The parser panicked with `unreachable!()` in
`parse_ipython_escape_command_expression` when encountering escape
commands with `Help` kind (`?`) in expression contexts, where only
`Magic` (`%`) and `Shell` (`!`) are allowed.

## Approach

Replaced the `unreachable!()` panic with error handling that adds a
`ParseErrorType::OtherError` and continues parsing, returning a valid
AST node with the error attached.

## Test Plan

Added `test_ipython_escape_command_in_with_statement` and
`test_ipython_help_escape_command_as_expression` to verify the fix.

---------

Co-authored-by: Dhruv Manilawala <dhruvmanila@gmail.com>
2025-11-24 05:40:27 +00:00
..
lexer Implement template strings (#17851) 2025-05-30 15:00:56 -05:00
parser [`parser`] Fix panic when parsing IPython escape command expressions (#21480) 2025-11-24 05:40:27 +00:00
snapshots Improved error recovery for unclosed strings (including f- and t-strings) (#20848) 2025-10-15 09:50:56 +02:00
error.rs Consistently wrap tokens in parser diagnostics in `backticks` instead of 'quotes' (#21163) 2025-10-31 11:59:11 -04:00
lexer.rs Improved error recovery for unclosed strings (including f- and t-strings) (#20848) 2025-10-15 09:50:56 +02:00
lib.rs [ty] Fix completions at end of file (#20993) 2025-10-21 09:24:31 +00:00
semantic_errors.rs [ty] name is parameter and global is a syntax error (#21312) 2025-11-14 18:15:34 +00:00
string.rs [ty] Shrink size of `AstNodeRef` (#20028) 2025-08-22 17:03:22 -04:00
token.rs Consistently wrap tokens in parser diagnostics in `backticks` instead of 'quotes' (#21163) 2025-10-31 11:59:11 -04:00
token_set.rs Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
token_source.rs Improved error recovery for unclosed strings (including f- and t-strings) (#20848) 2025-10-15 09:50:56 +02:00
typing.rs Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00