@@ -10,7 +10,7 @@ use rustc::{
10
10
hir:: def_id:: DefId ,
11
11
ty:: {
12
12
self ,
13
- relate:: { Relate , RelateResult , TraitObjectMode , TypeRelation } ,
13
+ relate:: { Relate , RelateResult , TypeRelation } ,
14
14
subst:: Substs ,
15
15
Ty , TyCtxt ,
16
16
Visibility :: Public ,
@@ -95,10 +95,6 @@ impl<'a, 'gcx, 'tcx> TypeRelation<'a, 'gcx, 'tcx> for MismatchRelation<'a, 'gcx,
95
95
"Mismatch"
96
96
}
97
97
98
- fn trait_object_mode ( & self ) -> TraitObjectMode {
99
- TraitObjectMode :: NoSquash
100
- }
101
-
102
98
fn a_is_expected ( & self ) -> bool {
103
99
true
104
100
}
@@ -189,9 +185,13 @@ impl<'a, 'gcx, 'tcx> TypeRelation<'a, 'gcx, 'tcx> for MismatchRelation<'a, 'gcx,
189
185
let a = a_obj. principal ( ) ;
190
186
let b = b_obj. principal ( ) ;
191
187
192
- if self . check_substs ( a. skip_binder ( ) . substs , b. skip_binder ( ) . substs ) {
193
- let _ = self . relate ( & a. skip_binder ( ) . substs , & b. skip_binder ( ) . substs ) ?;
194
- Some ( ( a. skip_binder ( ) . def_id , b. skip_binder ( ) . def_id ) )
188
+ if let ( Some ( a) , Some ( b) ) = ( a, b) {
189
+ if self . check_substs ( a. skip_binder ( ) . substs , b. skip_binder ( ) . substs ) {
190
+ let _ = self . relate ( & a. skip_binder ( ) . substs , & b. skip_binder ( ) . substs ) ?;
191
+ Some ( ( a. skip_binder ( ) . def_id , b. skip_binder ( ) . def_id ) )
192
+ } else {
193
+ None
194
+ }
195
195
} else {
196
196
None
197
197
}
0 commit comments