Rollup merge of #80170 - ldm0:fixice, r=lcnr
Fix ICE when lookup method in trait for type that have bound vars Closes #77910
This commit is contained in:
commit
d729e76492
6 changed files with 66 additions and 3 deletions
|
@ -31,7 +31,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
_ => (false, false, false),
|
||||
};
|
||||
|
||||
// Type check the descriminant and get its type.
|
||||
// Type check the discriminant and get its type.
|
||||
let scrutinee_ty = if force_scrutinee_bool {
|
||||
// Here we want to ensure:
|
||||
//
|
||||
|
|
|
@ -503,8 +503,14 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
if !self.tcx.has_typeck_results(def_id) {
|
||||
return false;
|
||||
}
|
||||
// We're emitting a suggestion, so we can just ignore regions
|
||||
let fn_sig = self.tcx.fn_sig(def_id).skip_binder();
|
||||
// FIXME: Instead of exiting early when encountering bound vars in
|
||||
// the function signature, consider keeping the binder here and
|
||||
// propagating it downwards.
|
||||
let fn_sig = if let Some(fn_sig) = self.tcx.fn_sig(def_id).no_bound_vars() {
|
||||
fn_sig
|
||||
} else {
|
||||
return false;
|
||||
};
|
||||
|
||||
let other_ty = if let FnDef(def_id, _) = *other_ty.kind() {
|
||||
if !self.tcx.has_typeck_results(def_id) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue