Implement template strings (#17851)

This PR implements template strings (t-strings) in the parser and
formatter for Ruff.

Minimal changes necessary to compile were made in other parts of the code (e.g. ty, the linter, etc.). These will be covered properly in follow-up PRs.
This commit is contained in:
Dylan 2025-05-30 15:00:56 -05:00 committed by GitHub
parent ad024f9a09
commit 9bbf4987e8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
261 changed files with 18023 additions and 1802 deletions

View file

@ -0,0 +1,98 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
2..3,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
String(
"",
),
4..6,
TokenFlags(
DOUBLE_QUOTES,
),
),
(
TStringStart,
7..9,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
9..10,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringStart,
11..13,
TokenFlags(
T_STRING,
),
),
(
TStringEnd,
13..14,
TokenFlags(
T_STRING,
),
),
(
String(
"",
),
15..17,
),
(
TStringStart,
18..22,
TokenFlags(
DOUBLE_QUOTES | TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
TStringEnd,
22..25,
TokenFlags(
DOUBLE_QUOTES | TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
TStringStart,
26..30,
TokenFlags(
TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
TStringEnd,
30..33,
TokenFlags(
TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
Newline,
33..33,
),
]
```

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
snapshot_kind: text
---
## Tokens
```
@ -14,7 +13,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"normal ",
),
2..9,
@ -37,7 +36,7 @@ snapshot_kind: text
13..14,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" {another} ",
),
14..27,
@ -60,7 +59,7 @@ snapshot_kind: text
31..32,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" {",
),
32..35,
@ -83,7 +82,7 @@ snapshot_kind: text
41..42,
),
(
FStringMiddle(
InterpolatedStringMiddle(
"}",
),
42..44,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
snapshot_kind: text
---
## Tokens
```
@ -14,7 +13,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"\n# not a comment ",
),
4..21,
@ -49,7 +48,7 @@ snapshot_kind: text
41..42,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" # not a comment\n",
),
42..59,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
snapshot_kind: text
---
## Tokens
```
@ -38,7 +37,7 @@ snapshot_kind: text
6..7,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" ",
),
7..8,
@ -75,7 +74,7 @@ snapshot_kind: text
13..14,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" ",
),
14..15,
@ -98,7 +97,7 @@ snapshot_kind: text
17..18,
),
(
FStringMiddle(
InterpolatedStringMiddle(
".3f!r",
),
18..23,
@ -111,7 +110,7 @@ snapshot_kind: text
23..24,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" {x!r}",
),
24..32,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
snapshot_kind: text
---
## Tokens
```
@ -14,7 +13,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"\\",
),
2..3,
@ -37,7 +36,7 @@ snapshot_kind: text
5..6,
),
(
FStringMiddle(
InterpolatedStringMiddle(
"\\\"\\",
),
6..9,
@ -64,7 +63,7 @@ snapshot_kind: text
12..13,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" \\\"\\\"\\\n end",
),
13..24,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
snapshot_kind: text
---
## Tokens
```
@ -14,7 +13,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"\\",
),
2..3,
@ -51,7 +50,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"\\\\",
),
12..14,
@ -88,7 +87,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"\\{foo}",
),
23..31,
@ -111,7 +110,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"\\\\{foo}",
),
35..44,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
snapshot_kind: text
---
## Tokens
```
@ -14,7 +13,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"\\",
),
3..4,
@ -37,7 +36,7 @@ snapshot_kind: text
6..7,
),
(
FStringMiddle(
InterpolatedStringMiddle(
"\\\"\\",
),
7..10,
@ -64,7 +63,7 @@ snapshot_kind: text
13..14,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" \\\"\\\"\\\n end",
),
14..25,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
snapshot_kind: text
---
## Tokens
```
@ -14,7 +13,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"first ",
),
2..8,
@ -63,7 +62,7 @@ snapshot_kind: text
40..41,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" second",
),
41..48,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
snapshot_kind: text
---
## Tokens
```
@ -14,7 +13,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"\nhello\n world\n",
),
4..21,
@ -37,7 +36,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"\n world\nhello\n",
),
29..46,
@ -60,7 +59,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"some ",
),
52..57,
@ -80,7 +79,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"multiline\nallowed ",
),
62..80,
@ -114,7 +113,7 @@ snapshot_kind: text
86..87,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" string",
),
87..94,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
snapshot_kind: text
---
## Tokens
```
@ -14,7 +13,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"\\N{BULLET} normal \\Nope \\N",
),
2..28,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
snapshot_kind: text
---
## Tokens
```
@ -14,7 +13,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"\\N",
),
3..5,
@ -37,7 +36,7 @@ snapshot_kind: text
12..13,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" normal",
),
13..20,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
snapshot_kind: text
---
## Tokens
```
@ -14,7 +13,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"foo ",
),
2..6,
@ -34,7 +33,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"bar ",
),
9..13,
@ -100,7 +99,7 @@ snapshot_kind: text
28..29,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" baz",
),
29..33,
@ -123,7 +122,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"foo ",
),
37..41,
@ -143,7 +142,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"bar",
),
44..47,
@ -163,7 +162,7 @@ snapshot_kind: text
48..49,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" some ",
),
49..55,
@ -183,7 +182,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"another",
),
58..65,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
snapshot_kind: text
---
## Tokens
```
@ -36,7 +35,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"{}",
),
8..12,
@ -59,7 +58,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
" ",
),
16..17,
@ -90,7 +89,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"{",
),
23..25,
@ -107,7 +106,7 @@ snapshot_kind: text
26..27,
),
(
FStringMiddle(
InterpolatedStringMiddle(
"}",
),
27..29,
@ -130,7 +129,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"{{}}",
),
33..41,
@ -153,7 +152,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
" ",
),
45..46,
@ -170,7 +169,7 @@ snapshot_kind: text
47..48,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" {} {",
),
48..56,
@ -187,7 +186,7 @@ snapshot_kind: text
57..58,
),
(
FStringMiddle(
InterpolatedStringMiddle(
"} {{}} ",
),
58..71,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: fstring_single_quote_escape_eol(MAC_EOL)
snapshot_kind: text
---
## Tokens
```
@ -14,7 +13,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"text \\\r more text",
),
2..19,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: fstring_single_quote_escape_eol(UNIX_EOL)
snapshot_kind: text
---
## Tokens
```
@ -14,7 +13,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"text \\\n more text",
),
2..19,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: fstring_single_quote_escape_eol(WINDOWS_EOL)
snapshot_kind: text
---
## Tokens
```
@ -14,7 +13,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"text \\\r\n more text",
),
2..20,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
snapshot_kind: text
---
## Tokens
```
@ -32,7 +31,7 @@ snapshot_kind: text
7..8,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" ",
),
8..9,
@ -69,7 +68,7 @@ snapshot_kind: text
14..15,
),
(
FStringMiddle(
InterpolatedStringMiddle(
".3f",
),
15..18,
@ -82,7 +81,7 @@ snapshot_kind: text
18..19,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" ",
),
19..20,
@ -105,7 +104,7 @@ snapshot_kind: text
22..23,
),
(
FStringMiddle(
InterpolatedStringMiddle(
".",
),
23..24,
@ -128,7 +127,7 @@ snapshot_kind: text
26..27,
),
(
FStringMiddle(
InterpolatedStringMiddle(
"f",
),
27..28,
@ -141,7 +140,7 @@ snapshot_kind: text
28..29,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" ",
),
29..30,
@ -164,7 +163,7 @@ snapshot_kind: text
33..34,
),
(
FStringMiddle(
InterpolatedStringMiddle(
"*^",
),
34..36,
@ -209,7 +208,7 @@ snapshot_kind: text
43..44,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" ",
),
44..45,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
snapshot_kind: text
---
## Tokens
```
@ -14,7 +13,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"foo ",
),
2..6,
@ -41,7 +40,7 @@ snapshot_kind: text
11..12,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" bar",
),
12..16,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
snapshot_kind: text
---
## Tokens
```
@ -14,7 +13,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"__",
),
4..6,
@ -41,7 +40,7 @@ snapshot_kind: text
13..14,
),
(
FStringMiddle(
InterpolatedStringMiddle(
"d\n",
),
14..16,
@ -54,7 +53,7 @@ snapshot_kind: text
16..17,
),
(
FStringMiddle(
InterpolatedStringMiddle(
"__",
),
17..19,
@ -81,7 +80,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"__",
),
27..29,
@ -108,7 +107,7 @@ snapshot_kind: text
36..37,
),
(
FStringMiddle(
InterpolatedStringMiddle(
"a\n b\n c\n",
),
37..61,
@ -121,7 +120,7 @@ snapshot_kind: text
61..62,
),
(
FStringMiddle(
InterpolatedStringMiddle(
"__",
),
62..64,
@ -148,7 +147,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"__",
),
70..72,
@ -175,7 +174,7 @@ snapshot_kind: text
79..80,
),
(
FStringMiddle(
InterpolatedStringMiddle(
"d",
),
80..81,
@ -192,7 +191,7 @@ snapshot_kind: text
82..83,
),
(
FStringMiddle(
InterpolatedStringMiddle(
"__",
),
83..85,
@ -219,7 +218,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"__",
),
89..91,
@ -246,7 +245,7 @@ snapshot_kind: text
98..99,
),
(
FStringMiddle(
InterpolatedStringMiddle(
"a",
),
99..100,
@ -273,7 +272,7 @@ snapshot_kind: text
111..112,
),
(
FStringMiddle(
InterpolatedStringMiddle(
"__",
),
112..114,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
snapshot_kind: text
---
## Tokens
```
@ -28,7 +27,7 @@ snapshot_kind: text
4..5,
),
(
FStringMiddle(
InterpolatedStringMiddle(
"=10",
),
5..8,
@ -41,7 +40,7 @@ snapshot_kind: text
8..9,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" ",
),
9..10,
@ -82,7 +81,7 @@ snapshot_kind: text
18..19,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" ",
),
19..20,
@ -133,7 +132,7 @@ snapshot_kind: text
30..31,
),
(
FStringMiddle(
InterpolatedStringMiddle(
" ",
),
31..32,

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
snapshot_kind: text
---
## Tokens
```
@ -14,7 +13,7 @@ snapshot_kind: text
),
),
(
FStringMiddle(
InterpolatedStringMiddle(
"\\0",
),
2..4,

View file

@ -0,0 +1,226 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
InterpolatedStringMiddle(
"foo ",
),
2..6,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
6..7,
),
(
FStringStart,
7..9,
TokenFlags(
DOUBLE_QUOTES | F_STRING,
),
),
(
InterpolatedStringMiddle(
"bar ",
),
9..13,
TokenFlags(
DOUBLE_QUOTES | F_STRING,
),
),
(
Lbrace,
13..14,
),
(
Name(
Name("x"),
),
14..15,
),
(
Plus,
16..17,
),
(
TStringStart,
18..20,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
20..21,
),
(
Name(
Name("wow"),
),
21..24,
),
(
Rbrace,
24..25,
),
(
TStringEnd,
25..26,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Rbrace,
26..27,
),
(
FStringEnd,
27..28,
TokenFlags(
DOUBLE_QUOTES | F_STRING,
),
),
(
Rbrace,
28..29,
),
(
InterpolatedStringMiddle(
" baz",
),
29..33,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
33..34,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
FStringStart,
35..37,
TokenFlags(
F_STRING,
),
),
(
InterpolatedStringMiddle(
"foo ",
),
37..41,
TokenFlags(
F_STRING,
),
),
(
Lbrace,
41..42,
),
(
TStringStart,
42..44,
TokenFlags(
T_STRING,
),
),
(
InterpolatedStringMiddle(
"bar",
),
44..47,
TokenFlags(
T_STRING,
),
),
(
TStringEnd,
47..48,
TokenFlags(
T_STRING,
),
),
(
Exclamation,
48..49,
),
(
Name(
Name("r"),
),
49..50,
),
(
Rbrace,
50..51,
),
(
InterpolatedStringMiddle(
" some ",
),
51..57,
TokenFlags(
F_STRING,
),
),
(
Lbrace,
57..58,
),
(
FStringStart,
58..60,
TokenFlags(
DOUBLE_QUOTES | F_STRING,
),
),
(
InterpolatedStringMiddle(
"another",
),
60..67,
TokenFlags(
DOUBLE_QUOTES | F_STRING,
),
),
(
FStringEnd,
67..68,
TokenFlags(
DOUBLE_QUOTES | F_STRING,
),
),
(
Rbrace,
68..69,
),
(
FStringEnd,
69..70,
TokenFlags(
F_STRING,
),
),
(
Newline,
70..70,
),
]
```

View file

@ -0,0 +1,105 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
InterpolatedStringMiddle(
"normal ",
),
2..9,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
9..10,
),
(
Name(
Name("foo"),
),
10..13,
),
(
Rbrace,
13..14,
),
(
InterpolatedStringMiddle(
" {another} ",
),
14..27,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
27..28,
),
(
Name(
Name("bar"),
),
28..31,
),
(
Rbrace,
31..32,
),
(
InterpolatedStringMiddle(
" {",
),
32..35,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
35..36,
),
(
Name(
Name("three"),
),
36..41,
),
(
Rbrace,
41..42,
),
(
InterpolatedStringMiddle(
"}",
),
42..44,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
44..45,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Newline,
45..45,
),
]
```

View file

@ -0,0 +1,71 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..4,
TokenFlags(
DOUBLE_QUOTES | TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
InterpolatedStringMiddle(
"\n# not a comment ",
),
4..21,
TokenFlags(
DOUBLE_QUOTES | TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
Lbrace,
21..22,
),
(
Comment,
23..34,
),
(
NonLogicalNewline,
34..35,
),
(
Name(
Name("x"),
),
39..40,
),
(
NonLogicalNewline,
40..41,
),
(
Rbrace,
41..42,
),
(
InterpolatedStringMiddle(
" # not a comment\n",
),
42..59,
TokenFlags(
DOUBLE_QUOTES | TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
TStringEnd,
59..62,
TokenFlags(
DOUBLE_QUOTES | TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
Newline,
62..62,
),
]
```

