@@ -6,7 +6,7 @@ use rustc_data_structures::unify::{
6
6
} ;
7
7
use rustc_span:: def_id:: DefId ;
8
8
use rustc_span:: symbol:: Symbol ;
9
- use rustc_span:: { Span , DUMMY_SP } ;
9
+ use rustc_span:: Span ;
10
10
11
11
use std:: cmp;
12
12
use std:: marker:: PhantomData ;
@@ -176,17 +176,17 @@ impl<'tcx> UnifyValue for ConstVarValue<'tcx> {
176
176
type Error = ( & ' tcx ty:: Const < ' tcx > , & ' tcx ty:: Const < ' tcx > ) ;
177
177
178
178
fn unify_values ( value1 : & Self , value2 : & Self ) -> Result < Self , Self :: Error > {
179
- let val = match ( value1. val , value2. val ) {
179
+ let ( val, span ) = match ( value1. val , value2. val ) {
180
180
( ConstVariableValue :: Known { .. } , ConstVariableValue :: Known { .. } ) => {
181
181
bug ! ( "equating two const variables, both of which have known values" )
182
182
}
183
183
184
184
// If one side is known, prefer that one.
185
185
( ConstVariableValue :: Known { .. } , ConstVariableValue :: Unknown { .. } ) => {
186
- Ok ( value1. val )
186
+ ( value1. val , value1 . origin . span )
187
187
}
188
188
( ConstVariableValue :: Unknown { .. } , ConstVariableValue :: Known { .. } ) => {
189
- Ok ( value2. val )
189
+ ( value2. val , value2 . origin . span )
190
190
}
191
191
192
192
// If both sides are *unknown*, it hardly matters, does it?
@@ -200,14 +200,14 @@ impl<'tcx> UnifyValue for ConstVarValue<'tcx> {
200
200
// universe is the minimum of the two universes, because that is
201
201
// the one which contains the fewest names in scope.
202
202
let universe = cmp:: min ( universe1, universe2) ;
203
- Ok ( ConstVariableValue :: Unknown { universe } )
203
+ ( ConstVariableValue :: Unknown { universe } , value1 . origin . span )
204
204
}
205
- } ? ;
205
+ } ;
206
206
207
207
Ok ( ConstVarValue {
208
208
origin : ConstVariableOrigin {
209
209
kind : ConstVariableOriginKind :: ConstInference ,
210
- span : DUMMY_SP ,
210
+ span : span ,
211
211
} ,
212
212
val,
213
213
} )
0 commit comments