Propagate Expectation around binop typeck code to construct more precise trait obligations for binops.

This commit is contained in:
Will Crichton
2022-04-26 13:59:08 -07:00
parent 8c1cc82a82
commit e5bb7d80d6
12 changed files with 194 additions and 42 deletions

View File

@@ -12,7 +12,7 @@ pub mod util;
use crate::infer::canonical::Canonical;
use crate::ty::abstract_const::NotConstEvaluatable;
use crate::ty::subst::SubstsRef;
use crate::ty::{self, AdtKind, Ty, TyCtxt};
use crate::ty::{self, AdtKind, Predicate, Ty, TyCtxt};
use rustc_data_structures::sync::Lrc;
use rustc_errors::{Applicability, Diagnostic};
@@ -414,6 +414,7 @@ pub enum ObligationCauseCode<'tcx> {
BinOp {
rhs_span: Option<Span>,
is_lit: bool,
output_pred: Option<Predicate<'tcx>>,
},
}