@@ -102,17 +102,46 @@ pub fn expand(
102
102
} ) ) ;
103
103
let mut rustc_ad_attr =
104
104
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
+ } ) ;
105
124
let mut attr: ast:: Attribute = ast:: Attribute {
106
125
kind : ast:: AttrKind :: Normal ( rustc_ad_attr. clone ( ) ) ,
107
126
//id: ast::DUMMY_TR_ID,
108
127
id : ast:: AttrId :: from_u32 ( 12341 ) , // TODO: fix
109
128
style : ast:: AttrStyle :: Outer ,
110
129
span,
111
130
} ;
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
+ } ;
112
138
// 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 ) {
114
140
orig_item. attrs . push ( attr. clone ( ) ) ;
115
141
}
142
+ if !orig_item. attrs . iter ( ) . any ( |a| a. id == inline_never. id ) {
143
+ orig_item. attrs . push ( inline_never) ;
144
+ }
116
145
117
146
// Now update for d_fn
118
147
rustc_ad_attr. item . args = rustc_ast:: AttrArgs :: Delimited ( rustc_ast:: DelimArgs {
0 commit comments