diff --git a/lib/elixir/lib/registry.ex b/lib/elixir/lib/registry.ex index 16416a8b002..fb7c24a7609 100644 --- a/lib/elixir/lib/registry.ex +++ b/lib/elixir/lib/registry.ex @@ -261,9 +261,8 @@ defmodule Registry do end @doc false - def unregister_name({registry, key}) do - unregister(registry, key) - end + def unregister_name({registry, key}), do: unregister(registry, key) + def unregister_name({registry, key, _value}), do: unregister(registry, key) ## Registry API diff --git a/lib/elixir/test/elixir/registry_test.exs b/lib/elixir/test/elixir/registry_test.exs index 7998e425b64..ac04e5e6feb 100644 --- a/lib/elixir/test/elixir/registry_test.exs +++ b/lib/elixir/test/elixir/registry_test.exs @@ -863,6 +863,13 @@ defmodule RegistryTest do end end + test "unregistration on crash with {registry, key, value} via tuple", %{registry: registry} do + name = {:via, Registry, {registry, :name, :value}} + spec = %{id: :foo, start: {Agent, :start_link, [fn -> raise "some error" end, [name: name]]}} + assert {:error, {error, _childspec}} = start_supervised(spec) + assert {%RuntimeError{message: "some error"}, _stacktrace} = error + end + defp register_task(registry, key, value) do parent = self()