@@ -225,23 +225,6 @@ impl<'a> Parser<'a> {
225225 Ok ( Expression :: Object ( try!( self . object_member_list ( ) ) ) )
226226 }
227227
228- #[ inline]
229- fn block_or_statement ( & mut self ) -> Result < Statement > {
230- match peek ! ( self ) {
231- BraceOpen => {
232- self . consume ( ) ;
233-
234- Ok ( Statement :: Block {
235- body : try!( self . block_body_tail ( ) )
236- } )
237- } ,
238- _ => {
239- let token = next ! ( self ) ;
240- self . expression_statement ( token)
241- }
242- }
243- }
244-
245228 #[ inline]
246229 fn block_statement ( & mut self ) -> Result < Statement > {
247230 Ok ( Statement :: Block {
@@ -757,21 +740,16 @@ impl<'a> Parser<'a> {
757740
758741 expect ! ( self , ParenClose ) ;
759742
760- let consequent = Box :: new ( try!( self . block_or_statement ( ) ) ) ;
743+ let token = next ! ( self ) ;
744+ let consequent = Box :: new ( try!( self . statement ( token) ) ) ;
761745
762746 let alternate = match peek ! ( self ) {
763747 Else => {
764748 self . consume ( ) ;
765749
766- match peek ! ( self ) {
767- If => {
768- self . consume ( ) ;
769-
770- Some ( Box :: new ( try!( self . if_statement ( ) ) ) )
771- } ,
750+ let token = next ! ( self ) ;
772751
773- _ => Some ( Box :: new ( try!( self . block_or_statement ( ) ) ) )
774- }
752+ Some ( Box :: new ( try!( self . statement ( token) ) ) )
775753 } ,
776754
777755 _ => None
@@ -792,9 +770,12 @@ impl<'a> Parser<'a> {
792770
793771 expect ! ( self , ParenClose ) ;
794772
773+ let token = next ! ( self ) ;
774+ let body = Box :: new ( try!( self . statement ( token) ) ) ;
775+
795776 Ok ( Statement :: While {
796777 test : test,
797- body : Box :: new ( try! ( self . block_or_statement ( ) ) ) ,
778+ body : body ,
798779 } )
799780 }
800781
@@ -854,11 +835,14 @@ impl<'a> Parser<'a> {
854835 expect ! ( self , ParenClose ) ;
855836 }
856837
838+ let token = next ! ( self ) ;
839+ let body = Box :: new ( try!( self . statement ( token) ) ) ;
840+
857841 Ok ( Statement :: For {
858842 init : init,
859843 test : test,
860844 update : update,
861- body : Box :: new ( try! ( self . block_or_statement ( ) ) ) ,
845+ body : body ,
862846 } )
863847 }
864848
@@ -868,10 +852,13 @@ impl<'a> Parser<'a> {
868852
869853 expect ! ( self , ParenClose ) ;
870854
855+ let token = next ! ( self ) ;
856+ let body = Box :: new ( try!( self . statement ( token) ) ) ;
857+
871858 Ok ( Statement :: ForIn {
872859 left : left,
873860 right : right,
874- body : Box :: new ( try! ( self . block_or_statement ( ) ) ) ,
861+ body : body ,
875862 } )
876863 }
877864
@@ -880,10 +867,13 @@ impl<'a> Parser<'a> {
880867
881868 expect ! ( self , ParenClose ) ;
882869
870+ let token = next ! ( self ) ;
871+ let body = Box :: new ( try!( self . statement ( token) ) ) ;
872+
883873 Ok ( Statement :: ForIn {
884874 left : left,
885875 right : right,
886- body : Box :: new ( try! ( self . block_or_statement ( ) ) ) ,
876+ body : body ,
887877 } )
888878 }
889879
@@ -892,10 +882,13 @@ impl<'a> Parser<'a> {
892882
893883 expect ! ( self , ParenClose ) ;
894884
885+ let token = next ! ( self ) ;
886+ let body = Box :: new ( try!( self . statement ( token) ) ) ;
887+
895888 Ok ( Statement :: ForOf {
896889 left : left,
897890 right : right,
898- body : Box :: new ( try! ( self . block_or_statement ( ) ) ) ,
891+ body : body ,
899892 } )
900893 }
901894
@@ -1058,7 +1051,7 @@ impl<'a> Parser<'a> {
10581051 #[ inline]
10591052 fn statement ( & mut self , token : Token ) -> Result < Statement > {
10601053 match token {
1061- Semicolon => Ok ( Statement :: Transparent { body : Vec :: new ( ) } ) ,
1054+ Semicolon => Ok ( Statement :: Empty ) ,
10621055 BraceOpen => self . block_statement ( ) ,
10631056 Declaration ( kind) => self . variable_declaration_statement ( kind) ,
10641057 Return => self . return_statement ( ) ,
0 commit comments