Skip to content

Commit a9be699

Browse files
committed
improvement: warn on using reserved splode fields
closes #1
1 parent 388d6ad commit a9be699

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

lib/splode/error.ex

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,24 @@ defmodule Splode.Error do
4040
raise "Must provide an error class for a splode error, i.e `use Splode.Error, class: :invalid`"
4141
end
4242

43+
reserved_fields = [:splode, :bread_crumbs, :vars, :path, :stacktrace, :class]
44+
45+
user_fields =
46+
Enum.map(List.wrap(opts[:fields]), fn
47+
{k, _v} -> k
48+
k -> k
49+
end)
50+
51+
conflicting = Enum.filter(user_fields, &(&1 in reserved_fields))
52+
53+
if conflicting != [] do
54+
IO.warn(
55+
"The following fields conflict with reserved Splode.Error fields: #{inspect(conflicting)}. " <>
56+
"Reserved fields are: #{inspect(reserved_fields)}.",
57+
Macro.Env.stacktrace(__ENV__)
58+
)
59+
end
60+
4361
defexception List.wrap(opts[:fields]) ++
4462
[
4563
splode: nil,

0 commit comments

Comments
 (0)