Skip to content

Commit bc93456

Browse files
committed
Add integration test
1 parent 2ec8da5 commit bc93456

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

lib/elixir/test/elixir/module/types/integration_test.exs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,36 @@ defmodule Module.Types.IntegrationTest do
156156
dynamic(open_map())
157157
end
158158

159+
test "writes exports with inferred function types" do
160+
files = %{
161+
"a.ex" => """
162+
defmodule A do
163+
def captured, do: &to_capture/1
164+
defp to_capture(<<"ok">>), do: :ok
165+
defp to_capture(<<"error">>), do: :error
166+
defp to_capture([_ | _]), do: :list
167+
end
168+
"""
169+
}
170+
171+
modules = compile_modules(files)
172+
exports = read_chunk(modules[A]).exports |> Map.new()
173+
174+
return = fn name, arity ->
175+
pair = {name, arity}
176+
%{^pair => %{sig: {:infer, nil, [{_, return}]}}} = exports
177+
return
178+
end
179+
180+
assert return.(:captured, 0)
181+
|> equal?(
182+
fun_from_non_overlapping_clauses([
183+
{[dynamic(binary())], atom([:ok, :error])},
184+
{[dynamic(non_empty_list(term(), term()))], atom([:list])}
185+
])
186+
)
187+
end
188+
159189
test "writes exports for implementations" do
160190
files = %{
161191
"pi.ex" => """

0 commit comments

Comments
 (0)