summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Muskała <michal@muskala.eu>2018-07-12 12:57:56 +0200
committerMichał Muskała <michal@muskala.eu>2018-07-12 12:57:56 +0200
commit69135ab75a6fb51ec7584a4e41e0af548e0af8f0 (patch)
tree307c9f73f341e4c22dc67f2492533afb4587e70e
parentaf94aca353368d338bf0d5dea341ba78150bc110 (diff)
downloadelixir-69135ab75a6fb51ec7584a4e41e0af548e0af8f0.tar.gz
-rw-r--r--lib/elixir/lib/protocol.ex12
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/elixir/lib/protocol.ex b/lib/elixir/lib/protocol.ex
index 44aed9db8..350d5a3e5 100644
--- a/lib/elixir/lib/protocol.ex
+++ b/lib/elixir/lib/protocol.ex
@@ -168,8 +168,7 @@ defmodule Protocol do
"""
defmacro derive(protocol, module, options \\ []) do
quote do
- module = unquote(module)
- Protocol.__derive__([{unquote(protocol), unquote(options)}], module, __ENV__)
+ Protocol.__derive__([{unquote(protocol), unquote(options)}], unquote(module), __ENV__)
end
end
@@ -313,13 +312,14 @@ defmodule Protocol do
opts = [:allow_missing_chunks]
case :beam_lib.chunks(beam_file(protocol), chunk_ids, opts) do
- {:ok, {^protocol, [{:debug_info, debug_info} | extra_chunks]}} ->
+ {:ok, {^protocol, [{:debug_info, debug_info} | chunks]}} ->
{:debug_info_v1, _backend, {:elixir_v1, info, specs}} = debug_info
%{attributes: attributes, definitions: definitions} = info
+ chunks = :lists.map(fn {name, value} -> {List.to_string(name), value} end, chunks)
case attributes[:protocol] do
[fallback_to_any: any] ->
- {:ok, {any, definitions}, specs, {info, extra_chunks}}
+ {:ok, {any, definitions}, specs, {info, chunks}}
_ ->
{:error, :not_a_protocol}
@@ -423,9 +423,9 @@ defmodule Protocol do
end
# Finally compile the module and emit its bytecode.
- defp compile(definitions, specs, {info, extra_chunks}) do
+ defp compile(definitions, specs, {info, chunks}) do
info = %{info | definitions: definitions}
- {:ok, :elixir_erl.consolidate(info, specs, extra_chunks)}
+ {:ok, :elixir_erl.consolidate(info, specs, chunks)}
end
## Definition callbacks