From bb37d7f3bf9efefd0163b02ae49a6572553cd991 Mon Sep 17 00:00:00 2001 From: Daniel Kukula Date: Fri, 7 Aug 2026 18:35:22 +0200 Subject: [PATCH] Remove accumulator from parse_digits. Reuse all_digits? function --- lib/elixir/lib/version.ex | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/elixir/lib/version.ex b/lib/elixir/lib/version.ex index 6415e6f6924..076964b3000 100644 --- a/lib/elixir/lib/version.ex +++ b/lib/elixir/lib/version.ex @@ -633,17 +633,17 @@ defmodule Version do defp require_digits(string) do if leading_zero?(string) or byte_size(string) > @max_numeric_component_digits, do: :error, - else: parse_digits(string, "") + else: parse_digits(string) end defp leading_zero?(<>), do: true defp leading_zero?(_), do: false - defp parse_digits(<>, acc) when char in ?0..?9, - do: parse_digits(rest, <>) + defp parse_digits(<<>>), do: :error - defp parse_digits(<<>>, acc) when byte_size(acc) > 0, do: {:ok, String.to_integer(acc)} - defp parse_digits(_, _acc), do: :error + defp parse_digits(string) do + if all_digits?(string), do: {:ok, :erlang.binary_to_integer(string)}, else: :error + end defp maybe_patch(patch, approximate?) defp maybe_patch(nil, true), do: {:ok, nil} @@ -667,7 +667,7 @@ defmodule Version do end defp convert_parts_to_integer([part | rest], acc) do - case parse_digits(part, "") do + case parse_digits(part) do {:ok, integer} -> if leading_zero?(part) do :error