Packages
croma
0.8.2
0.13.0
0.12.0
0.11.3
0.11.2
0.11.1
0.11.0
0.10.2
0.10.1
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.3
0.7.2
0.7.1
0.7.0
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Elixir macro utilities to make type-based programming easier
Current section
Files
Jump to
Current section
Files
lib/croma/testonly.ex
if Mix.env() == :test do
defmodule Croma.Testonly do
alias String, as: S
@type b1 :: String.t
@typep b2 :: S.t
@opaque b3 :: b2
@type l1 :: []
@type l2 :: [integer]
@type l3 :: list
@type l4 :: list(String.t)
@type t0 :: {}
@type t1 :: {atom}
@type t2 :: {atom, integer}
@type t3 :: {String.t, float, binary}
@type t4 :: tuple
@type m1 :: %{}
@type m2 :: %{String.t => String.t}
@type m3 :: map
@type m4 :: %Regex{}
@type f1 :: fun
@type f2 :: ((integer, atom) -> String.t)
@type u :: :a | :b | :c
[:type, :typep, :opaque]
|> Enum.flat_map(fn t -> Module.get_attribute(__MODULE__, t) end)
|> Enum.each(fn {_, {:::, _, [{name, _, _} | _]}, _} ->
t = Croma.TypeUtil.resolve_primitive(__MODULE__, name, __ENV__)
def unquote(name)(), do: unquote(t)
end)
end
end