@@ -70,6 +70,8 @@ def to_tuple(t):
7070 "if v:pass" ,
7171 # If-Elif
7272 "if a:\n pass\n elif b:\n pass" ,
73+ # If-Elif-Else
74+ "if a:\n pass\n elif b:\n pass\n else:\n pass" ,
7375 # With
7476 "with x as y: pass" ,
7577 "with x as y, z as q: pass" ,
@@ -869,6 +871,12 @@ def test_elif_stmt_start_position(self):
869871 self .assertEqual (elif_stmt .lineno , 3 )
870872 self .assertEqual (elif_stmt .col_offset , 0 )
871873
874+ def test_elif_stmt_start_position_with_else (self ):
875+ node = ast .parse ('if a:\n pass\n elif b:\n pass\n else:\n pass\n ' )
876+ elif_stmt = node .body [0 ].orelse [0 ]
877+ self .assertEqual (elif_stmt .lineno , 3 )
878+ self .assertEqual (elif_stmt .col_offset , 0 )
879+
872880 def test_literal_eval (self ):
873881 self .assertEqual (ast .literal_eval ('[1, 2, 3]' ), [1 , 2 , 3 ])
874882 self .assertEqual (ast .literal_eval ('{"foo": 42}' ), {"foo" : 42 })
@@ -1852,6 +1860,7 @@ def main():
18521860('Module' , [('While' , (1 , 0 ), ('Name' , (1 , 6 ), 'v' , ('Load' ,)), [('Pass' , (1 , 8 ))], [])], []),
18531861('Module' , [('If' , (1 , 0 ), ('Name' , (1 , 3 ), 'v' , ('Load' ,)), [('Pass' , (1 , 5 ))], [])], []),
18541862('Module' , [('If' , (1 , 0 ), ('Name' , (1 , 3 ), 'a' , ('Load' ,)), [('Pass' , (2 , 2 ))], [('If' , (3 , 0 ), ('Name' , (3 , 5 ), 'b' , ('Load' ,)), [('Pass' , (4 , 2 ))], [])])], []),
1863+ ('Module' , [('If' , (1 , 0 ), ('Name' , (1 , 3 ), 'a' , ('Load' ,)), [('Pass' , (2 , 2 ))], [('If' , (3 , 0 ), ('Name' , (3 , 5 ), 'b' , ('Load' ,)), [('Pass' , (4 , 2 ))], [('Pass' , (6 , 2 ))])])], []),
18551864('Module' , [('With' , (1 , 0 ), [('withitem' , ('Name' , (1 , 5 ), 'x' , ('Load' ,)), ('Name' , (1 , 10 ), 'y' , ('Store' ,)))], [('Pass' , (1 , 13 ))], None )], []),
18561865('Module' , [('With' , (1 , 0 ), [('withitem' , ('Name' , (1 , 5 ), 'x' , ('Load' ,)), ('Name' , (1 , 10 ), 'y' , ('Store' ,))), ('withitem' , ('Name' , (1 , 13 ), 'z' , ('Load' ,)), ('Name' , (1 , 18 ), 'q' , ('Store' ,)))], [('Pass' , (1 , 21 ))], None )], []),
18571866('Module' , [('Raise' , (1 , 0 ), ('Call' , (1 , 6 ), ('Name' , (1 , 6 ), 'Exception' , ('Load' ,)), [('Constant' , (1 , 16 ), 'string' , None )], []), None )], []),
0 commit comments