From 4a934409bd845c4e33eada28d6a2f94c9c1969ca Mon Sep 17 00:00:00 2001 From: Casey Rodarmor Date: Mon, 6 Jul 2026 21:53:56 -0700 Subject: [PATCH] Don't unindent format strings twice --- src/parser.rs | 2 +- tests/format_string.rs | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/parser.rs b/src/parser.rs index 572527dbd7..d78bbdb6f3 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -1066,7 +1066,7 @@ impl<'run, 'src> Parser<'run, 'src> { let raw = &token.lexeme()[open..token.lexeme().len() - close]; - let unindented = if kind.indented() && matches!(token.kind, StringToken) { + let unindented = if kind.indented() && matches!(state, StringState::Normal) { unindent(raw) } else { raw.to_owned() diff --git a/tests/format_string.rs b/tests/format_string.rs index 2d9c0e9b7b..fd724670e2 100644 --- a/tests/format_string.rs +++ b/tests/format_string.rs @@ -343,3 +343,10 @@ fn format_backticks_are_forbidden() { ) .failure(); } + +#[test] +fn indented_format_strings_are_unindented_once() { + assert_eval("f'''\n\n foo\n'''", "\nfoo\n"); + assert_eval("'''\n\n foo\n'''", "\nfoo\n"); + assert_eval("f'''\n\n foo {{ 'bar' }}\n'''", "\nfoo bar\n"); +}