@@ -84,51 +84,50 @@ impl<'a> Parser<'a> {
84
84
let item = self . parse_item_ ( attrs. clone ( ) , false , true ) ?;
85
85
self . directory . ownership = old_directory_ownership;
86
86
87
- match item {
88
- Some ( i) => self . mk_stmt ( lo. to ( i. span ) , StmtKind :: Item ( i) ) ,
89
- None => {
90
- let unused_attrs = |attrs : & [ Attribute ] , s : & mut Self | {
91
- if !attrs. is_empty ( ) {
92
- if s. prev_token_kind == PrevTokenKind :: DocComment {
93
- s. span_fatal_err ( s. prev_span , Error :: UselessDocComment ) . emit ( ) ;
94
- } else if attrs. iter ( ) . any ( |a| a. style == AttrStyle :: Outer ) {
95
- s. span_err (
96
- s. token . span , "expected statement after outer attribute"
97
- ) ;
98
- }
99
- }
100
- } ;
101
-
102
- // Do not attempt to parse an expression if we're done here.
103
- if self . token == token:: Semi {
104
- unused_attrs ( & attrs, self ) ;
105
- self . bump ( ) ;
106
- let mut last_semi = lo;
107
- while self . token == token:: Semi {
108
- last_semi = self . token . span ;
109
- self . bump ( ) ;
110
- }
111
- // We are encoding a string of semicolons as an
112
- // an empty tuple that spans the excess semicolons
113
- // to preserve this info until the lint stage
114
- let kind = StmtKind :: Semi ( self . mk_expr (
115
- lo. to ( last_semi) ,
116
- ExprKind :: Tup ( Vec :: new ( ) ) ,
117
- ThinVec :: new ( )
118
- ) ) ;
119
- return Ok ( Some ( self . mk_stmt ( lo. to ( last_semi) , kind) ) ) ;
120
- }
87
+ if let Some ( item) = item {
88
+ return Ok ( Some ( self . mk_stmt ( lo. to ( item. span ) , StmtKind :: Item ( item) ) ) ) ;
89
+ }
121
90
122
- if self . token == token:: CloseDelim ( token:: Brace ) {
123
- unused_attrs ( & attrs, self ) ;
124
- return Ok ( None ) ;
91
+ let unused_attrs = |attrs : & [ Attribute ] , s : & mut Self | {
92
+ if !attrs. is_empty ( ) {
93
+ if s. prev_token_kind == PrevTokenKind :: DocComment {
94
+ s. span_fatal_err ( s. prev_span , Error :: UselessDocComment ) . emit ( ) ;
95
+ } else if attrs. iter ( ) . any ( |a| a. style == AttrStyle :: Outer ) {
96
+ s. span_err (
97
+ s. token . span , "expected statement after outer attribute"
98
+ ) ;
125
99
}
100
+ }
101
+ } ;
126
102
127
- // Remainder are line-expr stmts.
128
- let e = self . parse_expr_res ( Restrictions :: STMT_EXPR , Some ( attrs. into ( ) ) ) ?;
129
- self . mk_stmt ( lo. to ( e. span ) , StmtKind :: Expr ( e) )
103
+ // Do not attempt to parse an expression if we're done here.
104
+ if self . token == token:: Semi {
105
+ unused_attrs ( & attrs, self ) ;
106
+ self . bump ( ) ;
107
+ let mut last_semi = lo;
108
+ while self . token == token:: Semi {
109
+ last_semi = self . token . span ;
110
+ self . bump ( ) ;
130
111
}
112
+ // We are encoding a string of semicolons as an
113
+ // an empty tuple that spans the excess semicolons
114
+ // to preserve this info until the lint stage
115
+ let kind = StmtKind :: Semi ( self . mk_expr (
116
+ lo. to ( last_semi) ,
117
+ ExprKind :: Tup ( Vec :: new ( ) ) ,
118
+ ThinVec :: new ( )
119
+ ) ) ;
120
+ return Ok ( Some ( self . mk_stmt ( lo. to ( last_semi) , kind) ) ) ;
121
+ }
122
+
123
+ if self . token == token:: CloseDelim ( token:: Brace ) {
124
+ unused_attrs ( & attrs, self ) ;
125
+ return Ok ( None ) ;
131
126
}
127
+
128
+ // Remainder are line-expr stmts.
129
+ let e = self . parse_expr_res ( Restrictions :: STMT_EXPR , Some ( attrs. into ( ) ) ) ?;
130
+ self . mk_stmt ( lo. to ( e. span ) , StmtKind :: Expr ( e) )
132
131
} ) )
133
132
}
134
133
0 commit comments