@@ -1155,18 +1155,22 @@ fn macro_call_as_call_id_(
1155
1155
let def =
1156
1156
resolver ( call. path . clone ( ) ) . ok_or_else ( || UnresolvedMacro { path : call. path . clone ( ) } ) ?;
1157
1157
1158
- let res = if let MacroDefKind :: BuiltInEager ( ..) = def. kind {
1159
- let macro_call = InFile :: new ( call. ast_id . file_id , call. ast_id . to_node ( db) ) ;
1160
- expand_eager_macro_input ( db, krate, macro_call, def, & resolver) ?
1161
- } else {
1162
- ExpandResult {
1158
+ let res = match def. kind {
1159
+ MacroDefKind :: BuiltInEager ( ..) => {
1160
+ let macro_call = InFile :: new ( call. ast_id . file_id , call. ast_id . to_node ( db) ) ;
1161
+ expand_eager_macro_input ( db, krate, macro_call, def, & |path| {
1162
+ resolver ( path) . filter ( MacroDefId :: is_fn_like)
1163
+ } ) ?
1164
+ }
1165
+ _ if def. is_fn_like ( ) => ExpandResult {
1163
1166
value : Some ( def. as_lazy_macro (
1164
1167
db,
1165
1168
krate,
1166
1169
MacroCallKind :: FnLike { ast_id : call. ast_id , expand_to } ,
1167
1170
) ) ,
1168
1171
err : None ,
1169
- }
1172
+ } ,
1173
+ _ => return Err ( UnresolvedMacro { path : call. path . clone ( ) } ) ,
1170
1174
} ;
1171
1175
Ok ( res)
1172
1176
}
@@ -1251,6 +1255,7 @@ fn derive_macro_as_call_id(
1251
1255
resolver : impl Fn ( path:: ModPath ) -> Option < ( MacroId , MacroDefId ) > ,
1252
1256
) -> Result < ( MacroId , MacroDefId , MacroCallId ) , UnresolvedMacro > {
1253
1257
let ( macro_id, def_id) = resolver ( item_attr. path . clone ( ) )
1258
+ . filter ( |( _, def_id) | def_id. is_derive ( ) )
1254
1259
. ok_or_else ( || UnresolvedMacro { path : item_attr. path . clone ( ) } ) ?;
1255
1260
let call_id = def_id. as_lazy_macro (
1256
1261
db. upcast ( ) ,
0 commit comments