@@ -264,7 +264,9 @@ validate_on_load_attribute(false, _Defs, Private, _Line, _E) -> Private.
264
264
validate_dialyzer_attribute ({dialyzer , Dialyzer }, Defs , Line , E ) ->
265
265
[case lists :keyfind (Fun , 1 , Defs ) of
266
266
false ->
267
- elixir_errors :module_error ([{line , Line }], E , ? MODULE , {bad_dialyzer , Key , Fun });
267
+ elixir_errors :module_error ([{line , Line }], E , ? MODULE , {bad_dialyzer_no_def , Key , Fun });
268
+ {Fun , Type , _Meta , _Clauses } when Type == defmacro ; Type == defmacrop ->
269
+ elixir_errors :module_error ([{line , Line }], E , ? MODULE , {bad_dialyzer_no_macro , Key , Fun });
268
270
_ ->
269
271
ok
270
272
end || {Key , Funs } <- lists :flatten ([Dialyzer ]), Fun <- lists :flatten ([Funs ])];
@@ -581,8 +583,10 @@ format_error({module_in_definition, Module, File, Line}) ->
581
583
[elixir_aliases :inspect (Module ), elixir_utils :relative_to_cwd (File ), Line ]);
582
584
format_error ({bad_inline , {Name , Arity }}) ->
583
585
io_lib :format (" inlined function ~ts /~B undefined" , [Name , Arity ]);
584
- format_error ({bad_dialyzer , Key , {Name , Arity }}) ->
586
+ format_error ({bad_dialyzer_no_def , Key , {Name , Arity }}) ->
585
587
io_lib :format (" undefined function ~ts /~B given to @dialyzer :~ts " , [Name , Arity , Key ]);
588
+ format_error ({bad_dialyzer_no_macro , Key , {Name , Arity }}) ->
589
+ io_lib :format (" macro ~ts /~B given to @dialyzer :~ts (@dialyzer only supports function annotations)" , [Name , Arity , Key ]);
586
590
format_error ({undefined_on_load , {Name , Arity }}) ->
587
591
io_lib :format (" undefined function ~ts /~B given to @on_load" , [Name , Arity ]);
588
592
format_error ({wrong_kind_on_load , {Name , Arity }, WrongKind }) ->
0 commit comments