bpo-40334: Fix shifting of nested f-strings in the new parser (GH-19771)
`JoinedStr`s and `FormattedValue also needs to be shifted, in order to correctly compute the location information of nested f-strings.
This commit is contained in:
parent
ae00a5a885
commit
37af21b667
|
@ -207,8 +207,7 @@ f'{a * f"-{x()}-"}'"""
|
|||
call = binop.right.values[1].value
|
||||
self.assertEqual(type(call), ast.Call)
|
||||
self.assertEqual(call.lineno, 3)
|
||||
if support.use_old_parser():
|
||||
self.assertEqual(call.col_offset, 11)
|
||||
self.assertEqual(call.col_offset, 11)
|
||||
|
||||
def test_ast_line_numbers_duplicate_expression(self):
|
||||
"""Duplicate expression
|
||||
|
|
|
@ -449,6 +449,15 @@ static void fstring_shift_children_locations(expr_ty n, int lineno, int col_offs
|
|||
case Tuple_kind:
|
||||
fstring_shift_seq_locations(n, n->v.Tuple.elts, lineno, col_offset);
|
||||
break;
|
||||
case JoinedStr_kind:
|
||||
fstring_shift_seq_locations(n, n->v.JoinedStr.values, lineno, col_offset);
|
||||
break;
|
||||
case FormattedValue_kind:
|
||||
shift_expr(n, n->v.FormattedValue.value, lineno, col_offset);
|
||||
if (n->v.FormattedValue.format_spec) {
|
||||
shift_expr(n, n->v.FormattedValue.format_spec, lineno, col_offset);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue