summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEksperimental <eksperimental@autistici.org>2021-12-04 14:35:05 +0000
committerGitHub <noreply@github.com>2021-12-04 15:35:05 +0100
commit9e0e0fca565fa24cbdea7dab2636df266b8b72cb (patch)
tree3533a7c642700324537690b201ecd192c10d2055
parent8c11ba5cd7cd120f13b7da6e723577cb0c5c439d (diff)
downloadelixir-9e0e0fca565fa24cbdea7dab2636df266b8b72cb.tar.gz
Add guards and specs to Identifier.escape/4 (#11439)
-rw-r--r--lib/elixir/lib/code/identifier.ex7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/elixir/lib/code/identifier.ex b/lib/elixir/lib/code/identifier.ex
index 823504601..51f254558 100644
--- a/lib/elixir/lib/code/identifier.ex
+++ b/lib/elixir/lib/code/identifier.ex
@@ -214,8 +214,11 @@ defmodule Code.Identifier do
@doc """
Escapes the given identifier.
"""
- def escape(other, char, count \\ :infinity, fun \\ &escape_map/1) do
- escape(other, char, count, [], fun)
+ @spec escape(binary(), char(), :infinity | non_neg_integer, (char() -> iolist() | false)) ::
+ {escaped :: iolist(), remaining :: binary()}
+ def escape(binary, char, limit \\ :infinity, fun \\ &escape_map/1)
+ when limit == :infinity or (is_integer(limit) and limit >= 0) do
+ escape(binary, char, limit, [], fun)
end
defp escape(<<_, _::binary>> = binary, _char, 0, acc, _fun) do