Skip to content

Commit f66ffd0

Browse files
committed
Add missing :erlang.size/1 guard, closes #9789
1 parent 696bad8 commit f66ffd0

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

lib/elixir/lib/module/types/pattern.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@ defmodule Module.Types.Pattern do
275275
{:binary_part, 3} => {[:binary, :integer, :integer], :binary},
276276
{:bit_size, 1} => {[:binary], :integer},
277277
{:byte_size, 1} => {[:binary], :integer},
278+
{:size, 1} => {[{:union, [:binary, :tuple]}], :boolean},
278279
{:div, 2} => {[:integer, :integer], :integer},
279280
{:rem, 2} => {[:integer, :integer], :integer},
280281
{:node, 0} => {[], :atom},

lib/elixir/test/elixir/module/types_test.exs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,11 @@ defmodule Module.TypesTest do
161161
quoted_head([x], [is_tuple(is_atom(x))])
162162
end
163163

164+
test "erlang-only guards" do
165+
assert quoted_head([x], [:erlang.size(x)]) ==
166+
{:ok, [{:union, [:binary, :tuple]}]}
167+
end
168+
164169
test "failing guard functions" do
165170
assert quoted_head([x], [length([])]) == {:ok, [{:var, 0}]}
166171

0 commit comments

Comments
 (0)