Dylan
53fc0614da
Fix unreachable panic in parser ( #19183 )
...
Parsing the (invalid) expression `f"{\t"i}"` caused a panic because the
`TStringMiddle` character was "unreachable" due the way the parser
recovered from the line continuation (it ate the t-string start).
The cause of the issue is as follows:
The parser begins parsing the f-string and expects to see a list of
objects, essentially alternating between _interpolated elements_ and
ordinary strings. It is happy to see the first left brace, but then
there is a lexical error caused by the line-continuation character. So
instead of the parser seeing a list of elements with just one member, it
sees a list that starts like this:
- Interpolated element with an invalid token, stored as a `Name`
- Something else built from tokens beginning with `TStringStart` and
`TStringMiddle`
When it sees the `TStringStart` error recovery says "that's a list
element I don't know what to do with, let's skip it". When it sees
`TStringMiddle` it says "oh, that looks like the middle of _some
interpolated string_ so let's try to parse it as one of the literal
elements of my `FString`". Unfortunately, the function being used to
parse individual list elements thinks (arguably correctly) that it's not
possible to have a `TStringMiddle` sitting in your `FString`, and hits
`unreachable`.
Two potential ways (among many) to solve this issue are:
1. Allow a `TStringMiddle` as a valid "literal" part of an f-string
during parsing (with the hope/understanding that this would only occur
in an invalid context)
2. Skip the `TStringMiddle` as an "unexpected/invalid list item" in the
same way that we skipped `TStringStart`.
I have opted for the second approach since it seems somehow more morally
correct, even though it loses more information. To implement this, the
recovery context needs to know whether we are in an f-string or t-string
- hence the changes to that enum. As a bonus we get slightly more
specific error messages in some cases.
Closes #18860
2025-07-20 22:04:14 +00:00
..
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-16 11:44:42 -05:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-07-20 22:04:14 +00:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-07-20 22:04:14 +00:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-18 14:56:15 +02:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-07-20 22:04:14 +00:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 14:04:37 -05:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-18 14:56:15 +02:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 14:04:37 -05:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00
2025-06-13 08:40:11 -04:00