Skip to content

Commit bc30e7d

Browse files
lukaszsamsonjosevalim
authored andcommitted
Include bitstring in domain keys (#15516)
Fixes #15515
1 parent 7313001 commit bc30e7d

2 files changed

Lines changed: 9 additions & 2 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ defmodule Module.Types.Descr do
4141
defguardp fields_size(fields) when length(fields)
4242

4343
@domain_key_types :lists.sort(
44-
[:binary, :integer, :float, :pid, :port, :reference] ++
44+
[:binary, :bitstring, :integer, :float, :pid, :port, :reference] ++
4545
[:fun, :atom, :tuple, :map, :list]
4646
)
4747

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1001,6 +1001,13 @@ defmodule Module.Types.DescrTest do
10011001

10021002
assert subtype?(t2, t1)
10031003

1004+
# An open map is open in every domain key, including :bitstring.
1005+
open_pid = open_map([{domain_key(:pid), pid()}])
1006+
1007+
for d <- [:bitstring, :binary, :integer, :float, :atom, :tuple, :map, :list] do
1008+
assert subtype?(closed_map([{[d], atom([:x])}]), open_pid)
1009+
end
1010+
10041011
t1_minus_t2 = difference(t1, t2)
10051012
refute empty?(t1_minus_t2)
10061013

@@ -2169,7 +2176,7 @@ defmodule Module.Types.DescrTest do
21692176

21702177
assert list(
21712178
Enum.reduce(
2172-
[binary(), float(), pid(), port(), reference()] ++
2179+
[binary(), bitstring_no_binary(), float(), pid(), port(), reference()] ++
21732180
[fun(), atom(), tuple(), open_map(), list(term(), term())],
21742181
tuple([integer(), binary()]),
21752182
fn domain, acc -> union(acc, tuple([domain, term()])) end

0 commit comments

Comments
 (0)