diff --git a/lib/elixir/lib/module/types/descr.ex b/lib/elixir/lib/module/types/descr.ex index 620c03e956f..6e527a83369 100644 --- a/lib/elixir/lib/module/types/descr.ex +++ b/lib/elixir/lib/module/types/descr.ex @@ -2505,7 +2505,7 @@ defmodule Module.Types.Descr do [to_quoted(ty, opts), to_quoted(lst, opts)] end - {name, [], args} + {:non_empty_list, [], args} end) |> Kernel.then( &[ diff --git a/lib/elixir/test/elixir/module/types/descr_test.exs b/lib/elixir/test/elixir/module/types/descr_test.exs index 198b0c6d69a..2c701f7103a 100644 --- a/lib/elixir/test/elixir/module/types/descr_test.exs +++ b/lib/elixir/test/elixir/module/types/descr_test.exs @@ -3405,6 +3405,9 @@ defmodule Module.Types.DescrTest do assert list(term()) |> opt_difference(list(integer())) |> to_quoted_string() == "non_empty_list(term()) and not non_empty_list(integer())" + assert opt_difference(list(term()), non_empty_list(integer())) |> to_quoted_string() == + "list(term()) and not non_empty_list(integer())" + assert list(term()) |> opt_difference(list(integer())) |> opt_difference(list(atom()))