From 306c16f0fa7807eff3fc809fc90e987edec2e582 Mon Sep 17 00:00:00 2001 From: Ryan Roden-Corrent Date: Tue, 25 May 2021 00:45:32 -0400 Subject: [PATCH] fmt: don't break indexing in string interpolation. (#10195) --- vlib/v/ast/str.v | 2 +- vlib/v/fmt/tests/string_interpolation_keep.vv | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/vlib/v/ast/str.v b/vlib/v/ast/str.v index 0ecb6ac3ce..5c28689c16 100644 --- a/vlib/v/ast/str.v +++ b/vlib/v/ast/str.v @@ -180,7 +180,7 @@ pub fn (lit &StringInterLiteral) get_fspec_braces(i int) (string, bool) { } else if sub_expr.left is CallExpr { sub_expr = sub_expr.left continue - } else if sub_expr.left is CastExpr { + } else if sub_expr.left is CastExpr || sub_expr.left is IndexExpr { needs_braces = true } break diff --git a/vlib/v/fmt/tests/string_interpolation_keep.vv b/vlib/v/fmt/tests/string_interpolation_keep.vv index 0e54967d32..97a1ff58d4 100644 --- a/vlib/v/fmt/tests/string_interpolation_keep.vv +++ b/vlib/v/fmt/tests/string_interpolation_keep.vv @@ -7,9 +7,11 @@ fn main() { b := 'xyz' e := 'a: $a b: $b i: $i' d := 'a: ${a:5s} b: ${b:-5s} i: ${i:20d}' + f := 'a byte string'.bytes() println('a: $a $b xxx') eprintln('e: $e') _ = ' ${foo.method(bar).str()} ' println('(${some_struct.@type}, $some_struct.y)') _ := 'CastExpr ${int(d.e).str()}' + println('${f[0..4].bytestr()}') }