Disallow newlines in format specifiers of single quoted f- or t-strings (#18708)

This commit is contained in:
Micha Reiser 2025-06-18 14:56:15 +02:00 committed by GitHub
parent 23261a38a0
commit 1188ffccc4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 521 additions and 513 deletions

View file

@ -0,0 +1,168 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: "lex_invalid(source, Mode::Module)"
---
## Tokens
```
[
(
NonLogicalNewline,
0..1,
),
(
FStringStart,
1..3,
TokenFlags(
F_STRING,
),
),
(
InterpolatedStringMiddle(
"__",
),
3..5,
TokenFlags(
F_STRING,
),
),
(
Lbrace,
5..6,
),
(
NonLogicalNewline,
6..7,
),
(
Name(
Name("x"),
),
11..12,
),
(
Colon,
12..13,
),
(
Unknown,
13..14,
),
(
NonLogicalNewline,
14..15,
),
(
Rbrace,
15..16,
),
(
Name(
Name("__"),
),
16..18,
),
(
Unknown,
18..19,
),
(
Newline,
19..20,
),
(
FStringStart,
20..22,
TokenFlags(
F_STRING,
),
),
(
InterpolatedStringMiddle(
"__",
),
22..24,
TokenFlags(
F_STRING,
),
),
(
Lbrace,
24..25,
),
(
NonLogicalNewline,
25..26,
),
(
Name(
Name("x"),
),
30..31,
),
(
Colon,
31..32,
),
(
Unknown,
32..33,
),
(
NonLogicalNewline,
33..34,
),
(
Name(
Name("b"),
),
42..43,
),
(
NonLogicalNewline,
43..44,
),
(
Rbrace,
44..45,
),
(
Name(
Name("__"),
),
45..47,
),
(
Unknown,
47..48,
),
(
Newline,
48..49,
),
]
```
## Errors
```
[
LexicalError {
error: FStringError(
NewlineInFormatSpec,
),
location: 13..14,
},
LexicalError {
error: UnclosedStringError,
location: 18..19,
},
LexicalError {
error: FStringError(
NewlineInFormatSpec,
),
location: 32..33,
},
LexicalError {
error: UnclosedStringError,
location: 47..48,
},
]
```

View file

@ -139,157 +139,5 @@ expression: lex_source(source)
Newline,
67..68,
),
(
FStringStart,
68..70,
TokenFlags(
F_STRING,
),
),
(
InterpolatedStringMiddle(
"__",
),
70..72,
TokenFlags(
F_STRING,
),
),
(
Lbrace,
72..73,
),
(
NonLogicalNewline,
73..74,
),
(
Name(
Name("x"),
),
78..79,
),
(
Colon,
79..80,
),
(
InterpolatedStringMiddle(
"d",
),
80..81,
TokenFlags(
F_STRING,
),
),
(
NonLogicalNewline,
81..82,
),
(
Rbrace,
82..83,
),
(
InterpolatedStringMiddle(
"__",
),
83..85,
TokenFlags(
F_STRING,
),
),
(
FStringEnd,
85..86,
TokenFlags(
F_STRING,
),
),
(
Newline,
86..87,
),
(
FStringStart,
87..89,
TokenFlags(
F_STRING,
),
),
(
InterpolatedStringMiddle(
"__",
),
89..91,
TokenFlags(
F_STRING,
),
),
(
Lbrace,
91..92,
),
(
NonLogicalNewline,
92..93,
),
(
Name(
Name("x"),
),
97..98,
),
(
Colon,
98..99,
),
(
InterpolatedStringMiddle(
"a",
),
99..100,
TokenFlags(
F_STRING,
),
),
(
NonLogicalNewline,
100..101,
),
(
Name(
Name("b"),
),
109..110,
),
(
NonLogicalNewline,
110..111,
),
(
Rbrace,
111..112,
),
(
InterpolatedStringMiddle(
"__",
),
112..114,
TokenFlags(
F_STRING,
),
),
(
FStringEnd,
114..115,
TokenFlags(
F_STRING,
),
),
(
Newline,
115..116,
),
]
```

View file

@ -0,0 +1,168 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: "lex_invalid(source, Mode::Module)"
---
## Tokens
```
[
(
NonLogicalNewline,
0..1,
),
(
TStringStart,
1..3,
TokenFlags(
T_STRING,
),
),
(
InterpolatedStringMiddle(
"__",
),
3..5,
TokenFlags(
T_STRING,
),
),
(
Lbrace,
5..6,
),
(
NonLogicalNewline,
6..7,
),
(
Name(
Name("x"),
),
11..12,
),
(
Colon,
12..13,
),
(
Unknown,
13..14,
),
(
NonLogicalNewline,
14..15,
),
(
Rbrace,
15..16,
),
(
Name(
Name("__"),
),
16..18,
),
(
Unknown,
18..19,
),
(
Newline,
19..20,
),
(
TStringStart,
20..22,
TokenFlags(
T_STRING,
),
),
(
InterpolatedStringMiddle(
"__",
),
22..24,
TokenFlags(
T_STRING,
),
),
(
Lbrace,
24..25,
),
(
NonLogicalNewline,
25..26,
),
(
Name(
Name("x"),
),
30..31,
),
(
Colon,
31..32,
),
(
Unknown,
32..33,
),
(
NonLogicalNewline,
33..34,
),
(
Name(
Name("b"),
),
42..43,
),
(
NonLogicalNewline,
43..44,
),
(
Rbrace,
44..45,
),
(
Name(
Name("__"),
),
45..47,
),
(
Unknown,
47..48,
),
(
Newline,
48..49,
),
]
```
## Errors
```
[
LexicalError {
error: TStringError(
NewlineInFormatSpec,
),
location: 13..14,
},
LexicalError {
error: UnclosedStringError,
location: 18..19,
},
LexicalError {
error: TStringError(
NewlineInFormatSpec,
),
location: 32..33,
},
LexicalError {
error: UnclosedStringError,
location: 47..48,
},
]
```

View file

@ -139,157 +139,5 @@ expression: lex_source(source)
Newline,
67..68,
),
(
TStringStart,
68..70,
TokenFlags(
T_STRING,
),
),
(
InterpolatedStringMiddle(
"__",
),
70..72,
TokenFlags(
T_STRING,
),
),
(
Lbrace,
72..73,
),
(
NonLogicalNewline,
73..74,
),
(
Name(
Name("x"),
),
78..79,
),
(
Colon,
79..80,
),
(
InterpolatedStringMiddle(
"d",
),
80..81,
TokenFlags(
T_STRING,
),
),
(
NonLogicalNewline,
81..82,
),
(
Rbrace,
82..83,
),
(
InterpolatedStringMiddle(
"__",
),
83..85,
TokenFlags(
T_STRING,
),
),
(
TStringEnd,
85..86,
TokenFlags(
T_STRING,
),
),
(
Newline,
86..87,
),
(
TStringStart,
87..89,
TokenFlags(
T_STRING,
),
),
(
InterpolatedStringMiddle(
"__",
),
89..91,
TokenFlags(
T_STRING,
),
),
(
Lbrace,
91..92,
),
(
NonLogicalNewline,
92..93,
),
(
Name(
Name("x"),
),
97..98,
),
(
Colon,
98..99,
),
(
InterpolatedStringMiddle(
"a",
),
99..100,
TokenFlags(
T_STRING,
),
),
(
NonLogicalNewline,
100..101,
),
(
Name(
Name("b"),
),
109..110,
),
(
NonLogicalNewline,
110..111,
),
(
Rbrace,
111..112,
),
(
InterpolatedStringMiddle(
"__",
),
112..114,
TokenFlags(
T_STRING,
),
),
(
TStringEnd,
114..115,
TokenFlags(
T_STRING,
),
),
(
Newline,
115..116,
),
]
```