View file

@ -0,0 +1,133 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
2..3,
),
(
Name(
Name("x"),
),
3..4,
),
(
Exclamation,
4..5,
),
(
Name(
Name("s"),
),
5..6,
),
(
Rbrace,
6..7,
),
(
InterpolatedStringMiddle(
" ",
),
7..8,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
8..9,
),
(
Name(
Name("x"),
),
9..10,
),
(
Equal,
10..11,
),
(
Exclamation,
11..12,
),
(
Name(
Name("r"),
),
12..13,
),
(
Rbrace,
13..14,
),
(
InterpolatedStringMiddle(
" ",
),
14..15,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
15..16,
),
(
Name(
Name("x"),
),
16..17,
),
(
Colon,
17..18,
),
(
InterpolatedStringMiddle(
".3f!r",
),
18..23,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Rbrace,
23..24,
),
(
InterpolatedStringMiddle(
" {x!r}",
),
24..32,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
32..33,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Newline,
33..33,
),
]
```

View file

@ -0,0 +1,86 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
InterpolatedStringMiddle(
"\\",
),
2..3,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
3..4,
),
(
Name(
Name("x"),
),
4..5,
),
(
Colon,
5..6,
),
(
InterpolatedStringMiddle(
"\\\"\\",
),
6..9,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
9..10,
),
(
Name(
Name("x"),
),
10..11,
),
(
Rbrace,
11..12,
),
(
Rbrace,
12..13,
),
(
InterpolatedStringMiddle(
" \\\"\\\"\\\n end",
),
13..24,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
24..25,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Newline,
25..25,
),
]
```

