Credence.Pattern.NoIfEmptyForEnumMinMax (credence v0.7.1)

Copy Markdown

Flags if Enum.empty?(var), do: default, else: Enum.min(var) (and Enum.max), and the negated form if !Enum.empty?(var), do: Enum.min(var), else: default (also not Enum.empty?(var)).

Prefer Enum.min(var, fn -> default end) with the empty_fallback parameter.

Only the Enum.empty?/1 forms are flagged. The if var == [] / if var != [] and case var do [] -> default; v -> Enum.min(v) end forms are deliberately NOT flagged: their empty test only matches the literal empty list, so on a non-list empty enumerable (%{}, an empty range, an empty MapSet) the original takes the non-empty branch and Enum.min(var) raises Enum.EmptyError, while Enum.min(var, fn -> default end) returns the default — a behaviour change. Enum.empty?/1 reports emptiness for every enumerable, matching Enum.min/2's empty_fallback exactly, so those forms rewrite identically.