@@ -8,7 +8,7 @@ use either::Either;
8
8
use hir_expand:: {
9
9
hygiene:: Hygiene ,
10
10
name:: { name, AsName , Name } ,
11
- HirFileId , MacroDefId , MacroDefKind ,
11
+ ExpandError , HirFileId , MacroDefId , MacroDefKind ,
12
12
} ;
13
13
use rustc_hash:: FxHashMap ;
14
14
use syntax:: {
@@ -25,7 +25,7 @@ use crate::{
25
25
body:: { Body , BodySourceMap , Expander , PatPtr , SyntheticSyntax } ,
26
26
builtin_type:: { BuiltinFloat , BuiltinInt } ,
27
27
db:: DefDatabase ,
28
- diagnostics:: { InactiveCode , MacroError } ,
28
+ diagnostics:: { InactiveCode , MacroError , UnresolvedProcMacro } ,
29
29
expr:: {
30
30
dummy_expr_id, ArithOp , Array , BinaryOp , BindingAnnotation , CmpOp , Expr , ExprId , Literal ,
31
31
LogicOp , MatchArm , Ordering , Pat , PatId , RecordFieldPat , RecordLitField , Statement ,
@@ -563,12 +563,27 @@ impl ExprCollector<'_> {
563
563
let macro_call = self . expander . to_source ( AstPtr :: new ( & e) ) ;
564
564
let res = self . expander . enter_expand ( self . db , Some ( & self . body . item_scope ) , e) ;
565
565
566
- if let Some ( err) = res. err {
567
- self . source_map . diagnostics . push ( BodyDiagnostic :: MacroError ( MacroError {
568
- file : self . expander . current_file_id ,
569
- node : syntax_ptr. clone ( ) . into ( ) ,
570
- message : err. to_string ( ) ,
571
- } ) ) ;
566
+ match res. err {
567
+ Some ( ExpandError :: UnresolvedProcMacro ) => {
568
+ self . source_map . diagnostics . push ( BodyDiagnostic :: UnresolvedProcMacro (
569
+ UnresolvedProcMacro {
570
+ file : self . expander . current_file_id ,
571
+ node : syntax_ptr. clone ( ) . into ( ) ,
572
+ precise_location : None ,
573
+ macro_name : None ,
574
+ } ,
575
+ ) ) ;
576
+ }
577
+ Some ( err) => {
578
+ self . source_map . diagnostics . push ( BodyDiagnostic :: MacroError (
579
+ MacroError {
580
+ file : self . expander . current_file_id ,
581
+ node : syntax_ptr. clone ( ) . into ( ) ,
582
+ message : err. to_string ( ) ,
583
+ } ,
584
+ ) ) ;
585
+ }
586
+ None => { }
572
587
}
573
588
574
589
match res. value {
0 commit comments