View file

@ -0,0 +1,133 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
T_STRING,
),
),
(
InterpolatedStringMiddle(
"\\",
),
2..3,
TokenFlags(
T_STRING,
),
),
(
Lbrace,
3..4,
),
(
Name(
Name("foo"),
),
4..7,
),
(
Rbrace,
7..8,
),
(
TStringEnd,
8..9,
TokenFlags(
T_STRING,
),
),
(
TStringStart,
10..12,
TokenFlags(
T_STRING,
),
),
(
InterpolatedStringMiddle(
"\\\\",
),
12..14,
TokenFlags(
T_STRING,
),
),
(
Lbrace,
14..15,
),
(
Name(
Name("foo"),
),
15..18,
),
(
Rbrace,
18..19,
),
(
TStringEnd,
19..20,
TokenFlags(
T_STRING,
),
),
(
TStringStart,
21..23,
TokenFlags(
T_STRING,
),
),
(
InterpolatedStringMiddle(
"\\{foo}",
),
23..31,
TokenFlags(
T_STRING,
),
),
(
TStringEnd,
31..32,
TokenFlags(
T_STRING,
),
),
(
TStringStart,
33..35,
TokenFlags(
T_STRING,
),
),
(
InterpolatedStringMiddle(
"\\\\{foo}",
),
35..44,
TokenFlags(
T_STRING,
),
),
(
TStringEnd,
44..45,
TokenFlags(
T_STRING,
),
),
(
Newline,
45..45,
),
]
```

View file

@ -0,0 +1,86 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..3,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_LOWERCASE,
),
),
(
InterpolatedStringMiddle(
"\\",
),
3..4,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_LOWERCASE,
),
),
(
Lbrace,
4..5,
),
(
Name(
Name("x"),
),
5..6,
),
(
Colon,
6..7,
),
(
InterpolatedStringMiddle(
"\\\"\\",
),
7..10,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_LOWERCASE,
),
),
(
Lbrace,
10..11,
),
(
Name(
Name("x"),
),
11..12,
),
(
Rbrace,
12..13,
),
(
Rbrace,
13..14,
),
(
InterpolatedStringMiddle(
" \\\"\\\"\\\n end",
),
14..25,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_LOWERCASE,
),
),
(
TStringEnd,
25..26,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_LOWERCASE,
),
),
(
Newline,
26..26,
),
]
```

View file

@ -0,0 +1,85 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
InterpolatedStringMiddle(
"first ",
),
2..8,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
8..9,
),
(
NonLogicalNewline,
9..10,
),
(
Name(
Name("x"),
),
14..15,
),
(
NonLogicalNewline,
15..16,
),
(
Star,
24..25,
),
(
NonLogicalNewline,
25..26,
),
(
Name(
Name("y"),
),
38..39,
),
(
NonLogicalNewline,
39..40,
),
(
Rbrace,
40..41,
),
(
InterpolatedStringMiddle(
" second",
),
41..48,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
48..49,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Newline,
49..49,
),
]
```

View file

@ -0,0 +1,136 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..4,
TokenFlags(
DOUBLE_QUOTES | TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
InterpolatedStringMiddle(
"\nhello\n world\n",
),
4..21,
TokenFlags(
DOUBLE_QUOTES | TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
TStringEnd,
21..24,
TokenFlags(
DOUBLE_QUOTES | TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
TStringStart,
25..29,
TokenFlags(
TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
InterpolatedStringMiddle(
"\n world\nhello\n",
),
29..46,
TokenFlags(
TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
TStringEnd,
46..49,
TokenFlags(
TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
TStringStart,
50..52,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
InterpolatedStringMiddle(
"some ",
),
52..57,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
57..58,
),
(
TStringStart,
58..62,
TokenFlags(
DOUBLE_QUOTES | TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
InterpolatedStringMiddle(
"multiline\nallowed ",
),
62..80,
TokenFlags(
DOUBLE_QUOTES | TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
Lbrace,
80..81,
),
(
Name(
Name("x"),
),
81..82,
),
(
Rbrace,
82..83,
),
(
TStringEnd,
83..86,
TokenFlags(
DOUBLE_QUOTES | TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
Rbrace,
86..87,
),
(
InterpolatedStringMiddle(
" string",
),
87..94,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
94..95,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Newline,
95..95,
),
]
```

View file

@ -0,0 +1,36 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
InterpolatedStringMiddle(
"\\N{BULLET} normal \\Nope \\N",
),
2..28,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
28..29,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Newline,
29..29,
),
]
```

View file

@ -0,0 +1,59 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..3,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_LOWERCASE,
),
),
(
InterpolatedStringMiddle(
"\\N",
),
3..5,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_LOWERCASE,
),
),
(
Lbrace,
5..6,
),
(
Name(
Name("BULLET"),
),
6..12,
),
(
Rbrace,
12..13,
),
(
InterpolatedStringMiddle(
" normal",
),
13..20,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_LOWERCASE,
),
),
(
TStringEnd,
20..21,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_LOWERCASE,
),
),
(
Newline,
21..21,
),
]
```

View file

