Credence.Pattern.NoIfEmptyForEnumMinMax
(credence v0.7.0)
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.