Skip to content

Commit

Permalink
Prometheus.Erlang: Fix Kernel.Utils.defdelegate usage for Elixir 1.14
Browse files Browse the repository at this point in the history
Elixir 1.14 changed Kernel.Utils.defdelegate/2 into Kernel.Utils.defdelegate_each/2
  • Loading branch information
lanodan committed Aug 2, 2022
1 parent d09a312 commit 31f7fbe
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions lib/prometheus/erlang.ex
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,19 @@ defmodule Prometheus.Erlang do
end
end

if Version.match?(System.version(), "< 1.14.0-rc.0") do
def defdelegate_each(fun, opts), do: Kernel.Utils.defdelegate(fun, opts)
else
def defdelegate_each(fun, opts), do: Kernel.Utils.defdelegate_each(fun, opts)
end

defmacro delegate(fun, opts \\ []) do
fun = Macro.escape(fun, unquote: true)

quote bind_quoted: [fun: fun, opts: opts] do
target = Keyword.get(opts, :to, @erlang_module)

{name, args, as, as_args} = Kernel.Utils.defdelegate(fun, opts)
{name, args, as, as_args} = defdelegate_each(fun, opts)

def unquote(name)(unquote_splicing(args)) do
Prometheus.Error.with_prometheus_error(
Expand All @@ -36,7 +42,7 @@ defmodule Prometheus.Erlang do
quote bind_quoted: [fun: fun, opts: opts] do
target = Keyword.get(opts, :to, @erlang_module)

{name, args, as, [spec | as_args]} = Kernel.Utils.defdelegate(fun, opts)
{name, args, as, [spec | as_args]} = defdelegate_each(fun, opts)

def unquote(name)(unquote_splicing(args)) do
{registry, name, labels} = Metric.parse_spec(unquote(spec))
Expand Down

0 comments on commit 31f7fbe

Please sign in to comment.