py/lexer: Support concatenation of adjacent f-strings.
This is quite a simple and small change to support concatenation of adjacent f-strings, and improve compatibility with CPython. Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
@@ -336,8 +336,12 @@ static void parse_string_literal(mp_lexer_t *lex, bool is_raw, bool is_fstring)
|
||||
// assume there's going to be interpolation, so prep the injection data
|
||||
// fstring_args_idx==0 && len(fstring_args)>0 means we're extracting the args.
|
||||
// only when fstring_args_idx>0 will we consume the arg data
|
||||
// note: lex->fstring_args will be empty already (it's reset when finished)
|
||||
vstr_add_str(&lex->fstring_args, ".format(");
|
||||
// lex->fstring_args is reset when finished, so at this point there are two cases:
|
||||
// - lex->fstring_args is empty: start of a new f-string
|
||||
// - lex->fstring_args is non-empty: concatenation of adjacent f-strings
|
||||
if (vstr_len(&lex->fstring_args) == 0) {
|
||||
vstr_add_str(&lex->fstring_args, ".format(");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user