Skip to content

Commit 98ee724

Browse files
committed
Fix Protocol.ex warnings
And future `mix docs` creation for exavmlib. The "new_signatures" is part of the Type system coming to elixir. Signed-off-by: Peter M <petermm@gmail.com>
1 parent eadb7da commit 98ee724

File tree

1 file changed

+0
-54
lines changed

1 file changed

+0
-54
lines changed

libs/exavmlib/lib/Protocol.ex

Lines changed: 0 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -623,69 +623,15 @@ defmodule Protocol do
623623
protocol_def = change_protocol(protocol_def, types)
624624
impl_for = change_impl_for(impl_for, protocol, types)
625625
struct_impl_for = change_struct_impl_for(struct_impl_for, protocol, types, structs)
626-
new_signatures = new_signatures(definitions, protocol_funs, protocol, types)
627626

628627
definitions = [protocol_def, impl_for, impl_for!, struct_impl_for] ++ definitions
629-
signatures = Enum.into(new_signatures, signatures)
630628
{:ok, definitions, signatures}
631629

632630
nil ->
633631
{:error, :not_a_protocol}
634632
end
635633
end
636634

637-
defp new_signatures(definitions, protocol_funs, protocol, types) do
638-
alias Module.Types.Descr
639-
640-
clauses =
641-
types
642-
|> List.delete(Any)
643-
|> Enum.map(fn impl ->
644-
{[Module.Types.Of.impl(impl)], Descr.atom([__concat__(protocol, impl)])}
645-
end)
646-
647-
{domain, impl_for, impl_for!} =
648-
case clauses do
649-
[] ->
650-
if Any in types do
651-
clauses = [{[Descr.term()], Descr.atom([__concat__(protocol, Any)])}]
652-
{Descr.term(), clauses, clauses}
653-
else
654-
{Descr.none(), [{[Descr.term()], Descr.atom([nil])}],
655-
[{[Descr.none()], Descr.none()}]}
656-
end
657-
658-
_ ->
659-
domain =
660-
clauses
661-
|> Enum.map(fn {[domain], _} -> domain end)
662-
|> Enum.reduce(&Descr.union/2)
663-
664-
not_domain = Descr.negation(domain)
665-
666-
if Any in types do
667-
clauses =
668-
clauses ++ [{[not_domain], Descr.atom([__concat__(protocol, Any)])}]
669-
670-
{Descr.term(), clauses, clauses}
671-
else
672-
{domain, clauses ++ [{[not_domain], Descr.atom([nil])}], clauses}
673-
end
674-
end
675-
676-
new_signatures =
677-
for {{_fun, arity} = fun_arity, :def, _, _} <- definitions,
678-
fun_arity in protocol_funs do
679-
rest = List.duplicate(Descr.term(), arity - 1)
680-
{fun_arity, {:strong, nil, [{[domain | rest], Descr.dynamic()}]}}
681-
end
682-
683-
[
684-
{{:impl_for, 1}, {:strong, [Descr.term()], impl_for}},
685-
{{:impl_for!, 1}, {:strong, [domain], impl_for!}}
686-
] ++ new_signatures
687-
end
688-
689635
defp get_protocol_functions({_name, _kind, _meta, clauses}) do
690636
Enum.find_value(clauses, fn
691637
{_meta, [:functions], [], clauses} -> clauses

0 commit comments

Comments
 (0)