@@ -309,13 +309,13 @@ impl DefCollector<'_> {
309309 let macro_def = match self . proc_macros . iter ( ) . find ( |( n, _) | n == name) {
310310 Some ( ( _, expander) ) => MacroDefId {
311311 ast_id : None ,
312- krate : Some ( self . def_map . krate ) ,
312+ krate : self . def_map . krate ,
313313 kind : MacroDefKind :: ProcMacro ( * expander) ,
314314 local_inner : false ,
315315 } ,
316316 None => MacroDefId {
317317 ast_id : None ,
318- krate : Some ( self . def_map . krate ) ,
318+ krate : self . def_map . krate ,
319319 kind : MacroDefKind :: ProcMacro ( ProcMacroExpander :: dummy ( self . def_map . krate ) ) ,
320320 local_inner : false ,
321321 } ,
@@ -784,14 +784,6 @@ impl DefCollector<'_> {
784784 directive : & DeriveDirective ,
785785 path : & ModPath ,
786786 ) -> Option < MacroDefId > {
787- if let Some ( name) = path. as_ident ( ) {
788- // FIXME this should actually be handled with the normal name
789- // resolution; the std lib defines built-in stubs for the derives,
790- // but these are new-style `macro`s, which we don't support yet
791- if let Some ( def_id) = find_builtin_derive ( name) {
792- return Some ( def_id) ;
793- }
794- }
795787 let resolved_res = self . def_map . resolve_path_fp_with_macro (
796788 self . db ,
797789 ResolveMode :: Other ,
@@ -984,7 +976,9 @@ impl ModCollector<'_, '_> {
984976 // to define builtin macros, so we support at least that part.
985977 if mac. is_builtin {
986978 let krate = self . def_collector . def_map . krate ;
987- if let Some ( macro_id) = find_builtin_macro ( & mac. name , krate, ast_id) {
979+ let macro_id = find_builtin_macro ( & mac. name , krate, ast_id)
980+ . or_else ( || find_builtin_derive ( & mac. name , krate, ast_id) ) ;
981+ if let Some ( macro_id) = macro_id {
988982 let vis = self
989983 . def_collector
990984 . def_map
@@ -1326,7 +1320,7 @@ impl ModCollector<'_, '_> {
13261320 // Case 2: normal `macro_rules!` macro
13271321 let macro_id = MacroDefId {
13281322 ast_id : Some ( ast_id) ,
1329- krate : Some ( self . def_collector . def_map . krate ) ,
1323+ krate : self . def_collector . def_map . krate ,
13301324 kind : MacroDefKind :: Declarative ,
13311325 local_inner : mac. is_local_inner ,
13321326 } ;
0 commit comments