diff --git a/lib/elixir/src/elixir_dispatch.erl b/lib/elixir/src/elixir_dispatch.erl index bbb09039247..12e753709c8 100644 --- a/lib/elixir/src/elixir_dispatch.erl +++ b/lib/elixir/src/elixir_dispatch.erl @@ -77,7 +77,7 @@ import_function(Meta, Name, Arity, E) -> false; {import, Receiver} -> require_function(Meta, Receiver, Name, Arity, E); - {ambiguous, Ambiguous} -> + {ambiguous, _} = Ambiguous -> elixir_errors:file_error(Meta, E, ?MODULE, {import, Ambiguous, Name, Arity}); false -> case elixir_import:special_form(Name, Arity) of diff --git a/lib/elixir/test/elixir/kernel/errors_test.exs b/lib/elixir/test/elixir/kernel/errors_test.exs index 5e526bb730a..fdb658c044b 100644 --- a/lib/elixir/test/elixir/kernel/errors_test.exs +++ b/lib/elixir/test/elixir/kernel/errors_test.exs @@ -634,6 +634,16 @@ defmodule Kernel.ErrorsTest do end """ ) + + assert_compile_error( + ["nofile:3:17", "function exit/1 imported from both :erlang and Kernel, call is ambiguous"], + ~c""" + defmodule Kernel.ErrorsTest.FunctionImportConflict do + import :erlang, only: [exit: 1], warn: false + def foo, do: &exit/1 + end + """ + ) end test "ensure valid import :only option" do