defmodule HexSolver.Constraints.Empty do @moduledoc false use HexSolver.Constraints.Impl alias HexSolver.Constraint alias HexSolver.Constraints.Empty defstruct [] def any?(%Empty{}), do: false def empty?(%Empty{}), do: true def allows?(%Empty{}, %Version{}), do: false def allows_any?(%Empty{}, constraint), do: Constraint.empty?(constraint) def allows_all?(%Empty{}, constraint), do: Constraint.empty?(constraint) def difference(%Empty{}, _constraint), do: %Empty{} def intersect(%Empty{}, _constraint), do: %Empty{} def union(%Empty{}, constraint), do: constraint def compare(left, right) do raise FunctionClauseError, module: __MODULE__, function: :compare, arity: 2, kind: :def, args: [left, right], clauses: [] end def to_string(%Empty{}) do "empty" end defimpl String.Chars do defdelegate to_string(empty), to: HexSolver.Constraints.Empty end defimpl Inspect do def inspect(_, _opts) do "#Empty<>" end end end