+ fn consts(
+ &mut self,
+ a: &'tcx ty::Const<'tcx>,
+ b: &'tcx ty::Const<'tcx>,
+ ) -> RelateResult<'tcx, &'tcx ty::Const<'tcx>> {
+ debug!("{}.consts({:?}, {:?})", self.tag(), a, b);
+ if a == b {
+ return Ok(a);
+ }
+
+ match (a.val, b.val) {
+ (_, ConstValue::Infer(InferConst::Fresh(_))) => {
+ return Ok(a);
+ }
+
+ (ConstValue::Infer(_), _) | (_, ConstValue::Infer(_)) => {
+ return Err(TypeError::ConstMismatch(relate::expected_found(self, &a, &b)));
+ }
+
+ _ => {}
+ }
+
+ relate::super_relate_consts(self, a, b)
+ }
+