Skip to content

Commit 95319e3

Browse files
committed
Refactor line/column range set
1 parent 9e1f65d commit 95319e3

1 file changed

Lines changed: 16 additions & 36 deletions

File tree

mypy/nativeparse.py

Lines changed: 16 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -373,10 +373,7 @@ def read_statement(state: State, data: ReadBuffer) -> Statement:
373373
return stmt
374374
elif tag == nodes.EXPR_STMT:
375375
es = ExpressionStmt(read_expression(state, data))
376-
es.line = es.expr.line
377-
es.column = es.expr.column
378-
es.end_line = es.expr.end_line
379-
es.end_column = es.expr.end_column
376+
set_line_column_range(es, es.expr)
380377
expect_end_tag(data)
381378
return es
382379
elif tag == nodes.ASSIGNMENT_STMT:
@@ -394,10 +391,7 @@ def read_statement(state: State, data: ReadBuffer) -> Statement:
394391
read_loc(data, a)
395392
# If rvalue is TempNode, copy location from AssignmentStmt
396393
if isinstance(rvalue, TempNode):
397-
rvalue.line = a.line
398-
rvalue.column = a.column
399-
rvalue.end_line = a.end_line
400-
rvalue.end_column = a.end_column
394+
set_line_column_range(rvalue, a)
401395
expect_end_tag(data)
402396
return a
403397
elif tag == nodes.OPERATOR_ASSIGNMENT_STMT:
@@ -452,10 +446,7 @@ def read_statement(state: State, data: ReadBuffer) -> Statement:
452446

453447
# Wrap in a Block to become the else clause for the outer if
454448
current_else = Block([elif_stmt])
455-
current_else.line = elif_stmt.line
456-
current_else.column = elif_stmt.column
457-
current_else.end_line = elif_stmt.end_line
458-
current_else.end_column = elif_stmt.end_column
449+
set_line_column_range(current_else, elif_stmt)
459450

460451
# Create the main if statement
461452
if_stmt = IfStmt([expr], [body], current_else)
@@ -724,10 +715,7 @@ def read_parameters(state: State, data: ReadBuffer) -> tuple[list[Argument], boo
724715
var.is_inferred = False
725716
arg = Argument(var, ann, default, arg_kind, pos_only)
726717
read_loc(data, arg)
727-
var.line = arg.line
728-
var.column = arg.column
729-
var.end_line = arg.end_line
730-
var.end_column = arg.end_column
718+
set_line_column_range(var, arg)
731719
arguments.append(arg)
732720

733721
return arguments, has_ann
@@ -924,10 +912,7 @@ def read_type_alias_stmt(state: State, data: ReadBuffer) -> TypeAliasStmt:
924912
# Wrap the value expression in a LambdaExpr as expected by TypeAliasStmt
925913
# The LambdaExpr body is a Block with a single ReturnStmt
926914
return_stmt = ReturnStmt(value_expr)
927-
return_stmt.line = value_expr.line
928-
return_stmt.column = value_expr.column
929-
return_stmt.end_line = value_expr.end_line
930-
return_stmt.end_column = value_expr.end_column
915+
set_line_column_range(return_stmt, value_expr)
931916

932917
block = Block([return_stmt])
933918
block.line = -1 # Synthetic block
@@ -936,10 +921,7 @@ def read_type_alias_stmt(state: State, data: ReadBuffer) -> TypeAliasStmt:
936921
block.end_column = 0
937922

938923
lambda_expr = LambdaExpr([], block)
939-
lambda_expr.line = value_expr.line
940-
lambda_expr.column = value_expr.column
941-
lambda_expr.end_line = value_expr.end_line
942-
lambda_expr.end_column = value_expr.end_column
924+
set_line_column_range(lambda_expr, value_expr)
943925

944926
stmt = TypeAliasStmt(name, type_params, lambda_expr)
945927
read_loc(data, stmt)
@@ -1368,21 +1350,15 @@ def read_expression(state: State, data: ReadBuffer) -> Expression:
13681350
expr = ListComprehension(generator)
13691351
read_loc(data, expr)
13701352
# Also copy location to the inner generator
1371-
generator.line = expr.line
1372-
generator.column = expr.column
1373-
generator.end_line = expr.end_line
1374-
generator.end_column = expr.end_column
1353+
set_line_column_range(generator, expr)
13751354
expect_end_tag(data)
13761355
return expr
13771356
elif tag == nodes.SET_COMPREHENSION:
13781357
generator = read_generator_expr(state, data)
13791358
expr = SetComprehension(generator)
13801359
read_loc(data, expr)
13811360
# Also copy location to the inner generator
1382-
generator.line = expr.line
1383-
generator.column = expr.column
1384-
generator.end_line = expr.end_line
1385-
generator.end_column = expr.end_column
1361+
set_line_column_range(generator, expr)
13861362
expect_end_tag(data)
13871363
return expr
13881364
elif tag == nodes.DICT_COMPREHENSION:
@@ -1703,6 +1679,13 @@ def set_line_column(target: Context, src: Context) -> None:
17031679
target.column = src.column
17041680

17051681

1682+
def set_line_column_range(target: Context, src: Context) -> None:
1683+
target.line = src.line
1684+
target.column = src.column
1685+
target.end_line = src.end_line
1686+
target.end_column = src.end_column
1687+
1688+
17061689
def read_expression_list(state: State, data: ReadBuffer) -> list[Expression]:
17071690
expect_tag(data, LIST_GEN)
17081691
n = read_int_bare(data)
@@ -1865,10 +1848,7 @@ def read_call_type(state: State, data: ReadBuffer) -> Type:
18651848

18661849
# Create CallableArgument
18671850
call_arg = CallableArgument(typ, name, constructor)
1868-
call_arg.line = invalid.line
1869-
call_arg.column = invalid.column
1870-
call_arg.end_line = invalid.end_line
1871-
call_arg.end_column = invalid.end_column
1851+
set_line_column_range(call_arg, invalid)
18721852
return call_arg
18731853

18741854

0 commit comments

Comments
 (0)