New submission from Lysandros Nikolaou <lisandros...@gmail.com>:

When a starred expression like *[0, 1] is parsed, the following AST gets 
generated:

Module(
    body=[
        Expr(
            value=Starred(
                value=List(
                    elts=[
                        Constant(
                            value=0,
                            kind=None,
                            lineno=1,
                            col_offset=2,
                            end_lineno=1,
                            end_col_offset=3,
                        ),
                        Constant(
                            value=1,
                            kind=None,
                            lineno=1,
                            col_offset=5,
                            end_lineno=1,
                            end_col_offset=6,
                        ),
                    ],
                    ctx=Load(),
                    lineno=1,
                    col_offset=1,
                    end_lineno=1,
                    end_col_offset=7,
                ),
                ctx=Load(),
                lineno=1,
                col_offset=0,
                end_lineno=1,
                end_col_offset=7,
            ),
            lineno=1,
            col_offset=0,
            end_lineno=1,
            end_col_offset=7,
        )
    ],
    type_ignores=[],
)


But, when a starred expression is an argument to a function call then the 
line/col info are wrong (end_col_offset is always equal to col_offset + 1):

Module(
    body=[
        Expr(
            value=Call(
                func=Name(
                    id="f", ctx=Load(), lineno=1, col_offset=0, end_lineno=1, 
end_col_offset=1
                ),
                args=[
                    Starred(
                        value=List(
                            elts=[
                                Constant(
                                    value=0,
                                    kind=None,
                                    lineno=1,
                                    col_offset=4,
                                    end_lineno=1,
                                    end_col_offset=5,
                                ),
                                Constant(
                                    value=1,
                                    kind=None,
                                    lineno=1,
                                    col_offset=7,
                                    end_lineno=1,
                                    end_col_offset=8,
                                ),
                            ],
                            ctx=Load(),
                            lineno=1,
                            col_offset=3,
                            end_lineno=1,
                            end_col_offset=9,
                        ),
                        ctx=Load(),
                        lineno=1,
                        col_offset=2,
                        end_lineno=1,
                        end_col_offset=9,
                    )
                ],
                keywords=[],
                lineno=1,
                col_offset=0,
                end_lineno=1,
                end_col_offset=10,
            ),
            lineno=1,
            col_offset=0,
            end_lineno=1,
            end_col_offset=10,
        )
    ],
    type_ignores=[],
)

----------
components: Interpreter Core
messages: 358584
nosy: lys.nikolaou
priority: normal
severity: normal
status: open
title: Inconsistency with Starred Expression line/col info
type: behavior
versions: Python 3.8, Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue39080>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to