@@ -121,7 +121,7 @@ impl Unparser {
121121 Stmt :: For ( data) => self . unparse_stmt_for ( data) ,
122122 Stmt :: AsyncFor ( data) => self . unparse_stmt_async_for ( data) ,
123123 Stmt :: While ( data) => self . unparse_stmt_while ( data) ,
124- Stmt :: If ( data) => self . unparse_stmt_if ( data) ,
124+ Stmt :: If ( data) => self . unparse_stmt_if ( data, false ) ,
125125 Stmt :: With ( data) => self . unparse_stmt_with ( data) ,
126126 Stmt :: AsyncWith ( data) => self . unparse_stmt_async_with ( data) ,
127127 Stmt :: Match ( data) => self . unparse_stmt_match ( data) ,
@@ -401,8 +401,13 @@ impl Unparser {
401401 }
402402 }
403403
404- fn unparse_stmt_if ( & mut self , node : & StmtIf < TextRange > ) {
405- self . fill ( "if " ) ;
404+ fn unparse_stmt_if ( & mut self , node : & StmtIf < TextRange > , inner_if : bool ) {
405+ if inner_if {
406+ self . fill ( "elif " ) ;
407+ } else {
408+ self . fill ( "if " ) ;
409+ }
410+
406411 self . unparse_expr ( & node. test ) ;
407412 self . write_str ( ":" ) ;
408413 self . block ( |block_self| {
@@ -412,14 +417,7 @@ impl Unparser {
412417 } ) ;
413418 match node. orelse . as_slice ( ) {
414419 [ Stmt :: If ( inner_if) ] => {
415- self . fill ( "elif " ) ;
416- self . unparse_expr ( & inner_if. test ) ;
417- self . write_str ( ":" ) ;
418- self . block ( |block_self| {
419- for stmt in & inner_if. body {
420- block_self. unparse_stmt ( stmt) ;
421- }
422- } ) ;
420+ self . unparse_stmt_if ( inner_if, true ) ;
423421 }
424422 [ ] => { }
425423 _ => {
@@ -951,8 +949,9 @@ impl Unparser {
951949 }
952950
953951 fn unparse_expr_attribute ( & mut self , node : & ExprAttribute < TextRange > ) {
952+ self . unparse_expr ( & node. value ) ;
954953 self . write_str ( "." ) ;
955- self . unparse_expr ( & node. value )
954+ self . write_str ( & node. attr ) ;
956955 }
957956 fn unparse_expr_subscript ( & mut self , node : & ExprSubscript < TextRange > ) {
958957 self . unparse_expr ( & node. value ) ;
0 commit comments