Skip to content

Commit 939a7c5

Browse files
committed
Decouple remote domains from remote application
1 parent 4ebd0e4 commit 939a7c5

File tree

12 files changed

+417
-350
lines changed

12 files changed

+417
-350
lines changed

lib/elixir/lib/module/parallel_checker.ex

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ defmodule Module.ParallelChecker do
208208
or if the function does not exist return `{:error, :function}`.
209209
"""
210210
@spec fetch_export(cache(), module(), atom(), arity()) ::
211-
{:ok, mode(), binary() | nil, {:infer, [term()]} | :none}
211+
{:ok, mode(), binary() | nil, {:infer, [term()] | nil, [term()]} | :none}
212212
| :badmodule
213213
| {:badfunction, mode()}
214214
def fetch_export({checker, table}, module, fun, arity) do
@@ -451,10 +451,15 @@ defmodule Module.ParallelChecker do
451451

452452
defp cache_chunk(table, module, exports) do
453453
Enum.each(exports, fn {{fun, arity}, info} ->
454-
# TODO: Match on signature directly in Elixir v1.22+
454+
sig =
455+
case info do
456+
%{sig: {key, _, _} = sig} when key in [:infer, :strong] -> sig
457+
_ -> :none
458+
end
459+
455460
:ets.insert(
456461
table,
457-
{{module, {fun, arity}}, Map.get(info, :deprecated), Map.get(info, :sig, :none)}
462+
{{module, {fun, arity}}, Map.get(info, :deprecated), sig}
458463
)
459464
end)
460465

lib/elixir/lib/module/types.ex

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,18 @@ defmodule Module.Types do
308308
end
309309
end)
310310

311-
inferred = {:infer, Enum.reverse(clauses_types)}
311+
domain =
312+
case clauses_types do
313+
[_] ->
314+
nil
315+
316+
_ ->
317+
clauses_types
318+
|> Enum.map(fn {args, _} -> args end)
319+
|> Enum.zip_with(fn types -> Enum.reduce(types, &Descr.union/2) end)
320+
end
321+
322+
inferred = {:infer, domain, Enum.reverse(clauses_types)}
312323
{inferred, mapping, restore_context(clauses_context, context)}
313324
end
314325

0 commit comments

Comments
 (0)