+ let impl_scheme = tcx.lookup_item_type(impl_def_id);
+ let impl_predicates = tcx.lookup_predicates(impl_def_id);
+ let impl_trait_ref = tcx.impl_trait_ref(impl_def_id);
+
+ let mut input_parameters: HashSet<_> =
+ ctp::parameters_for_type(impl_scheme.ty, false).into_iter().collect();
+ if let Some(ref trait_ref) = impl_trait_ref {
+ input_parameters.extend(ctp::parameters_for_trait_ref(trait_ref, false));
+ }
+ ctp::identify_constrained_type_params(tcx,
+ &impl_predicates.predicates.as_slice(), impl_trait_ref, &mut input_parameters);