@ -0,0 +1,216 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
InterpolatedStringMiddle(
"foo ",
),
2..6,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
6..7,
),
(
TStringStart,
7..9,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
InterpolatedStringMiddle(
"bar ",
),
9..13,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
13..14,
),
(
Name(
Name("x"),
),
14..15,
),
(
Plus,
16..17,
),
(
TStringStart,
18..20,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
20..21,
),
(
Name(
Name("wow"),
),
21..24,
),
(
Rbrace,
24..25,
),
(
TStringEnd,
25..26,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Rbrace,
26..27,
),
(
TStringEnd,
27..28,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Rbrace,
28..29,
),
(
InterpolatedStringMiddle(
" baz",
),
29..33,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
33..34,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringStart,
35..37,
TokenFlags(
T_STRING,
),
),
(
InterpolatedStringMiddle(
"foo ",
),
37..41,
TokenFlags(
T_STRING,
),
),
(
Lbrace,
41..42,
),
(
TStringStart,
42..44,
TokenFlags(
T_STRING,
),
),
(
InterpolatedStringMiddle(
"bar",
),
44..47,
TokenFlags(
T_STRING,
),
),
(
TStringEnd,
47..48,
TokenFlags(
T_STRING,
),
),
(
Rbrace,
48..49,
),
(
InterpolatedStringMiddle(
" some ",
),
49..55,
TokenFlags(
T_STRING,
),
),
(
Lbrace,
55..56,
),
(
TStringStart,
56..58,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
InterpolatedStringMiddle(
"another",
),
58..65,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
65..66,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Rbrace,
66..67,
),
(
TStringEnd,
67..68,
TokenFlags(
T_STRING,
),
),
(
Newline,
68..68,
),
]
```

View file

@ -0,0 +1,209 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
2..3,
),
(
Rbrace,
3..4,
),
(
TStringEnd,
4..5,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringStart,
6..8,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
InterpolatedStringMiddle(
"{}",
),
8..12,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
12..13,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringStart,
14..16,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
InterpolatedStringMiddle(
" ",
),
16..17,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
17..18,
),
(
Rbrace,
18..19,
),
(
TStringEnd,
19..20,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringStart,
21..23,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
InterpolatedStringMiddle(
"{",
),
23..25,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
25..26,
),
(
Rbrace,
26..27,
),
(
InterpolatedStringMiddle(
"}",
),
27..29,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
29..30,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringStart,
31..33,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
InterpolatedStringMiddle(
"{{}}",
),
33..41,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
41..42,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringStart,
43..45,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
InterpolatedStringMiddle(
" ",
),
45..46,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
46..47,
),
(
Rbrace,
47..48,
),
(
InterpolatedStringMiddle(
" {} {",
),
48..56,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
56..57,
),
(
Rbrace,
57..58,
),
(
InterpolatedStringMiddle(
"} {{}} ",
),
58..71,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
71..72,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Newline,
72..72,
),
]
```

View file

@ -0,0 +1,153 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
2..3,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringStart,
4..6,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
6..7,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringStart,
8..11,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_LOWERCASE,
),
),
(
TStringEnd,
11..12,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_LOWERCASE,
),
),
(
TStringStart,
13..16,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_LOWERCASE,
),
),
(
TStringEnd,
16..17,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_LOWERCASE,
),
),
(
TStringStart,
18..21,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_UPPERCASE,
),
),
(
TStringEnd,
21..22,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_UPPERCASE,
),
),
(
TStringStart,
23..26,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_UPPERCASE,
),
),
(
TStringEnd,
26..27,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_UPPERCASE,
),
),
(
TStringStart,
28..31,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_LOWERCASE,
),
),
(
TStringEnd,
31..32,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_LOWERCASE,
),
),
(
TStringStart,
33..36,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_LOWERCASE,
),
),
(
TStringEnd,
36..37,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_LOWERCASE,
),
),
(
TStringStart,
38..41,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_UPPERCASE,
),
),
(
TStringEnd,
41..42,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_UPPERCASE,
),
),
(
TStringStart,
43..46,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_UPPERCASE,
),
),
(
TStringEnd,
46..47,
TokenFlags(
DOUBLE_QUOTES | T_STRING | RAW_STRING_UPPERCASE,
),
),
(
Newline,
47..47,
),
]
```

View file

@ -0,0 +1,36 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: tstring_single_quote_escape_eol(MAC_EOL)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
T_STRING,
),
),
(
InterpolatedStringMiddle(
"text \\\r more text",
),
2..19,
TokenFlags(
T_STRING,
),
),
(
TStringEnd,
19..20,
TokenFlags(
T_STRING,
),
),
(
Newline,
20..20,
),
]
```

View file

@ -0,0 +1,36 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: tstring_single_quote_escape_eol(UNIX_EOL)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
T_STRING,
),
),
(
InterpolatedStringMiddle(
"text \\\n more text",
),
2..19,
TokenFlags(
T_STRING,
),
),
(
TStringEnd,
19..20,
TokenFlags(
T_STRING,
),
),
(
Newline,
20..20,
),
]
```

View file

@ -0,0 +1,36 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: tstring_single_quote_escape_eol(WINDOWS_EOL)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
T_STRING,
),
),
(
InterpolatedStringMiddle(
"text \\\r\n more text",
),
2..20,
TokenFlags(
T_STRING,
),
),
(
TStringEnd,
20..21,
TokenFlags(
T_STRING,
),
),
(
Newline,
21..21,
),
]
```

View file

@ -0,0 +1,289 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
2..3,
),
(
Name(
Name("foo"),
),
3..6,
),
(
Colon,
6..7,
),
(
Rbrace,
7..8,
),
(
InterpolatedStringMiddle(
" ",
),
8..9,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
9..10,
),
(
Name(
Name("x"),
),
10..11,
),
(
Equal,
11..12,
),
(
Exclamation,
12..13,
),
(
Name(
Name("s"),
),
13..14,
),
(
Colon,
14..15,
),
(
InterpolatedStringMiddle(
".3f",
),
15..18,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Rbrace,
18..19,
),
(
InterpolatedStringMiddle(
" ",
),
19..20,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
20..21,
),
(
Name(
Name("x"),
),
21..22,
),
(
Colon,
22..23,
),
(
InterpolatedStringMiddle(
".",
),
23..24,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
24..25,
),
(
Name(
Name("y"),
),
25..26,
),
(
Rbrace,
26..27,
),
(
InterpolatedStringMiddle(
"f",
),
27..28,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Rbrace,
28..29,
),
(
InterpolatedStringMiddle(
" ",
),
29..30,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
30..31,
),
(
String(
"",
),
31..33,
),
(
Colon,
33..34,
),
(
InterpolatedStringMiddle(
"*^",
),
34..36,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
36..37,
),
(
Int(
1,
),
37..38,
),
(
Colon,
38..39,
),
(
Lbrace,
39..40,
),
(
Int(
1,
),
40..41,
),
(
Rbrace,
41..42,
),
(
Rbrace,
42..43,
),
(
Rbrace,
43..44,
),
(
InterpolatedStringMiddle(
" ",
),
44..45,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
45..46,
),
(
Name(
Name("x"),
),
46..47,
),
(
Colon,
47..48,
),
(
Lbrace,
48..49,
),
(
Lbrace,
49..50,
),
(
Int(
1,
),
50..51,
),
(
Rbrace,
51..52,
),
(
Dot,
52..53,
),
(
Name(
Name("pop"),
),
53..56,
),
(
Lpar,
56..57,
),
(
Rpar,
57..58,
),
(
Rbrace,
58..59,
),
(
Rbrace,
59..60,
),
(
TStringEnd,
60..61,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Newline,
61..61,
),
]
```

View file

@ -0,0 +1,63 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
InterpolatedStringMiddle(
"foo ",
),
2..6,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
6..7,
),
(
Exclamation,
7..8,
),
(
Name(
Name("pwd"),
),
8..11,
),
(
Rbrace,
11..12,
),
(
InterpolatedStringMiddle(
" bar",
),
12..16,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
TStringEnd,
16..17,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Newline,
17..17,
),
]
```

