use crate::check::{callee, FnCtxt, Needs, PlaceOp};
use crate::hir::def_id::DefId;
use crate::hir::GenericArg;
-use rustc::hir;
use rustc::infer::{self, InferOk};
use rustc::traits;
use rustc::ty::adjustment::{Adjust, Adjustment, OverloadedDeref, PointerCast};
use rustc::ty::fold::TypeFoldable;
use rustc::ty::subst::{Subst, SubstsRef};
use rustc::ty::{self, GenericParamDefKind, Ty};
-use syntax_pos::Span;
+use rustc_hir as hir;
+use rustc_span::Span;
use std::ops::Deref;
Some(n) => n,
None => {
self.tcx.sess.delay_span_bug(
- syntax_pos::DUMMY_SP,
+ rustc_span::DUMMY_SP,
&format!("failed autoderef {}", pick.autoderefs),
);
return self.tcx.types.err;
match exprs.last().unwrap().kind {
hir::ExprKind::Field(ref expr, _)
| hir::ExprKind::Index(ref expr, _)
- | hir::ExprKind::Unary(hir::UnDeref, ref expr) => exprs.push(&expr),
+ | hir::ExprKind::Unary(hir::UnOp::UnDeref, ref expr) => exprs.push(&expr),
_ => break,
}
}
&[index_expr_ty],
);
}
- hir::ExprKind::Unary(hir::UnDeref, ref base_expr) => {
+ hir::ExprKind::Unary(hir::UnOp::UnDeref, ref base_expr) => {
self.convert_place_op_to_mutable(PlaceOp::Deref, expr, base_expr, &[]);
}
_ => {}
traits::elaborate_predicates(self.tcx, predicates.predicates.clone())
.filter_map(|predicate| match predicate {
- ty::Predicate::Trait(trait_pred) if trait_pred.def_id() == sized_def_id => {
+ ty::Predicate::Trait(trait_pred, _) if trait_pred.def_id() == sized_def_id => {
Some(trait_pred)
}
_ => None,
target_trait_def_id: DefId,
) -> ty::PolyTraitRef<'tcx> {
let upcast_trait_refs =
- self.tcx.upcast_choices(source_trait_ref.clone(), target_trait_def_id);
+ traits::upcast_choices(self.tcx, source_trait_ref.clone(), target_trait_def_id);
// must be exactly one trait ref or we'd get an ambig error etc
if upcast_trait_refs.len() != 1 {