Skip to content

Commit 50547c1

Browse files
committed
Include function name in type warnings
1 parent 94759fb commit 50547c1

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

lib/elixir/lib/module/types/of.ex

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -646,7 +646,7 @@ defmodule Module.Types.Of do
646646
message:
647647
IO.iodata_to_binary([
648648
"""
649-
expected a non-empty list in expression:
649+
expected a non-empty list in #{format_mfa(expr)}:
650650
651651
#{expr_to_string(expr) |> indent(4)}
652652
@@ -667,7 +667,7 @@ defmodule Module.Types.Of do
667667
message:
668668
IO.iodata_to_binary([
669669
"""
670-
expected a tuple in expression:
670+
expected a tuple in #{format_mfa(expr)}:
671671
672672
#{expr_to_string(expr) |> indent(4)}
673673
@@ -688,7 +688,7 @@ defmodule Module.Types.Of do
688688
message:
689689
IO.iodata_to_binary([
690690
"""
691-
expected a tuple with at least #{pluralize(index + 1, "element", "elements")} in expression:
691+
expected a tuple with at least #{pluralize(index + 1, "element", "elements")} in #{format_mfa(expr)}:
692692
693693
#{expr_to_string(expr) |> indent(4)}
694694
@@ -847,4 +847,9 @@ defmodule Module.Types.Of do
847847
defp empty_if(condition, content) do
848848
if condition, do: "", else: content
849849
end
850+
851+
defp format_mfa({{:., _, [mod, fun]}, _, args}) do
852+
{mod, fun, args} = :elixir_rewrite.erl_to_ex(mod, fun, args)
853+
Exception.format_mfa(mod, fun, length(args))
854+
end
850855
end

lib/elixir/test/elixir/module/types/expr_test.exs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ defmodule Module.Types.ExprTest do
4848
assert typewarn!(hd([])) ==
4949
{dynamic(),
5050
~l"""
51-
expected a non-empty list in expression:
51+
expected a non-empty list in Kernel.hd/1:
5252
5353
hd([])
5454
@@ -60,7 +60,7 @@ defmodule Module.Types.ExprTest do
6060
assert typewarn!(hd(123)) ==
6161
{dynamic(),
6262
~l"""
63-
expected a non-empty list in expression:
63+
expected a non-empty list in Kernel.hd/1:
6464
6565
hd(123)
6666
@@ -79,7 +79,7 @@ defmodule Module.Types.ExprTest do
7979
assert typewarn!(tl([])) ==
8080
{dynamic(),
8181
~l"""
82-
expected a non-empty list in expression:
82+
expected a non-empty list in Kernel.tl/1:
8383
8484
tl([])
8585
@@ -91,7 +91,7 @@ defmodule Module.Types.ExprTest do
9191
assert typewarn!(tl(123)) ==
9292
{dynamic(),
9393
~l"""
94-
expected a non-empty list in expression:
94+
expected a non-empty list in Kernel.tl/1:
9595
9696
tl(123)
9797
@@ -322,7 +322,7 @@ defmodule Module.Types.ExprTest do
322322
assert typewarn!([<<x::integer>>], elem(x, 0)) ==
323323
{dynamic(),
324324
~l"""
325-
expected a tuple in expression:
325+
expected a tuple in Kernel.elem/2:
326326
327327
elem(x, 0)
328328
@@ -340,7 +340,7 @@ defmodule Module.Types.ExprTest do
340340
assert typewarn!(elem({:ok, 123}, 2)) ==
341341
{dynamic(),
342342
~l"""
343-
expected a tuple with at least 3 elements in expression:
343+
expected a tuple with at least 3 elements in Kernel.elem/2:
344344
345345
elem({:ok, 123}, 2)
346346
@@ -365,7 +365,7 @@ defmodule Module.Types.ExprTest do
365365
assert typewarn!([<<x::integer>>], Tuple.insert_at(x, 0, "foo")) ==
366366
{dynamic(),
367367
~l"""
368-
expected a tuple in expression:
368+
expected a tuple in Tuple.insert_at/3:
369369
370370
Tuple.insert_at(x, 0, "foo")
371371
@@ -383,7 +383,7 @@ defmodule Module.Types.ExprTest do
383383
assert typewarn!(Tuple.insert_at({:ok, 123}, 3, "foo")) ==
384384
{dynamic(),
385385
~l"""
386-
expected a tuple with at least 3 elements in expression:
386+
expected a tuple with at least 3 elements in Tuple.insert_at/3:
387387
388388
Tuple.insert_at({:ok, 123}, 3, "foo")
389389
@@ -402,7 +402,7 @@ defmodule Module.Types.ExprTest do
402402
assert typewarn!([<<x::integer>>], Tuple.delete_at(x, 0)) ==
403403
{dynamic(),
404404
~l"""
405-
expected a tuple in expression:
405+
expected a tuple in Tuple.delete_at/2:
406406
407407
Tuple.delete_at(x, 0)
408408
@@ -420,7 +420,7 @@ defmodule Module.Types.ExprTest do
420420
assert typewarn!(Tuple.delete_at({:ok, 123}, 2)) ==
421421
{dynamic(),
422422
~l"""
423-
expected a tuple with at least 3 elements in expression:
423+
expected a tuple with at least 3 elements in Tuple.delete_at/2:
424424
425425
Tuple.delete_at({:ok, 123}, 2)
426426

0 commit comments

Comments
 (0)