clean-up find_bound_for_assoc_item
This commit is contained in:
@@ -1112,7 +1112,7 @@ fn report_ambiguous_associated_type(tcx: &ty::ctxt,
|
|||||||
// any ambiguity.
|
// any ambiguity.
|
||||||
fn find_bound_for_assoc_item<'tcx>(this: &AstConv<'tcx>,
|
fn find_bound_for_assoc_item<'tcx>(this: &AstConv<'tcx>,
|
||||||
ty_param_node_id: ast::NodeId,
|
ty_param_node_id: ast::NodeId,
|
||||||
ty_param_name: Option<ast::Name>,
|
ty_param_name: ast::Name,
|
||||||
assoc_name: ast::Name,
|
assoc_name: ast::Name,
|
||||||
span: Span)
|
span: Span)
|
||||||
-> Result<ty::PolyTraitRef<'tcx>, ErrorReported>
|
-> Result<ty::PolyTraitRef<'tcx>, ErrorReported>
|
||||||
@@ -1138,21 +1138,11 @@ fn find_bound_for_assoc_item<'tcx>(this: &AstConv<'tcx>,
|
|||||||
.filter(|b| this.trait_defines_associated_type_named(b.def_id(), assoc_name))
|
.filter(|b| this.trait_defines_associated_type_named(b.def_id(), assoc_name))
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
if let Some(s) = ty_param_name {
|
|
||||||
// borrowck doesn't like this any other way
|
|
||||||
one_bound_for_assoc_type(tcx,
|
one_bound_for_assoc_type(tcx,
|
||||||
suitable_bounds,
|
suitable_bounds,
|
||||||
&token::get_name(s),
|
&token::get_name(ty_param_name),
|
||||||
&token::get_name(assoc_name),
|
&token::get_name(assoc_name),
|
||||||
span)
|
span)
|
||||||
} else {
|
|
||||||
one_bound_for_assoc_type(tcx,
|
|
||||||
suitable_bounds,
|
|
||||||
"Self",
|
|
||||||
&token::get_name(assoc_name),
|
|
||||||
span)
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1251,7 +1241,11 @@ fn associated_path_def_to_ty<'tcx>(this: &AstConv<'tcx>,
|
|||||||
}
|
}
|
||||||
(&ty::TyParam(_), def::DefSelfTy(Some(trait_did), None)) => {
|
(&ty::TyParam(_), def::DefSelfTy(Some(trait_did), None)) => {
|
||||||
assert_eq!(trait_did.krate, ast::LOCAL_CRATE);
|
assert_eq!(trait_did.krate, ast::LOCAL_CRATE);
|
||||||
match find_bound_for_assoc_item(this, trait_did.node, None, assoc_name, span) {
|
match find_bound_for_assoc_item(this,
|
||||||
|
trait_did.node,
|
||||||
|
token::special_idents::type_self.name,
|
||||||
|
assoc_name,
|
||||||
|
span) {
|
||||||
Ok(bound) => bound,
|
Ok(bound) => bound,
|
||||||
Err(ErrorReported) => return (tcx.types.err, ty_path_def),
|
Err(ErrorReported) => return (tcx.types.err, ty_path_def),
|
||||||
}
|
}
|
||||||
@@ -1260,7 +1254,7 @@ fn associated_path_def_to_ty<'tcx>(this: &AstConv<'tcx>,
|
|||||||
assert_eq!(param_did.krate, ast::LOCAL_CRATE);
|
assert_eq!(param_did.krate, ast::LOCAL_CRATE);
|
||||||
match find_bound_for_assoc_item(this,
|
match find_bound_for_assoc_item(this,
|
||||||
param_did.node,
|
param_did.node,
|
||||||
Some(param_name),
|
param_name,
|
||||||
assoc_name,
|
assoc_name,
|
||||||
span) {
|
span) {
|
||||||
Ok(bound) => bound,
|
Ok(bound) => bound,
|
||||||
|
|||||||
Reference in New Issue
Block a user