Skip to content

Commit 8d645aa

Browse files
authored
Fix inconsistent variable naming in record typespec macro (#14251)
1 parent 29e3b78 commit 8d645aa

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

lib/elixir/lib/kernel/typespec.ex

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -626,12 +626,12 @@ defmodule Kernel.Typespec do
626626
typespec({:record, meta, [atom, []]}, vars, caller, state)
627627
end
628628

629-
defp typespec({:record, meta, [tag, field_specs]}, vars, caller, state)
630-
when is_atom(tag) and is_list(field_specs) do
629+
defp typespec({:record, meta, [name, field_specs]}, vars, caller, state)
630+
when is_atom(name) and is_list(field_specs) do
631631
# We cannot set a function name to avoid tracking
632632
# as a compile time dependency because for records it actually is one.
633-
case Macro.expand({tag, [], [{:{}, [], []}]}, caller) do
634-
{_, _, [name, fields | _]} when is_list(fields) ->
633+
case Macro.expand({name, [], [{:{}, [], []}]}, caller) do
634+
{_, _, [tag, fields | _]} when is_list(fields) ->
635635
types =
636636
:lists.map(
637637
fn {field, _} ->
@@ -646,19 +646,19 @@ defmodule Kernel.Typespec do
646646

647647
fun = fn {field, _} ->
648648
if not Keyword.has_key?(fields, field) do
649-
compile_error(caller, "undefined field #{field} on record #{inspect(tag)}")
649+
compile_error(caller, "undefined field #{field} on record #{inspect(name)}")
650650
end
651651
end
652652

653653
:lists.foreach(fun, field_specs)
654-
typespec({:{}, meta, [name | types]}, vars, caller, state)
654+
typespec({:{}, meta, [tag | types]}, vars, caller, state)
655655

656656
_ ->
657-
compile_error(caller, "unknown record #{inspect(tag)}")
657+
compile_error(caller, "unknown record #{inspect(name)}")
658658
end
659659
end
660660

661-
defp typespec({:record, _meta, [_tag, _field_specs]}, _vars, caller, _state) do
661+
defp typespec({:record, _meta, [_name, _field_specs]}, _vars, caller, _state) do
662662
message = "invalid record specification, expected the record name to be an atom literal"
663663
compile_error(caller, message)
664664
end

0 commit comments

Comments
 (0)