Expand description

Polymorphization Analysis

This module implements an analysis of functions, methods and closures to determine which generic parameters are unused (and eventually, in what ways generic parameters are used - only for their size, offset of a field, etc.).



  • Emit errors for the function annotated by #[rustc_polymorphize_error], labelling each generic parameter which was unused.
  • Some parameters are considered used-by-default, such as non-generic parameters and the dummy generic parameters from closures, this function marks them as used. leaf_is_closure should be true if the item that unused_generic_params was invoked on is a closure.
  • Provide implementations of queries relating to polymorphization analysis.
  • Returns true if the instance should be polymorphized.
  • Determine which generic parameters are used by the instance.