ruff/crates/ruff_python_parser/resources/invalid
Dhruv Manilawala 47c9ed07f2
Consider 2-character EOL before line continuation (#12035)
## Summary

This PR fixes a bug introduced in
https://github.com/astral-sh/ruff/pull/12008 which didn't consider the
two character newline after the line continuation character.

For example, consider the following code highlighted with whitespaces:
```py
call(foo # comment \\r\n
\r\n
def bar():\r\n
....pass\r\n
```
The lexer is at `def` when it's running the re-lexing logic and trying
to move back to a newline character. It encounters `\n` and it's being
escaped (incorrect) but `\r` is being escaped, so it moves the lexer to
`\n` character. This creates an overlap in token ranges which causes the
panic.

```
Name 0..4
Lpar 4..5
Name 5..8
Comment 9..20
NonLogicalNewline 20..22 <-- overlap between
Newline 21..22           <-- these two tokens
NonLogicalNewline 22..23
Def 23..26
...
```

fixes: #12028 

## Test Plan

Add a test case with line continuation and windows style newline
character.
2024-06-26 14:00:48 +05:30
..
expressions Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
re_lexing Consider 2-character EOL before line continuation (#12035) 2024-06-26 14:00:48 +05:30
statements Fix a few typos found by codespell (#11404) 2024-05-13 13:22:35 +00:00
re_lex_logical_token.py Avoid moving back the lexer for triple-quoted fstring (#11939) 2024-06-20 16:27:36 +05:30
re_lex_logical_token_mac_eol.py Implement re-lexing logic for better error recovery (#11845) 2024-06-17 06:47:00 +00:00
re_lex_logical_token_windows_eol.py Implement re-lexing logic for better error recovery (#11845) 2024-06-17 06:47:00 +00:00