Bikram Singh Mehra added the comment:
Hi Eric,
I have tried the action plan suggested by you in your last comment, but below
are my logs and still I am unable to get lineno for else statement.
The respective line no for each line are below
1
2 if num > 0:
3 print("Positive number")
4 elif num == 0:
5 print("Zero")
6 else:
7 print("Negative number")
>The re-formatted dump is as below and doesn't have lineno for else statement
Module(body=[If(test=Compare(left=Name(id='num', ctx=Load(), lineno=2,
col_offset=3, end_lineno=2, end_col_offset=6),
ops=[Gt()],
comparators=[Constant(value=0, kind=None, lineno=2, col_offset=9, end_lineno=2,
end_col_offset=10)], lineno=2, col_offset=3, end_lineno=2, end_col_offset=10),
body=[Expr(value=Call(func=Name(id='print',
ctx=Load(), lineno=3, col_offset=4, end_lineno=3, end_col_offset=9),
args=[Constant(value='Positive
number', kind=None, lineno=3, col_offset=10, end_lineno=3,
end_col_offset=27)],
keywords=[], lineno=3, col_offset=4, end_lineno=3, end_col_offset=28),
lineno=3, col_offset=4,
end_lineno=3, end_col_offset=28)],
orelse=[If(test=Compare(left=Name(id='num',
ctx=Load(), lineno=4, col_offset=5, end_lineno=4, end_col_offset=8),
ops=[Eq()],
comparators=[Constant(value=0, kind=None, lineno=4, col_offset=12,
end_lineno=4,
end_col_offset=13)], lineno=4, col_offset=5, end_lineno=4, end_col_offset=13),
body=[Expr(value=Call(func=Name(id='print', ctx=Load(), lineno=5, col_offset=4,
end_lineno=5, end_col_offset=9),
args=[Constant(value='Zero', kind=None, lineno=5,
col_offset=10, end_lineno=5,
end_col_offset=16)],
keywords=[], lineno=5, col_offset=4, end_lineno=5,
end_col_offset=17), lineno=5, col_offset=4, end_lineno=5, end_col_offset=17)],
orelse=[Expr(value=Call(func=Name(id='print', ctx=Load(), lineno=7,
col_offset=4, end_lineno=7, end_col_offset=9),
args=[Constant(value='Negative number', kind=None, lineno=7,
col_offset=10, end_lineno=7, end_col_offset=27)],
keywords=[], lineno=7, col_offset=4, end_lineno=7,
end_col_offset=28),
lineno=7, col_offset=4, end_lineno=7, end_col_offset=28)],
lineno=4, col_offset=0, end_lineno=7,
end_col_offset=28)],
lineno=2, col_offset=0,
end_lineno=7, end_col_offset=28)], type_ignores=[])
> If we use tree to get the lineno then its giving as below
tree.body[0].orelse[0].orelse[0].lineno
7
Here the lineno 7 denotes to the body of else statement not the else lineno.
Could you please help me out where you can show the respective line no of else
statement i.e. 6 in above example.
Thanks and Best Regards,
Bikram
--
resolution: works for me ->
status: closed -> open
___
Python tracker
<https://bugs.python.org/issue44177>
___
___
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com