Skip to content

Commit

Permalink
Remove logic in one_bound in astconv that prefers non-const bounds
Browse files Browse the repository at this point in the history
  • Loading branch information
compiler-errors committed Jan 8, 2024
1 parent 6203fca commit 99292c9
Showing 1 changed file with 2 additions and 33 deletions.
35 changes: 2 additions & 33 deletions compiler/rustc_hir_analysis/src/astconv/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1032,7 +1032,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
self.trait_defines_associated_item_named(r.def_id(), assoc_kind, assoc_name)
});

let Some(mut bound) = matching_candidates.next() else {
let Some(bound) = matching_candidates.next() else {
let reported = self.complain_about_assoc_item_not_found(
all_candidates,
&ty_param_name.to_string(),
Expand All @@ -1046,38 +1046,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
};
debug!(?bound);

// look for a candidate that is not the same as our first bound, disregarding
// whether the bound is const.
let mut next_cand = matching_candidates.next();
while let Some(mut bound2) = next_cand {
debug!(?bound2);
if bound2.bound_vars() != bound.bound_vars() {
break;
}

let generics = tcx.generics_of(bound.def_id());
let Some(host_index) = generics.host_effect_index else { break };

// always return the bound that contains the host param.
if let ty::ConstKind::Param(_) = bound2.skip_binder().args.const_at(host_index).kind() {
(bound, bound2) = (bound2, bound);
}

let unconsted_args = bound
.skip_binder()
.args
.iter()
.enumerate()
.map(|(n, arg)| if host_index == n { tcx.consts.true_.into() } else { arg });

if unconsted_args.eq(bound2.skip_binder().args.iter()) {
next_cand = matching_candidates.next();
} else {
break;
}
}

if let Some(bound2) = next_cand {
if let Some(bound2) = matching_candidates.next() {
debug!(?bound2);

let assoc_kind_str = assoc_kind_str(assoc_kind);
Expand Down

0 comments on commit 99292c9

Please sign in to comment.