@@ -102,17 +102,46 @@ pub fn expand(
102102 } ) ) ;
103103 let mut rustc_ad_attr =
104104 P ( ast:: NormalAttr :: from_ident ( Ident :: with_dummy_span ( sym:: rustc_autodiff) ) ) ;
105+ let ts2: Vec < TokenTree > = vec ! [
106+ TokenTree :: Token (
107+ Token :: new( TokenKind :: Ident ( sym:: never, false ) , span) ,
108+ Spacing :: Joint ,
109+ ) ] ;
110+ let never_arg = ast:: DelimArgs {
111+ dspan : ast:: tokenstream:: DelimSpan :: from_single ( span) ,
112+ delim : ast:: token:: Delimiter :: Parenthesis ,
113+ tokens : ast:: tokenstream:: TokenStream :: from_iter ( ts2) ,
114+ } ;
115+ let inline_item = ast:: AttrItem {
116+ path : ast:: Path :: from_ident ( Ident :: with_dummy_span ( sym:: inline) ) ,
117+ args : ast:: AttrArgs :: Delimited ( never_arg) ,
118+ tokens : None ,
119+ } ;
120+ let inline_never_attr = P ( ast:: NormalAttr {
121+ item : inline_item,
122+ tokens : None ,
123+ } ) ;
105124 let mut attr: ast:: Attribute = ast:: Attribute {
106125 kind : ast:: AttrKind :: Normal ( rustc_ad_attr. clone ( ) ) ,
107126 //id: ast::DUMMY_TR_ID,
108127 id : ast:: AttrId :: from_u32 ( 12341 ) , // TODO: fix
109128 style : ast:: AttrStyle :: Outer ,
110129 span,
111130 } ;
131+ let inline_never : ast:: Attribute = ast:: Attribute {
132+ kind : ast:: AttrKind :: Normal ( inline_never_attr) ,
133+ //id: ast::DUMMY_TR_ID,
134+ id : ast:: AttrId :: from_u32 ( 12342 ) , // TODO: fix
135+ style : ast:: AttrStyle :: Outer ,
136+ span,
137+ } ;
112138 // don't add it multiple times:
113- if !orig_item. iter ( ) . any ( |a| a. id == attr. id ) {
139+ if !orig_item. attrs . iter ( ) . any ( |a| a. id == attr. id ) {
114140 orig_item. attrs . push ( attr. clone ( ) ) ;
115141 }
142+ if !orig_item. attrs . iter ( ) . any ( |a| a. id == inline_never. id ) {
143+ orig_item. attrs . push ( inline_never) ;
144+ }
116145
117146 // Now update for d_fn
118147 rustc_ad_attr. item . args = rustc_ast:: AttrArgs :: Delimited ( rustc_ast:: DelimArgs {
0 commit comments