summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@dashbit.co>2021-12-05 20:20:37 +0100
committerJosé Valim <jose.valim@dashbit.co>2021-12-05 20:20:37 +0100
commit822837e18889c0212049cb381f8621e2c2ef6da1 (patch)
tree7c724aa4adffe723558dbf6ecaeb9ad19ae6f5b9
parentc329e711067d9f60ed881d9a8a554485ebec9324 (diff)
downloadelixir-822837e18889c0212049cb381f8621e2c2ef6da1.tar.gz
Add clarifications to Access error message
-rw-r--r--lib/elixir/lib/access.ex6
-rw-r--r--lib/elixir/test/elixir/access_test.exs6
2 files changed, 8 insertions, 4 deletions
diff --git a/lib/elixir/lib/access.ex b/lib/elixir/lib/access.ex
index a9e241ef8..4bc8e067d 100644
--- a/lib/elixir/lib/access.ex
+++ b/lib/elixir/lib/access.ex
@@ -174,7 +174,11 @@ defmodule Access do
exception =
case __STACKTRACE__ do
[unquote(top) | _] ->
- reason = "#{inspect(unquote(module))} does not implement the Access behaviour"
+ reason =
+ "#{inspect(unquote(module))} does not implement the Access behaviour. " <>
+ "If you are using get_in/put_in/update_in, you can specify the field " <>
+ "to be accessed using Access.key!/1"
+
%{unquote(exception) | reason: reason}
_ ->
diff --git a/lib/elixir/test/elixir/access_test.exs b/lib/elixir/test/elixir/access_test.exs
index 31cf0f43a..04b7ade83 100644
--- a/lib/elixir/test/elixir/access_test.exs
+++ b/lib/elixir/test/elixir/access_test.exs
@@ -78,21 +78,21 @@ defmodule AccessTest do
end
message =
- "function AccessTest.Sample.fetch/2 is undefined (AccessTest.Sample does not implement the Access behaviour)"
+ ~r"function AccessTest.Sample.fetch/2 is undefined \(AccessTest.Sample does not implement the Access behaviour"
assert_raise UndefinedFunctionError, message, fn ->
Access.fetch(struct(Sample, []), :name)
end
message =
- "function AccessTest.Sample.get_and_update/3 is undefined (AccessTest.Sample does not implement the Access behaviour)"
+ ~r"function AccessTest.Sample.get_and_update/3 is undefined \(AccessTest.Sample does not implement the Access behaviour"
assert_raise UndefinedFunctionError, message, fn ->
Access.get_and_update(struct(Sample, []), :name, fn nil -> {:ok, :baz} end)
end
message =
- "function AccessTest.Sample.pop/2 is undefined (AccessTest.Sample does not implement the Access behaviour)"
+ ~r"function AccessTest.Sample.pop/2 is undefined \(AccessTest.Sample does not implement the Access behaviour"
assert_raise UndefinedFunctionError, message, fn ->
Access.pop(struct(Sample, []), :name)