summaryrefslogtreecommitdiff
path: root/py
diff options
context:
space:
mode:
Diffstat (limited to 'py')
-rw-r--r--py/lexer.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/py/lexer.c b/py/lexer.c
index 39e9662f6..e7d0e8144 100644
--- a/py/lexer.c
+++ b/py/lexer.c
@@ -356,6 +356,9 @@ STATIC void parse_string_literal(mp_lexer_t *lex, bool is_raw, bool is_fstring)
vstr_add_byte(&lex->vstr, '{');
next_char(lex);
} else {
+ // wrap each argument in (), e.g.
+ // f"{a,b,}, {c}" --> "{}".format((a,b), (c),)
+ vstr_add_byte(&lex->fstring_args, '(');
// remember the start of this argument (if we need it for f'{a=}').
size_t i = lex->fstring_args.len;
// extract characters inside the { until we reach the
@@ -382,7 +385,9 @@ STATIC void parse_string_literal(mp_lexer_t *lex, bool is_raw, bool is_fstring)
// remove the trailing '='
lex->fstring_args.len--;
}
- // comma-separate args
+ // close the paren-wrapped arg to .format().
+ vstr_add_byte(&lex->fstring_args, ')');
+ // comma-separate args to .format().
vstr_add_byte(&lex->fstring_args, ',');
}
vstr_add_byte(&lex->vstr, '{');