@@ -518,8 +518,12 @@ impl AnyDiagnostic {
518518 d : & InferenceDiagnostic ,
519519 source_map : & hir_def:: body:: BodySourceMap ,
520520 ) -> Option < AnyDiagnostic > {
521- let expr_syntax = |expr| source_map. expr_syntax ( expr) . expect ( "unexpected synthetic" ) ;
522- let pat_syntax = |pat| source_map. pat_syntax ( pat) . expect ( "unexpected synthetic" ) ;
521+ let expr_syntax = |expr| {
522+ source_map. expr_syntax ( expr) . inspect_err ( |_| tracing:: error!( "synthetic syntax" ) ) . ok ( )
523+ } ;
524+ let pat_syntax = |pat| {
525+ source_map. pat_syntax ( pat) . inspect_err ( |_| tracing:: error!( "synthetic syntax" ) ) . ok ( )
526+ } ;
523527 Some ( match d {
524528 & InferenceDiagnostic :: NoSuchField { field : expr, private } => {
525529 let expr_or_pat = match expr {
@@ -533,23 +537,23 @@ impl AnyDiagnostic {
533537 NoSuchField { field : expr_or_pat, private } . into ( )
534538 }
535539 & InferenceDiagnostic :: MismatchedArgCount { call_expr, expected, found } => {
536- MismatchedArgCount { call_expr : expr_syntax ( call_expr) , expected, found } . into ( )
540+ MismatchedArgCount { call_expr : expr_syntax ( call_expr) ? , expected, found } . into ( )
537541 }
538542 & InferenceDiagnostic :: PrivateField { expr, field } => {
539- let expr = expr_syntax ( expr) ;
543+ let expr = expr_syntax ( expr) ? ;
540544 let field = field. into ( ) ;
541545 PrivateField { expr, field } . into ( )
542546 }
543547 & InferenceDiagnostic :: PrivateAssocItem { id, item } => {
544548 let expr_or_pat = match id {
545- ExprOrPatId :: ExprId ( expr) => expr_syntax ( expr) . map ( AstPtr :: wrap_left) ,
546- ExprOrPatId :: PatId ( pat) => pat_syntax ( pat) . map ( AstPtr :: wrap_right) ,
549+ ExprOrPatId :: ExprId ( expr) => expr_syntax ( expr) ? . map ( AstPtr :: wrap_left) ,
550+ ExprOrPatId :: PatId ( pat) => pat_syntax ( pat) ? . map ( AstPtr :: wrap_right) ,
547551 } ;
548552 let item = item. into ( ) ;
549553 PrivateAssocItem { expr_or_pat, item } . into ( )
550554 }
551555 InferenceDiagnostic :: ExpectedFunction { call_expr, found } => {
552- let call_expr = expr_syntax ( * call_expr) ;
556+ let call_expr = expr_syntax ( * call_expr) ? ;
553557 ExpectedFunction { call : call_expr, found : Type :: new ( db, def, found. clone ( ) ) }
554558 . into ( )
555559 }
@@ -559,7 +563,7 @@ impl AnyDiagnostic {
559563 name,
560564 method_with_same_name_exists,
561565 } => {
562- let expr = expr_syntax ( * expr) ;
566+ let expr = expr_syntax ( * expr) ? ;
563567 UnresolvedField {
564568 expr,
565569 name : name. clone ( ) ,
@@ -575,7 +579,7 @@ impl AnyDiagnostic {
575579 field_with_same_name,
576580 assoc_func_with_same_name,
577581 } => {
578- let expr = expr_syntax ( * expr) ;
582+ let expr = expr_syntax ( * expr) ? ;
579583 UnresolvedMethodCall {
580584 expr,
581585 name : name. clone ( ) ,
@@ -589,29 +593,28 @@ impl AnyDiagnostic {
589593 }
590594 & InferenceDiagnostic :: UnresolvedAssocItem { id } => {
591595 let expr_or_pat = match id {
592- ExprOrPatId :: ExprId ( expr) => expr_syntax ( expr) . map ( AstPtr :: wrap_left) ,
593- ExprOrPatId :: PatId ( pat) => pat_syntax ( pat) . map ( AstPtr :: wrap_right) ,
596+ ExprOrPatId :: ExprId ( expr) => expr_syntax ( expr) ? . map ( AstPtr :: wrap_left) ,
597+ ExprOrPatId :: PatId ( pat) => pat_syntax ( pat) ? . map ( AstPtr :: wrap_right) ,
594598 } ;
595599 UnresolvedAssocItem { expr_or_pat } . into ( )
596600 }
597601 & InferenceDiagnostic :: UnresolvedIdent { expr } => {
598- let expr = expr_syntax ( expr) ;
602+ let expr = expr_syntax ( expr) ? ;
599603 UnresolvedIdent { expr } . into ( )
600604 }
601605 & InferenceDiagnostic :: BreakOutsideOfLoop { expr, is_break, bad_value_break } => {
602- let expr = expr_syntax ( expr) ;
606+ let expr = expr_syntax ( expr) ? ;
603607 BreakOutsideOfLoop { expr, is_break, bad_value_break } . into ( )
604608 }
605609 InferenceDiagnostic :: TypedHole { expr, expected } => {
606- let expr = expr_syntax ( * expr) ;
610+ let expr = expr_syntax ( * expr) ? ;
607611 TypedHole { expr, expected : Type :: new ( db, def, expected. clone ( ) ) } . into ( )
608612 }
609613 & InferenceDiagnostic :: MismatchedTupleStructPatArgCount { pat, expected, found } => {
610614 let expr_or_pat = match pat {
611- ExprOrPatId :: ExprId ( expr) => expr_syntax ( expr) . map ( AstPtr :: wrap_left) ,
615+ ExprOrPatId :: ExprId ( expr) => expr_syntax ( expr) ? . map ( AstPtr :: wrap_left) ,
612616 ExprOrPatId :: PatId ( pat) => {
613- let InFile { file_id, value } =
614- source_map. pat_syntax ( pat) . expect ( "unexpected synthetic" ) ;
617+ let InFile { file_id, value } = pat_syntax ( pat) ?;
615618
616619 // cast from Either<Pat, SelfParam> -> Either<_, Pat>
617620 let ptr = AstPtr :: try_from_raw ( value. syntax_node_ptr ( ) ) ?;
0 commit comments