Skip to content

Commit c64a3f5

Browse files
committed
Print dynamic(none()) as none()
1 parent 5990faf commit c64a3f5

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

lib/elixir/lib/module/types.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ defmodule Module.Types do
2727
# TODO: Reuse context from patterns and guards
2828
# TODO: Simplify pair types
2929
# TODO: Handle local calls
30+
# TODO: Improve errors on bad apply if one of the arguments are empty
3031
{{fun, arity}, {:infer, pair_types}}
3132
end
3233
end

lib/elixir/lib/module/types/descr.ex

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,9 +1145,17 @@ defmodule Module.Types.Descr do
11451145

11461146
defp dynamic_to_quoted(descr) do
11471147
cond do
1148-
term_type?(descr) -> [{:dynamic, [], []}]
1149-
single = indivisible_bitmap(descr) -> [single]
1150-
true -> [{:dynamic, [], [to_quoted(descr)]}]
1148+
term_type?(descr) ->
1149+
[{:dynamic, [], []}]
1150+
1151+
single = indivisible_bitmap(descr) ->
1152+
[single]
1153+
1154+
true ->
1155+
case to_quoted(descr) do
1156+
{:none, _meta, []} = none -> [none]
1157+
descr -> [{:dynamic, [], [descr]}]
1158+
end
11511159
end
11521160
end
11531161

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1163,6 +1163,7 @@ defmodule Module.Types.DescrTest do
11631163

11641164
test "none" do
11651165
assert none() |> to_quoted_string() == "none()"
1166+
assert dynamic(none()) |> to_quoted_string() == "none()"
11661167
end
11671168

11681169
test "negation" do

0 commit comments

Comments
 (0)