@@ -732,8 +732,6 @@ impl<'db> Visitor<'db> for DefAnalyzer<'db> {
732732 ctxt : & mut VisitorCtxt < ' db , LazyTraitRefSpan < ' db > > ,
733733 trait_ref : TraitRefId < ' db > ,
734734 ) {
735- // Skip if we don't have a current type context
736-
737735 let current_ty = self
738736 . current_ty
739737 . as_ref ( )
@@ -745,7 +743,7 @@ impl<'db> Visitor<'db> for DefAnalyzer<'db> {
745743 return ;
746744 }
747745
748- if let ( Some ( ( ty, span ) ) , Ok ( trait_inst) ) = (
746+ if let ( Some ( ( ty, _ ) ) , Ok ( trait_inst) ) = (
749747 & self . current_ty ,
750748 lower_trait_ref (
751749 self . db ,
@@ -759,7 +757,7 @@ impl<'db> Visitor<'db> for DefAnalyzer<'db> {
759757 if !expected_kind. does_match ( ty. kind ( self . db ) ) {
760758 self . diags . push (
761759 TraitConstraintDiag :: TraitArgKindMismatch {
762- span : span. clone ( ) ,
760+ span : ctxt . span ( ) . unwrap ( ) ,
763761 expected : expected_kind. clone ( ) ,
764762 actual : * ty,
765763 }
@@ -774,7 +772,7 @@ impl<'db> Visitor<'db> for DefAnalyzer<'db> {
774772 trait_ref,
775773 self . scope ( ) ,
776774 self . assumptions ,
777- ctxt. span ( ) . unwrap ( ) . into ( ) ,
775+ ctxt. span ( ) . unwrap ( ) ,
778776 ) {
779777 self . diags . push ( diag) ;
780778 } else {
@@ -1050,7 +1048,7 @@ fn analyze_trait_ref<'db>(
10501048 trait_ref : TraitRefId < ' db > ,
10511049 scope : ScopeId < ' db > ,
10521050 assumptions : PredicateListId < ' db > ,
1053- span : DynLazySpan < ' db > ,
1051+ span : LazyTraitRefSpan < ' db > ,
10541052) -> Option < TyDiagCollection < ' db > > {
10551053 let trait_inst = match lower_trait_ref ( db, self_ty, trait_ref, scope, assumptions) {
10561054 Ok ( trait_ref) => trait_ref,
@@ -1081,7 +1079,7 @@ fn analyze_trait_ref<'db>(
10811079 ( Some ( expected) , Some ( given) ) => {
10821080 return Some (
10831081 TyLowerDiag :: ConstTyMismatch {
1084- span,
1082+ span : span . into ( ) ,
10851083 expected,
10861084 given,
10871085 }
@@ -1090,11 +1088,23 @@ fn analyze_trait_ref<'db>(
10901088 }
10911089
10921090 ( Some ( expected) , None ) => {
1093- return Some ( TyLowerDiag :: ConstTyExpected { span, expected } . into ( ) )
1091+ return Some (
1092+ TyLowerDiag :: ConstTyExpected {
1093+ span : span. into ( ) ,
1094+ expected,
1095+ }
1096+ . into ( ) ,
1097+ )
10941098 }
10951099
10961100 ( None , Some ( given) ) => {
1097- return Some ( TyLowerDiag :: NormalTypeExpected { span, given } . into ( ) )
1101+ return Some (
1102+ TyLowerDiag :: NormalTypeExpected {
1103+ span : span. into ( ) ,
1104+ given,
1105+ }
1106+ . into ( ) ,
1107+ )
10981108 }
10991109
11001110 ( None , None ) => unreachable ! ( ) ,
@@ -1105,7 +1115,7 @@ fn analyze_trait_ref<'db>(
11051115 err. into_diag (
11061116 db,
11071117 * trait_ref. path ( db) . unwrap ( ) ,
1108- span,
1118+ span. into ( ) ,
11091119 ExpectedPathKind :: Trait ,
11101120 ) ?
11111121 . into ( ) ,
@@ -1115,7 +1125,7 @@ fn analyze_trait_ref<'db>(
11151125 Err ( TraitRefLowerError :: InvalidDomain ( res) ) => {
11161126 return Some (
11171127 NameResDiag :: ExpectedTrait (
1118- span,
1128+ span. into ( ) ,
11191129 * trait_ref. path ( db) . unwrap ( ) . ident ( db) . unwrap ( ) ,
11201130 res. kind_name ( ) ,
11211131 )
@@ -1134,7 +1144,7 @@ fn analyze_trait_ref<'db>(
11341144 return None ;
11351145 }
11361146
1137- trait_inst. emit_sat_diag ( db, scope. ingot ( db) , assumptions, span)
1147+ trait_inst. emit_sat_diag ( db, scope. ingot ( db) , assumptions, span. into ( ) )
11381148}
11391149
11401150#[ derive( Clone , Copy , Debug , derive_more:: From ) ]
@@ -1226,7 +1236,7 @@ fn analyze_impl_trait_specific_error<'db>(
12261236 Err ( TraitRefLowerError :: ArgNumMismatch { expected, given } ) => {
12271237 diags. push (
12281238 TraitConstraintDiag :: TraitArgNumMismatch {
1229- span : impl_trait. span ( ) . trait_ref ( ) . into ( ) ,
1239+ span : impl_trait. span ( ) . trait_ref ( ) ,
12301240 expected,
12311241 given,
12321242 }
@@ -1237,7 +1247,7 @@ fn analyze_impl_trait_specific_error<'db>(
12371247 Err ( TraitRefLowerError :: ArgKindMisMatch { expected, given } ) => {
12381248 diags. push (
12391249 TraitConstraintDiag :: TraitArgKindMismatch {
1240- span : impl_trait. span ( ) . trait_ref ( ) . into ( ) ,
1250+ span : impl_trait. span ( ) . trait_ref ( ) ,
12411251 expected,
12421252 actual : given,
12431253 }
@@ -1344,7 +1354,7 @@ fn analyze_impl_trait_specific_error<'db>(
13441354 if ty. kind ( db) != expected_kind {
13451355 diags. push (
13461356 TraitConstraintDiag :: TraitArgKindMismatch {
1347- span : impl_trait. span ( ) . ty ( ) . into ( ) ,
1357+ span : impl_trait. span ( ) . trait_ref ( ) ,
13481358 expected : expected_kind. clone ( ) ,
13491359 actual : implementor. instantiate_identity ( ) . self_ty ( db) ,
13501360 }
0 commit comments