Skip to content

Commit 7e2b224

Browse files
committed
Do not ignore unimplemented function headers from used modules
1 parent 3df04b2 commit 7e2b224

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

lib/elixir/src/elixir_def.erl

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ fetch_definition([Tuple | T], File, Module, Set, Bag, All, Private) ->
7979
fetch_definition(T, File, Module, Set, Bag, NewAll, NewPrivate)
8080
catch
8181
error:badarg ->
82-
check_bodiless_function(Check, Meta, File, Module, Kind, Tuple),
82+
elixir_errors:form_error(Meta, File, ?MODULE, {function_head, Kind, Tuple}),
8383
fetch_definition(T, File, Module, Set, Bag, All, Private)
8484
end;
8585

@@ -338,12 +338,6 @@ check_valid_defaults(Meta, File, Name, Arity, Kind, 0, _, LastDefaults, true, tr
338338
check_valid_defaults(_Meta, _File, _Name, _Arity, _Kind, 0, _StoredDefaults, _LastDefaults, _HasBody, _LastHasBody) ->
339339
ok.
340340

341-
check_bodiless_function(Check, _Meta, _File, Module, _Kind, _Tuple)
342-
when Check == false; Module == 'Elixir.Module' ->
343-
ok;
344-
check_bodiless_function(_Check, Meta, File, _Module, Kind, Tuple) ->
345-
elixir_errors:form_error(Meta, File, ?MODULE, {function_head, Kind, Tuple}).
346-
347341
check_args_for_function_head(Meta, Args, E) ->
348342
[begin
349343
elixir_errors:form_error(Meta, E, ?MODULE, invalid_args_for_function_head)

lib/elixir/test/elixir/kernel/errors_test.exs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,22 @@ defmodule Kernel.ErrorsTest do
177177
def foo
178178
end
179179
'''
180+
181+
assert_eval_raise CompileError,
182+
"nofile:10: implementation not provided for predefined def example/2",
183+
'''
184+
defmodule Kernel.ErrorsTest.FunctionTemplate do
185+
defmacro __using__(_) do
186+
quote do
187+
def example(foo, bar \\\\ [])
188+
end
189+
end
190+
end
191+
192+
defmodule Kernel.ErrorsTest.UseFunctionTemplate do
193+
use Kernel.ErrorsTest.FunctionTemplate
194+
end
195+
'''
180196
end
181197

182198
test "guard without definition" do

0 commit comments

Comments
 (0)