Skip to content

Commit 4215bbe

Browse files
authored
Report empty_list: true on dynamic() in list_of (#15506)
Fixes #15505
1 parent f70e504 commit 4215bbe

2 files changed

Lines changed: 2 additions & 1 deletion

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2256,7 +2256,7 @@ defmodule Module.Types.Descr do
22562256
{dynamic, static} ->
22572257
with {empty_list?, static_value} <- list_of_static(static) do
22582258
empty_list? =
2259-
empty_list? or
2259+
empty_list? or dynamic == :term or
22602260
match?(
22612261
%{bitmap: bitmap} when (bitmap &&& @bit_empty_list) != 0,
22622262
dynamic

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1780,6 +1780,7 @@ defmodule Module.Types.DescrTest do
17801780
assert list_of(non_empty_list(integer(), list(term()))) == {false, term()}
17811781
assert list_of(list(integer()) |> opt_union(list(integer(), integer()))) == :badproperlist
17821782
assert list_of(list(integer()) |> opt_union(integer())) == :badproperlist
1783+
assert list_of(dynamic()) == {true, dynamic()}
17831784
assert list_of(dynamic(list(integer()))) == {true, dynamic(integer())}
17841785
assert list_of(dynamic(list(integer(), atom()))) == {true, nil}
17851786
assert list_of(dynamic(non_empty_list(integer(), atom()))) == :badproperlist

0 commit comments

Comments
 (0)