ruff/crates/ruff_python_parser/resources/invalid/re_lexing
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
..
fstring_format_spec_1.py Consider line continuation character for re-lexing (#12008) 2024-06-25 02:13:54 +00:00
line_continuation_1.py Consider line continuation character for re-lexing (#12008) 2024-06-25 02:13:54 +00:00
line_continuation_windows_eol.py Consider 2-character EOL before line continuation (#12035) 2024-06-26 14:00:48 +05:30
triple_quoted_fstring_1.py Avoid moving back the lexer for triple-quoted fstring (#11939) 2024-06-20 16:27:36 +05:30
triple_quoted_fstring_2.py Avoid moving back the lexer for triple-quoted fstring (#11939) 2024-06-20 16:27:36 +05:30
triple_quoted_fstring_3.py Avoid moving back the lexer for triple-quoted fstring (#11939) 2024-06-20 16:27:36 +05:30