// any ambiguity.
fn find_bound_for_assoc_item<'tcx>(this: &AstConv<'tcx>,
ty_param_node_id: ast::NodeId,
- ty_param_name: Option<ast::Name>,
+ ty_param_name: ast::Name,
assoc_name: ast::Name,
span: Span)
-> Result<ty::PolyTraitRef<'tcx>, ErrorReported>
.filter(|b| this.trait_defines_associated_type_named(b.def_id(), assoc_name))
.collect();
- if let Some(s) = ty_param_name {
- // borrowck doesn't like this any other way
- one_bound_for_assoc_type(tcx,
- suitable_bounds,
- &token::get_name(s),
- &token::get_name(assoc_name),
- span)
- } else {
- one_bound_for_assoc_type(tcx,
- suitable_bounds,
- "Self",
- &token::get_name(assoc_name),
- span)
-
- }
+ one_bound_for_assoc_type(tcx,
+ suitable_bounds,
+ &token::get_name(ty_param_name),
+ &token::get_name(assoc_name),
+ span)
}
}
(&ty::TyParam(_), def::DefSelfTy(Some(trait_did), None)) => {
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,
Err(ErrorReported) => return (tcx.types.err, ty_path_def),
}
assert_eq!(param_did.krate, ast::LOCAL_CRATE);
match find_bound_for_assoc_item(this,
param_did.node,
- Some(param_name),
+ param_name,
assoc_name,
span) {
Ok(bound) => bound,