@@ -1024,12 +1024,10 @@ impl<'a, 'b> InvocationCollector<'a, 'b> {
10241024 placeholder ( fragment_kind, NodeId :: placeholder_from_expn_id ( expn_id) , vis)
10251025 }
10261026
1027- fn collect_bang (
1028- & mut self ,
1029- mac : ast:: MacCall ,
1030- span : Span ,
1031- kind : AstFragmentKind ,
1032- ) -> AstFragment {
1027+ fn collect_bang ( & mut self , mac : ast:: MacCall , kind : AstFragmentKind ) -> AstFragment {
1028+ // cache the macro call span so that it can be
1029+ // easily adjusted for incremental compilation
1030+ let span = mac. span ( ) ;
10331031 self . collect ( kind, InvocationKind :: Bang { mac, span } )
10341032 }
10351033
@@ -1087,25 +1085,19 @@ impl<'a, 'b> InvocationCollector<'a, 'b> {
10871085 let MacCallStmt { mac, style, attrs, .. } = mac. into_inner ( ) ;
10881086 Ok ( ( style == MacStmtStyle :: Semicolon , mac, attrs. into ( ) ) )
10891087 }
1090- StmtKind :: Item ( ref item) if matches ! ( item. kind, ItemKind :: MacCall ( ..) ) => {
1091- match stmt. kind {
1092- StmtKind :: Item ( item) => match item. into_inner ( ) {
1093- ast:: Item { kind : ItemKind :: MacCall ( mac) , attrs, .. } => {
1094- Ok ( ( mac. args . need_semicolon ( ) , mac, attrs) )
1095- }
1096- _ => unreachable ! ( ) ,
1097- } ,
1088+ StmtKind :: Item ( item) if matches ! ( item. kind, ItemKind :: MacCall ( ..) ) => {
1089+ match item. into_inner ( ) {
1090+ ast:: Item { kind : ItemKind :: MacCall ( mac) , attrs, .. } => {
1091+ Ok ( ( mac. args . need_semicolon ( ) , mac, attrs) )
1092+ }
10981093 _ => unreachable ! ( ) ,
10991094 }
11001095 }
1101- StmtKind :: Semi ( ref expr) if matches ! ( expr. kind, ast:: ExprKind :: MacCall ( ..) ) => {
1102- match stmt. kind {
1103- StmtKind :: Semi ( expr) => match expr. into_inner ( ) {
1104- ast:: Expr { kind : ast:: ExprKind :: MacCall ( mac) , attrs, .. } => {
1105- Ok ( ( mac. args . need_semicolon ( ) , mac, attrs. into ( ) ) )
1106- }
1107- _ => unreachable ! ( ) ,
1108- } ,
1096+ StmtKind :: Semi ( expr) if matches ! ( expr. kind, ast:: ExprKind :: MacCall ( ..) ) => {
1097+ match expr. into_inner ( ) {
1098+ ast:: Expr { kind : ast:: ExprKind :: MacCall ( mac) , attrs, .. } => {
1099+ Ok ( ( mac. args . need_semicolon ( ) , mac, attrs. into ( ) ) )
1100+ }
11091101 _ => unreachable ! ( ) ,
11101102 }
11111103 }
@@ -1222,7 +1214,7 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> {
12221214
12231215 if let ast:: ExprKind :: MacCall ( mac) = expr. kind {
12241216 self . check_attributes ( & expr. attrs , & mac) ;
1225- self . collect_bang ( mac, expr . span , AstFragmentKind :: Expr ) . make_expr ( ) . into_inner ( )
1217+ self . collect_bang ( mac, AstFragmentKind :: Expr ) . make_expr ( ) . into_inner ( )
12261218 } else {
12271219 assign_id ! ( self , & mut expr. id, || {
12281220 ensure_sufficient_stack( || noop_visit_expr( & mut expr, self ) ) ;
@@ -1318,7 +1310,7 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> {
13181310
13191311 if let ast:: ExprKind :: MacCall ( mac) = expr. kind {
13201312 self . check_attributes ( & expr. attrs , & mac) ;
1321- self . collect_bang ( mac, expr . span , AstFragmentKind :: OptExpr )
1313+ self . collect_bang ( mac, AstFragmentKind :: OptExpr )
13221314 . make_opt_expr ( )
13231315 . map ( |expr| expr. into_inner ( ) )
13241316 } else {
@@ -1339,9 +1331,7 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> {
13391331 }
13401332
13411333 visit_clobber ( pat, |mut pat| match mem:: replace ( & mut pat. kind , PatKind :: Wild ) {
1342- PatKind :: MacCall ( mac) => {
1343- self . collect_bang ( mac, pat. span , AstFragmentKind :: Pat ) . make_pat ( )
1344- }
1334+ PatKind :: MacCall ( mac) => self . collect_bang ( mac, AstFragmentKind :: Pat ) . make_pat ( ) ,
13451335 _ => unreachable ! ( ) ,
13461336 } ) ;
13471337 }
@@ -1360,12 +1350,10 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> {
13601350 . make_stmts ( ) ;
13611351 }
13621352
1363- let span = stmt. span ;
13641353 match self . take_stmt_bang ( stmt) {
13651354 Ok ( ( add_semicolon, mac, attrs) ) => {
13661355 self . check_attributes ( & attrs, & mac) ;
1367- let mut stmts =
1368- self . collect_bang ( mac, span, AstFragmentKind :: Stmts ) . make_stmts ( ) ;
1356+ let mut stmts = self . collect_bang ( mac, AstFragmentKind :: Stmts ) . make_stmts ( ) ;
13691357
13701358 // If this is a macro invocation with a semicolon, then apply that
13711359 // semicolon to the final statement produced by expansion.
@@ -1433,7 +1421,7 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> {
14331421 item. attrs = attrs;
14341422 item. and_then ( |item| match item. kind {
14351423 ItemKind :: MacCall ( mac) => {
1436- self . collect_bang ( mac, span , AstFragmentKind :: Items ) . make_items ( )
1424+ self . collect_bang ( mac, AstFragmentKind :: Items ) . make_items ( )
14371425 }
14381426 _ => unreachable ! ( ) ,
14391427 } )
@@ -1542,9 +1530,9 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> {
15421530 ast:: AssocItemKind :: MacCall ( ref mac) => {
15431531 self . check_attributes ( & item. attrs , & mac) ;
15441532 item. and_then ( |item| match item. kind {
1545- ast:: AssocItemKind :: MacCall ( mac) => self
1546- . collect_bang ( mac, item . span , AstFragmentKind :: TraitItems )
1547- . make_trait_items ( ) ,
1533+ ast:: AssocItemKind :: MacCall ( mac) => {
1534+ self . collect_bang ( mac, AstFragmentKind :: TraitItems ) . make_trait_items ( )
1535+ }
15481536 _ => unreachable ! ( ) ,
15491537 } )
15501538 }
@@ -1567,9 +1555,9 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> {
15671555 ast:: AssocItemKind :: MacCall ( ref mac) => {
15681556 self . check_attributes ( & item. attrs , & mac) ;
15691557 item. and_then ( |item| match item. kind {
1570- ast:: AssocItemKind :: MacCall ( mac) => self
1571- . collect_bang ( mac, item . span , AstFragmentKind :: ImplItems )
1572- . make_impl_items ( ) ,
1558+ ast:: AssocItemKind :: MacCall ( mac) => {
1559+ self . collect_bang ( mac, AstFragmentKind :: ImplItems ) . make_impl_items ( )
1560+ }
15731561 _ => unreachable ! ( ) ,
15741562 } )
15751563 }
@@ -1586,9 +1574,7 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> {
15861574 } ;
15871575
15881576 visit_clobber ( ty, |mut ty| match mem:: replace ( & mut ty. kind , ast:: TyKind :: Err ) {
1589- ast:: TyKind :: MacCall ( mac) => {
1590- self . collect_bang ( mac, ty. span , AstFragmentKind :: Ty ) . make_ty ( )
1591- }
1577+ ast:: TyKind :: MacCall ( mac) => self . collect_bang ( mac, AstFragmentKind :: Ty ) . make_ty ( ) ,
15921578 _ => unreachable ! ( ) ,
15931579 } ) ;
15941580 }
@@ -1613,9 +1599,9 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> {
16131599 ast:: ForeignItemKind :: MacCall ( ref mac) => {
16141600 self . check_attributes ( & foreign_item. attrs , & mac) ;
16151601 foreign_item. and_then ( |item| match item. kind {
1616- ast:: ForeignItemKind :: MacCall ( mac) => self
1617- . collect_bang ( mac, item . span , AstFragmentKind :: ForeignItems )
1618- . make_foreign_items ( ) ,
1602+ ast:: ForeignItemKind :: MacCall ( mac) => {
1603+ self . collect_bang ( mac, AstFragmentKind :: ForeignItems ) . make_foreign_items ( )
1604+ }
16191605 _ => unreachable ! ( ) ,
16201606 } )
16211607 }
0 commit comments