Also note index in record_element
I changed it from noting the index to just noting the field name, but actually both pieces of information are important, since if there was a type error, presumably the type information is actually wrong. Now we put the index first, since that is the part of the FATE tuple that failed, and then the field name that that would be if the type information were correct, in case that is useful.
This commit was merged in pull request #27.
This commit is contained in:
+2
-2
@@ -832,7 +832,7 @@ coerce_record_to_map(O, N, MemberTypes, Tuple) ->
|
|||||||
correct_record_error_paths(Names, Errors) ->
|
correct_record_error_paths(Names, Errors) ->
|
||||||
CorrectOne = fun({Error, [{record_element, N} | Path]}) ->
|
CorrectOne = fun({Error, [{record_element, N} | Path]}) ->
|
||||||
FieldName = lists:nth(N + 1, Names),
|
FieldName = lists:nth(N + 1, Names),
|
||||||
{Error, [{record_element, FieldName} | Path]}
|
{Error, [{record_element, N, FieldName} | Path]}
|
||||||
end,
|
end,
|
||||||
Corrected = lists:map(CorrectOne, Errors),
|
Corrected = lists:map(CorrectOne, Errors),
|
||||||
{error, Corrected}.
|
{error, Corrected}.
|
||||||
@@ -1169,7 +1169,7 @@ singleton_record_substitution_test() ->
|
|||||||
check_roundtrip(HOutput, #{"it" => {123, 456}}, {tuple, {123, 456}}),
|
check_roundtrip(HOutput, #{"it" => {123, 456}}, {tuple, {123, 456}}),
|
||||||
% Also check that records have accurate paths, since the implementation for
|
% Also check that records have accurate paths, since the implementation for
|
||||||
% record error paths is a bit fiddly.
|
% record error paths is a bit fiddly.
|
||||||
{error, [{{tuple_too_many_terms, _, _, _}, [{record_element, "it"}]}]} = fate_to_erlang(HOutput, {tuple, {1, 2, 3}}).
|
{error, [{{tuple_too_many_terms, _, _, _}, [{record_element, 0, "it"}]}]} = fate_to_erlang(HOutput, {tuple, {1, 2, 3}}).
|
||||||
|
|
||||||
tuple_substitution_test() ->
|
tuple_substitution_test() ->
|
||||||
Contract = "
|
Contract = "
|
||||||
|
|||||||
Reference in New Issue
Block a user