View file

@ -0,0 +1,125 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
2..3,
),
(
Lambda,
3..9,
),
(
Name(
Name("x"),
),
10..11,
),
(
Colon,
11..12,
),
(
Lbrace,
12..13,
),
(
Name(
Name("x"),
),
13..14,
),
(
Rbrace,
14..15,
),
(
Rbrace,
15..16,
),
(
TStringEnd,
16..17,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Newline,
17..18,
),
(
TStringStart,
18..20,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
20..21,
),
(
Lpar,
21..22,
),
(
Lambda,
22..28,
),
(
Name(
Name("x"),
),
29..30,
),
(
Colon,
30..31,
),
(
Lbrace,
31..32,
),
(
Name(
Name("x"),
),
32..33,
),
(
Rbrace,
33..34,
),
(
Rpar,
34..35,
),
(
Rbrace,
35..36,
),
(
TStringEnd,
36..37,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Newline,
37..37,
),
]
```

View file

@ -0,0 +1,295 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..4,
TokenFlags(
TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
InterpolatedStringMiddle(
"__",
),
4..6,
TokenFlags(
TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
Lbrace,
6..7,
),
(
NonLogicalNewline,
7..8,
),
(
Name(
Name("x"),
),
12..13,
),
(
Colon,
13..14,
),
(
InterpolatedStringMiddle(
"d\n",
),
14..16,
TokenFlags(
TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
Rbrace,
16..17,
),
(
InterpolatedStringMiddle(
"__",
),
17..19,
TokenFlags(
TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
TStringEnd,
19..22,
TokenFlags(
TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
Newline,
22..23,
),
(
TStringStart,
23..27,
TokenFlags(
TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
InterpolatedStringMiddle(
"__",
),
27..29,
TokenFlags(
TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
Lbrace,
29..30,
),
(
NonLogicalNewline,
30..31,
),
(
Name(
Name("x"),
),
35..36,
),
(
Colon,
36..37,
),
(
InterpolatedStringMiddle(
"a\n b\n c\n",
),
37..61,
TokenFlags(
TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
Rbrace,
61..62,
),
(
InterpolatedStringMiddle(
"__",
),
62..64,
TokenFlags(
TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
TStringEnd,
64..67,
TokenFlags(
TRIPLE_QUOTED_STRING | T_STRING,
),
),
(
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,
),
]
```

View file

