lib/type_check/default_overrides/range.ex
defmodule TypeCheck.DefaultOverrides.Range do
use TypeCheck
@type! limit() :: integer()
if Version.compare(System.version(), "1.12.0") == :lt do
@type! t() :: %Elixir.Range{first: limit(), last: limit()}
@type! t(first, last) :: %Elixir.Range{first: first, last: last}
else
@type! step() :: pos_integer() | neg_integer()
@type! t() :: %Elixir.Range{first: limit(), last: limit(), step: step()}
@type! t(first, last) :: %Elixir.Range{first: first, last: last, step: step()}
end
end