@@ -74,9 +74,6 @@ fn unused_generic_params(tcx: TyCtxt<'_>, def_id: DefId) -> FiniteBitSet<u32> {
7474 vis. visit_body ( body) ;
7575 debug ! ( "unused_generic_params: (after visitor) unused_parameters={:?}" , unused_parameters) ;
7676
77- mark_used_by_predicates ( tcx, def_id, & mut unused_parameters) ;
78- debug ! ( "unused_generic_params: (end) unused_parameters={:?}" , unused_parameters) ;
79-
8077 // Emit errors for debugging and testing if enabled.
8178 if !unused_parameters. is_empty ( ) {
8279 emit_unused_generic_params_error ( tcx, def_id, generics, & unused_parameters) ;
@@ -113,47 +110,6 @@ fn mark_used_by_default_parameters<'tcx>(
113110 }
114111}
115112
116- /// Search the predicates on used generic parameters for any unused generic parameters, and mark
117- /// those as used.
118- fn mark_used_by_predicates < ' tcx > (
119- tcx : TyCtxt < ' tcx > ,
120- def_id : DefId ,
121- unused_parameters : & mut FiniteBitSet < u32 > ,
122- ) {
123- let def_id = tcx. closure_base_def_id ( def_id) ;
124- let predicates = tcx. explicit_predicates_of ( def_id) ;
125- debug ! ( "mark_used_by_predicates: predicates_of={:?}" , predicates) ;
126-
127- let mut current_unused_parameters = FiniteBitSet :: new_empty ( ) ;
128- // Run to a fixed point to support `where T: Trait<U>, U: Trait<V>`, starting with an empty
129- // bit set so that this is skipped if all parameters are already used.
130- while current_unused_parameters != * unused_parameters {
131- debug ! (
132- "mark_used_by_predicates: current_unused_parameters={:?} = unused_parameters={:?}" ,
133- current_unused_parameters, unused_parameters
134- ) ;
135- current_unused_parameters = * unused_parameters;
136-
137- for ( predicate, _) in predicates. predicates {
138- // Consider all generic params in a predicate as used if any other parameter in the
139- // predicate is used.
140- let any_param_used = {
141- let mut vis = HasUsedGenericParams { unused_parameters } ;
142- predicate. visit_with ( & mut vis) . is_break ( )
143- } ;
144-
145- if any_param_used {
146- let mut vis = MarkUsedGenericParams { tcx, def_id, unused_parameters } ;
147- predicate. visit_with ( & mut vis) ;
148- }
149- }
150- }
151-
152- if let Some ( parent) = predicates. parent {
153- mark_used_by_predicates ( tcx, parent, unused_parameters) ;
154- }
155- }
156-
157113/// Emit errors for the function annotated by `#[rustc_polymorphize_error]`, labelling each generic
158114/// parameter which was unused.
159115fn emit_unused_generic_params_error < ' tcx > (
0 commit comments