@ -0,0 +1,187 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
2..3,
),
(
Name(
Name("x"),
),
3..4,
),
(
Colon,
4..5,
),
(
InterpolatedStringMiddle(
"=10",
),
5..8,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Rbrace,
8..9,
),
(
InterpolatedStringMiddle(
" ",
),
9..10,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
10..11,
),
(
Lpar,
11..12,
),
(
Name(
Name("x"),
),
12..13,
),
(
ColonEqual,
13..15,
),
(
Int(
10,
),
15..17,
),
(
Rpar,
17..18,
),
(
Rbrace,
18..19,
),
(
InterpolatedStringMiddle(
" ",
),
19..20,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
20..21,
),
(
Name(
Name("x"),
),
21..22,
),
(
Comma,
22..23,
),
(
Lbrace,
23..24,
),
(
Name(
Name("y"),
),
24..25,
),
(
ColonEqual,
25..27,
),
(
Int(
10,
),
27..29,
),
(
Rbrace,
29..30,
),
(
Rbrace,
30..31,
),
(
InterpolatedStringMiddle(
" ",
),
31..32,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Lbrace,
32..33,
),
(
Lsqb,
33..34,
),
(
Name(
Name("x"),
),
34..35,
),
(
ColonEqual,
35..37,
),
(
Int(
10,
),
37..39,
),
(
Rsqb,
39..40,
),
(
Rbrace,
40..41,
),
(
TStringEnd,
41..42,
TokenFlags(
DOUBLE_QUOTES | T_STRING,
),
),
(
Newline,
42..42,
),
]
```

View file

@ -0,0 +1,36 @@
---
source: crates/ruff_python_parser/src/lexer.rs
expression: lex_source(source)
---
## Tokens
```
[
(
TStringStart,
0..2,
TokenFlags(
T_STRING,
),
),
(
InterpolatedStringMiddle(
"\\0",
),
2..4,
TokenFlags(
T_STRING,
),
),
(
TStringEnd,
4..5,
TokenFlags(
T_STRING,
),
),
(
Newline,
5..5,
),
]
```

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -17,13 +16,13 @@ snapshot_kind: text
range: 0..22,
elements: [
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 2..5,
value: "aaa",
},
),
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 5..10,
expression: Name(
ExprName {
@ -38,13 +37,13 @@ snapshot_kind: text
},
),
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 10..13,
value: "ccc",
},
),
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 13..18,
expression: Name(
ExprName {
@ -59,7 +58,7 @@ snapshot_kind: text
},
),
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 18..21,
value: "eee",
},

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -17,13 +16,13 @@ snapshot_kind: text
range: 0..8,
elements: [
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 2..4,
value: "\\",
},
),
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 4..7,
expression: Name(
ExprName {

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -17,13 +16,13 @@ snapshot_kind: text
range: 0..8,
elements: [
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 2..4,
value: "\n",
},
),
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 4..7,
expression: Name(
ExprName {

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -17,13 +16,13 @@ snapshot_kind: text
range: 0..9,
elements: [
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 3..5,
value: "\\\n",
},
),
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 5..8,
expression: Name(
ExprName {

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -16,8 +15,8 @@ snapshot_kind: text
FString {
range: 0..10,
elements: [
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 2..9,
expression: Name(
ExprName {

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -17,13 +16,13 @@ snapshot_kind: text
range: 0..38,
elements: [
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 2..6,
value: "mix ",
},
),
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 6..13,
expression: Name(
ExprName {
@ -43,13 +42,13 @@ snapshot_kind: text
},
),
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 13..28,
value: " with text and ",
},
),
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 28..37,
expression: Name(
ExprName {

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -16,8 +15,8 @@ snapshot_kind: text
FString {
range: 0..14,
elements: [
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 2..13,
expression: Name(
ExprName {
@ -34,11 +33,11 @@ snapshot_kind: text
),
conversion: None,
format_spec: Some(
FStringFormatSpec {
InterpolatedStringFormatSpec {
range: 9..12,
elements: [
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 9..12,
value: ">10",
},

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -17,13 +16,13 @@ snapshot_kind: text
range: 0..11,
elements: [
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 4..5,
value: "\n",
},
),
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 5..8,
expression: Name(
ExprName {

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(

View file

@ -0,0 +1,31 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..3,
value: TString(
ExprTString {
range: 0..3,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..3,
elements: [],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -29,7 +28,7 @@ snapshot_kind: text
range: 9..17,
elements: [
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 11..16,
value: "world",
},

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -29,7 +28,7 @@ snapshot_kind: text
range: 9..17,
elements: [
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 11..16,
value: "world",
},

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -29,13 +28,13 @@ snapshot_kind: text
range: 9..22,
elements: [
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 11..16,
value: "world",
},
),
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 16..21,
expression: StringLiteral(
ExprStringLiteral {

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -29,13 +28,13 @@ snapshot_kind: text
range: 9..22,
elements: [
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 11..16,
value: "world",
},
),
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 16..21,
expression: StringLiteral(
ExprStringLiteral {

View file

@ -0,0 +1,58 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..18,
value: TString(
ExprTString {
range: 0..18,
value: TStringValue {
inner: Concatenated(
[
FString(
FString {
range: 0..9,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 2..8,
value: "Hello ",
},
),
],
flags: FStringFlags {
quote_style: Single,
prefix: Regular,
triple_quoted: false,
},
},
),
TString(
TString {
range: 10..18,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 12..17,
value: "world",
},
),
],
flags: TStringFlags {
quote_style: Single,
prefix: Regular,
triple_quoted: false,
},
},
),
],
),
},
},
),
},
),
]

View file

@ -0,0 +1,69 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..22,
value: TString(
ExprTString {
range: 0..22,
value: TStringValue {
inner: Concatenated(
[
FString(
FString {
range: 0..9,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 2..8,
value: "Hello ",
},
),
],
flags: FStringFlags {
quote_style: Single,
prefix: Regular,
triple_quoted: false,
},
},
),
TString(
TString {
range: 10..18,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 12..17,
value: "world",
},
),
],
flags: TStringFlags {
quote_style: Single,
prefix: Regular,
triple_quoted: false,
},
},
),
Literal(
StringLiteral {
range: 19..22,
value: "!",
flags: StringLiteralFlags {
quote_style: Single,
prefix: Empty,
triple_quoted: false,
},
},
),
],
),
},
},
),
},
),
]

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -16,8 +15,8 @@ snapshot_kind: text
FString {
range: 0..18,
elements: [
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 2..5,
expression: Name(
ExprName {
@ -31,8 +30,8 @@ snapshot_kind: text
format_spec: None,
},
),
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 5..10,
expression: Name(
ExprName {
@ -47,7 +46,7 @@ snapshot_kind: text
},
),
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 10..17,
value: "{foo}",
},

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -16,8 +15,8 @@ snapshot_kind: text
FString {
range: 0..13,
elements: [
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 2..12,
expression: Compare(
ExprCompare {

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -16,8 +15,8 @@ snapshot_kind: text
FString {
range: 0..16,
elements: [
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 2..15,
expression: Name(
ExprName {
@ -29,11 +28,11 @@ snapshot_kind: text
debug_text: None,
conversion: None,
format_spec: Some(
FStringFormatSpec {
InterpolatedStringFormatSpec {
range: 7..14,
elements: [
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 7..14,
expression: StringLiteral(
ExprStringLiteral {

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -16,8 +15,8 @@ snapshot_kind: text
FString {
range: 0..15,
elements: [
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 2..14,
expression: Name(
ExprName {
@ -29,11 +28,11 @@ snapshot_kind: text
debug_text: None,
conversion: None,
format_spec: Some(
FStringFormatSpec {
InterpolatedStringFormatSpec {
range: 7..13,
elements: [
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 7..13,
expression: Name(
ExprName {

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -16,8 +15,8 @@ snapshot_kind: text
FString {
range: 0..13,
elements: [
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 2..12,
expression: Name(
ExprName {
@ -29,11 +28,11 @@ snapshot_kind: text
debug_text: None,
conversion: None,
format_spec: Some(
FStringFormatSpec {
InterpolatedStringFormatSpec {
range: 7..11,
elements: [
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 7..11,
expression: StringLiteral(
ExprStringLiteral {

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -16,8 +15,8 @@ snapshot_kind: text
FString {
range: 0..11,
elements: [
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 2..10,
expression: Compare(
ExprCompare {

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -16,8 +15,8 @@ snapshot_kind: text
FString {
range: 0..13,
elements: [
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 2..12,
expression: Name(
ExprName {
@ -29,11 +28,11 @@ snapshot_kind: text
debug_text: None,
conversion: None,
format_spec: Some(
FStringFormatSpec {
InterpolatedStringFormatSpec {
range: 7..11,
elements: [
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 7..11,
value: "spec",
},

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -16,8 +15,8 @@ snapshot_kind: text
FString {
range: 0..10,
elements: [
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 2..9,
expression: Name(
ExprName {

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -16,8 +15,8 @@ snapshot_kind: text
FString {
range: 0..10,
elements: [
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 2..9,
expression: Name(
ExprName {

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -16,8 +15,8 @@ snapshot_kind: text
FString {
range: 0..10,
elements: [
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 2..9,
expression: Yield(
ExprYield {

View file

@ -0,0 +1,51 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..17,
value: TString(
ExprTString {
range: 0..17,
value: TStringValue {
inner: Concatenated(
[
Literal(
StringLiteral {
range: 0..8,
value: "Hello ",
flags: StringLiteralFlags {
quote_style: Single,
prefix: Empty,
triple_quoted: false,
},
},
),
TString(
TString {
range: 9..17,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 11..16,
value: "world",
},
),
],
flags: TStringFlags {
quote_style: Single,
prefix: Regular,
triple_quoted: false,
},
},
),
],
),
},
},
),
},
),
]

View file

@ -0,0 +1,51 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..17,
value: TString(
ExprTString {
range: 0..17,
value: TStringValue {
inner: Concatenated(
[
Literal(
StringLiteral {
range: 0..8,
value: "Hello ",
flags: StringLiteralFlags {
quote_style: Single,
prefix: Empty,
triple_quoted: false,
},
},
),
TString(
TString {
range: 9..17,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 11..16,
value: "world",
},
),
],
flags: TStringFlags {
quote_style: Single,
prefix: Regular,
triple_quoted: false,
},
},
),
],
),
},
},
),
},
),
]

View file

@ -0,0 +1,77 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..22,
value: TString(
ExprTString {
range: 0..22,
value: TStringValue {
inner: Concatenated(
[
Literal(
StringLiteral {
range: 0..8,
value: "Hello ",
flags: StringLiteralFlags {
quote_style: Single,
prefix: Empty,
triple_quoted: false,
},
},
),
TString(
TString {
range: 9..22,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 11..16,
value: "world",
},
),
Interpolation(
InterpolatedElement {
range: 16..21,
expression: StringLiteral(
ExprStringLiteral {
range: 17..20,
value: StringLiteralValue {
inner: Single(
StringLiteral {
range: 17..20,
value: "!",
flags: StringLiteralFlags {
quote_style: Double,
prefix: Empty,
triple_quoted: false,
},
},
),
},
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
],
flags: TStringFlags {
quote_style: Single,
prefix: Regular,
triple_quoted: false,
},
},
),
],
),
},
},
),
},
),
]

View file

@ -0,0 +1,88 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..31,
value: TString(
ExprTString {
range: 0..31,
value: TStringValue {
inner: Concatenated(
[
Literal(
StringLiteral {
range: 0..8,
value: "Hello ",
flags: StringLiteralFlags {
quote_style: Single,
prefix: Empty,
triple_quoted: false,
},
},
),
TString(
TString {
range: 9..22,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 11..16,
value: "world",
},
),
Interpolation(
InterpolatedElement {
range: 16..21,
expression: StringLiteral(
ExprStringLiteral {
range: 17..20,
value: StringLiteralValue {
inner: Single(
StringLiteral {
range: 17..20,
value: "!",
flags: StringLiteralFlags {
quote_style: Double,
prefix: Empty,
triple_quoted: false,
},
},
),
},
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
],
flags: TStringFlags {
quote_style: Single,
prefix: Regular,
triple_quoted: false,
},
},
),
Literal(
StringLiteral {
range: 23..31,
value: "again!",
flags: StringLiteralFlags {
quote_style: Single,
prefix: Empty,
triple_quoted: false,
},
},
),
],
),
},
},
),
},
),
]

View file

@ -0,0 +1,68 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..18,
value: TString(
ExprTString {
range: 0..18,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..18,
elements: [
Interpolation(
InterpolatedElement {
range: 2..5,
expression: Name(
ExprName {
range: 3..4,
id: Name("a"),
ctx: Load,
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
Interpolation(
InterpolatedElement {
range: 5..10,
expression: Name(
ExprName {
range: 7..8,
id: Name("b"),
ctx: Load,
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
Literal(
InterpolatedStringLiteralElement {
range: 10..17,
value: "{foo}",
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -0,0 +1,66 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..13,
value: TString(
ExprTString {
range: 0..13,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..13,
elements: [
Interpolation(
InterpolatedElement {
range: 2..12,
expression: Compare(
ExprCompare {
range: 3..11,
left: NumberLiteral(
ExprNumberLiteral {
range: 3..5,
value: Int(
42,
),
},
),
ops: [
Eq,
],
comparators: [
NumberLiteral(
ExprNumberLiteral {
range: 9..11,
value: Int(
42,
),
},
),
],
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -0,0 +1,93 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..16,
value: TString(
ExprTString {
range: 0..16,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..16,
elements: [
Interpolation(
InterpolatedElement {
range: 2..15,
expression: Name(
ExprName {
range: 3..6,
id: Name("foo"),
ctx: Load,
},
),
debug_text: None,
conversion: None,
format_spec: Some(
InterpolatedStringFormatSpec {
range: 7..14,
elements: [
Interpolation(
InterpolatedElement {
range: 7..14,
expression: StringLiteral(
ExprStringLiteral {
range: 8..13,
value: StringLiteralValue {
inner: Concatenated(
ConcatenatedStringLiteral {
strings: [
StringLiteral {
range: 8..10,
value: "",
flags: StringLiteralFlags {
quote_style: Single,
prefix: Empty,
triple_quoted: false,
},
},
StringLiteral {
range: 11..13,
value: "",
flags: StringLiteralFlags {
quote_style: Single,
prefix: Empty,
triple_quoted: false,
},
},
],
value: "",
},
),
},
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
],
},
),
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -0,0 +1,68 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..15,
value: TString(
ExprTString {
range: 0..15,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..15,
elements: [
Interpolation(
InterpolatedElement {
range: 2..14,
expression: Name(
ExprName {
range: 3..6,
id: Name("foo"),
ctx: Load,
},
),
debug_text: None,
conversion: None,
format_spec: Some(
InterpolatedStringFormatSpec {
range: 7..13,
elements: [
Interpolation(
InterpolatedElement {
range: 7..13,
expression: Name(
ExprName {
range: 8..12,
id: Name("spec"),
ctx: Load,
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
],
},
),
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -0,0 +1,79 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..13,
value: TString(
ExprTString {
range: 0..13,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..13,
elements: [
Interpolation(
InterpolatedElement {
range: 2..12,
expression: Name(
ExprName {
range: 3..6,
id: Name("foo"),
ctx: Load,
},
),
debug_text: None,
conversion: None,
format_spec: Some(
InterpolatedStringFormatSpec {
range: 7..11,
elements: [
Interpolation(
InterpolatedElement {
range: 7..11,
expression: StringLiteral(
ExprStringLiteral {
range: 8..10,
value: StringLiteralValue {
inner: Single(
StringLiteral {
range: 8..10,
value: "",
flags: StringLiteralFlags {
quote_style: Single,
prefix: Empty,
triple_quoted: false,
},
},
),
},
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
],
},
),
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -0,0 +1,66 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..11,
value: TString(
ExprTString {
range: 0..11,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..11,
elements: [
Interpolation(
InterpolatedElement {
range: 2..10,
expression: Compare(
ExprCompare {
range: 3..9,
left: NumberLiteral(
ExprNumberLiteral {
range: 3..4,
value: Int(
1,
),
},
),
ops: [
NotEq,
],
comparators: [
NumberLiteral(
ExprNumberLiteral {
range: 8..9,
value: Int(
2,
),
},
),
],
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -0,0 +1,59 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..13,
value: TString(
ExprTString {
range: 0..13,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..13,
elements: [
Interpolation(
InterpolatedElement {
range: 2..12,
expression: Name(
ExprName {
range: 3..6,
id: Name("foo"),
ctx: Load,
},
),
debug_text: None,
conversion: None,
format_spec: Some(
InterpolatedStringFormatSpec {
range: 7..11,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 7..11,
value: "spec",
},
),
],
},
),
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -0,0 +1,52 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..10,
value: TString(
ExprTString {
range: 0..10,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..10,
elements: [
Interpolation(
InterpolatedElement {
range: 2..9,
expression: Name(
ExprName {
range: 3..4,
id: Name("x"),
ctx: Load,
},
),
debug_text: Some(
DebugText {
leading: "",
trailing: " =",
},
),
conversion: None,
format_spec: None,
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -0,0 +1,52 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..10,
value: TString(
ExprTString {
range: 0..10,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..10,
elements: [
Interpolation(
InterpolatedElement {
range: 2..9,
expression: Name(
ExprName {
range: 3..4,
id: Name("x"),
ctx: Load,
},
),
debug_text: Some(
DebugText {
leading: "",
trailing: "= ",
},
),
conversion: None,
format_spec: None,
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -0,0 +1,46 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..10,
value: TString(
ExprTString {
range: 0..10,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..10,
elements: [
Interpolation(
InterpolatedElement {
range: 2..9,
expression: Yield(
ExprYield {
range: 3..8,
value: None,
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -29,7 +28,7 @@ snapshot_kind: text
range: 10..18,
elements: [
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 12..17,
value: "world",
},

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -29,7 +28,7 @@ snapshot_kind: text
range: 10..18,
elements: [
Literal(
FStringLiteralElement {
InterpolatedStringLiteralElement {
range: 12..17,
value: "world",
},

View file

@ -0,0 +1,51 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..18,
value: TString(
ExprTString {
range: 0..18,
value: TStringValue {
inner: Concatenated(
[
Literal(
StringLiteral {
range: 0..9,
value: "Hello ",
flags: StringLiteralFlags {
quote_style: Single,
prefix: Unicode,
triple_quoted: false,
},
},
),
TString(
TString {
range: 10..18,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 12..17,
value: "world",
},
),
],
flags: TStringFlags {
quote_style: Single,
prefix: Regular,
triple_quoted: false,
},
},
),
],
),
},
},
),
},
),
]

View file

@ -0,0 +1,62 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..22,
value: TString(
ExprTString {
range: 0..22,
value: TStringValue {
inner: Concatenated(
[
Literal(
StringLiteral {
range: 0..9,
value: "Hello ",
flags: StringLiteralFlags {
quote_style: Single,
prefix: Unicode,
triple_quoted: false,
},
},
),
TString(
TString {
range: 10..18,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 12..17,
value: "world",
},
),
],
flags: TStringFlags {
quote_style: Single,
prefix: Regular,
triple_quoted: false,
},
},
),
Literal(
StringLiteral {
range: 19..22,
value: "!",
flags: StringLiteralFlags {
quote_style: Single,
prefix: Empty,
triple_quoted: false,
},
},
),
],
),
},
},
),
},
),
]

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -16,8 +15,8 @@ snapshot_kind: text
FString {
range: 0..7,
elements: [
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 3..6,
expression: Name(
ExprName {

View file

@ -0,0 +1,49 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..7,
value: TString(
ExprTString {
range: 0..7,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..7,
elements: [
Interpolation(
InterpolatedElement {
range: 3..6,
expression: Name(
ExprName {
range: 4..5,
id: Name("x"),
ctx: Load,
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Raw {
uppercase_r: false,
},
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -1,7 +1,6 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
snapshot_kind: text
---
[
Expr(
@ -16,8 +15,8 @@ snapshot_kind: text
FString {
range: 0..11,
elements: [
Expression(
FStringExpressionElement {
Interpolation(
InterpolatedElement {
range: 5..8,
expression: Name(
ExprName {

View file

@ -0,0 +1,49 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..11,
value: TString(
ExprTString {
range: 0..11,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..11,
elements: [
Interpolation(
InterpolatedElement {
range: 5..8,
expression: Name(
ExprName {
range: 6..7,
id: Name("x"),
ctx: Load,
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Raw {
uppercase_r: false,
},
triple_quoted: true,
},
},
),
),
},
},
),
},
),
]

View file

@ -0,0 +1,80 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..22,
value: TString(
ExprTString {
range: 0..22,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..22,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 2..5,
value: "aaa",
},
),
Interpolation(
InterpolatedElement {
range: 5..10,
expression: Name(
ExprName {
range: 6..9,
id: Name("bbb"),
ctx: Load,
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
Literal(
InterpolatedStringLiteralElement {
range: 10..13,
value: "ccc",
},
),
Interpolation(
InterpolatedElement {
range: 13..18,
expression: Name(
ExprName {
range: 14..17,
id: Name("ddd"),
ctx: Load,
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
Literal(
InterpolatedStringLiteralElement {
range: 18..21,
value: "eee",
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -0,0 +1,53 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..8,
value: TString(
ExprTString {
range: 0..8,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..8,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 2..4,
value: "\\",
},
),
Interpolation(
InterpolatedElement {
range: 4..7,
expression: Name(
ExprName {
range: 5..6,
id: Name("x"),
ctx: Load,
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -0,0 +1,53 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..8,
value: TString(
ExprTString {
range: 0..8,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..8,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 2..4,
value: "\n",
},
),
Interpolation(
InterpolatedElement {
range: 4..7,
expression: Name(
ExprName {
range: 5..6,
id: Name("x"),
ctx: Load,
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -0,0 +1,55 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..9,
value: TString(
ExprTString {
range: 0..9,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..9,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 3..5,
value: "\\\n",
},
),
Interpolation(
InterpolatedElement {
range: 5..8,
expression: Name(
ExprName {
range: 6..7,
id: Name("x"),
ctx: Load,
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Raw {
uppercase_r: false,
},
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -0,0 +1,52 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..10,
value: TString(
ExprTString {
range: 0..10,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..10,
elements: [
Interpolation(
InterpolatedElement {
range: 2..9,
expression: Name(
ExprName {
range: 3..7,
id: Name("user"),
ctx: Load,
},
),
debug_text: Some(
DebugText {
leading: "",
trailing: "=",
},
),
conversion: None,
format_spec: None,
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -0,0 +1,84 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..38,
value: TString(
ExprTString {
range: 0..38,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..38,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 2..6,
value: "mix ",
},
),
Interpolation(
InterpolatedElement {
range: 6..13,
expression: Name(
ExprName {
range: 7..11,
id: Name("user"),
ctx: Load,
},
),
debug_text: Some(
DebugText {
leading: "",
trailing: "=",
},
),
conversion: None,
format_spec: None,
},
),
Literal(
InterpolatedStringLiteralElement {
range: 13..28,
value: " with text and ",
},
),
Interpolation(
InterpolatedElement {
range: 28..37,
expression: Name(
ExprName {
range: 29..35,
id: Name("second"),
ctx: Load,
},
),
debug_text: Some(
DebugText {
leading: "",
trailing: "=",
},
),
conversion: None,
format_spec: None,
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -0,0 +1,64 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..14,
value: TString(
ExprTString {
range: 0..14,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..14,
elements: [
Interpolation(
InterpolatedElement {
range: 2..13,
expression: Name(
ExprName {
range: 3..7,
id: Name("user"),
ctx: Load,
},
),
debug_text: Some(
DebugText {
leading: "",
trailing: "=",
},
),
conversion: None,
format_spec: Some(
InterpolatedStringFormatSpec {
range: 9..12,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 9..12,
value: ">10",
},
),
],
},
),
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: false,
},
},
),
),
},
},
),
},
),
]

View file

@ -0,0 +1,53 @@
---
source: crates/ruff_python_parser/src/string.rs
expression: suite
---
[
Expr(
StmtExpr {
range: 0..11,
value: TString(
ExprTString {
range: 0..11,
value: TStringValue {
inner: Single(
TString(
TString {
range: 0..11,
elements: [
Literal(
InterpolatedStringLiteralElement {
range: 4..5,
value: "\n",
},
),
Interpolation(
InterpolatedElement {
range: 5..8,
expression: Name(
ExprName {
range: 6..7,
id: Name("x"),
ctx: Load,
},
),
debug_text: None,
conversion: None,
format_spec: None,
},
),
],
flags: TStringFlags {
quote_style: Double,
prefix: Regular,
triple_quoted: true,
},
},
),
),
},
},
),
},
),
]