Fix formatting of trailing unescaped quotes in raw triple quoted strings (#6202)

**Summary** This prevents us from turning `r'''\""'''` into
`r"""\"""""`, which is invalid syntax.

This PR fixes CI, which is currently broken on main (in a way that still
passes on linter PRs and allows merging formatter PRs, but it's bad to
have a job be red). Once merged, i'll make the formatted ecosystem
checks a required check.

**Test Plan** Added a regression test.
This commit is contained in:
konsti 2023-07-31 19:25:16 +02:00 committed by GitHub
parent dbd60b2cf5
commit 9063f4524d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 37 additions and 6 deletions

View file

@ -323,14 +323,21 @@ fn preferred_quotes_raw(
break true;
}
if chars.peek() == Some(&configured_quote_char) {
// `""` or `''`
chars.next();
match chars.peek() {
// We can't turn `r'''\""'''` into `r"""\"""""`, this would confuse the parser
// about where the closing triple quotes start
None => break true,
Some(next) if *next == configured_quote_char => {
// `""` or `''`
chars.next();
if chars.peek() == Some(&configured_quote_char) {
// `"""` or `'''`
break true;
// We can't turn `r'''""'''` into `r""""""""`, nor can we have
// `"""` or `'''` respectively inside the string
if chars.peek().is_none() || chars.peek() == Some(&configured_quote_char) {
break true;
}
}
_ => {}
}
}
Some(_) => continue,