Reach.Evidence.MapContract (Reach v2.8.1)

Copy Markdown View Source

Collects evidence for maps that behave like implicit contracts.

Summary

Functions

collect_fallbacks(project)

collect_key_accesses(project)

collect_key_normalizations(project)

collect_project(project, opts \\ [])

collect_representation_churn(project)

collect_representation_churn(project, normalizations)

nested_parameter_access?(access, parameter_index, nested_bindings)

nested_parameter_bindings(project)

@spec nested_parameter_bindings(map()) ::
  MapSet.t(
    {{module() | nil, atom(), non_neg_integer()}, non_neg_integer(), atom()}
  )

Returns names bound inside nested function-parameter patterns.

parameter_origin_index(project)

@spec parameter_origin_index(map()) :: %{
  required({{module() | nil, atom(), non_neg_integer()}, term()}) =>
    non_neg_integer()
}

Indexes direct function-parameter bindings by their zero-based parameter position.