From 98277883177ae6531bc68bb799d103e516c2006b Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Sat, 1 Jan 2022 23:33:58 +0000 Subject: Set path in element and field functions --- src/gleam/dynamic.gleam | 2 ++ src/gleam_stdlib.erl | 2 +- src/gleam_stdlib.mjs | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gleam/dynamic.gleam b/src/gleam/dynamic.gleam index 9a626dc..04a01ae 100644 --- a/src/gleam/dynamic.gleam +++ b/src/gleam/dynamic.gleam @@ -404,6 +404,7 @@ pub fn field( ) -> Result(t, DecodeErrors) { try value = decode_field(value, name) inner_type(value) + |> map_errors(push_path(_, name)) } if erlang { @@ -450,6 +451,7 @@ pub fn element( } } inner_type(data) + |> map_errors(push_path(_, index)) } fn exact_decode_tuple_error(size: Int, data: Dynamic) -> Result(a, DecodeErrors) { diff --git a/src/gleam_stdlib.erl b/src/gleam_stdlib.erl index d88b964..3228b18 100644 --- a/src/gleam_stdlib.erl +++ b/src/gleam_stdlib.erl @@ -94,7 +94,7 @@ decode_list(Data) -> decode_error_msg(<<"List">>, Data). decode_field(Data, Key) -> case Data of #{Key := Value} -> {ok, Value}; - _ -> decode_error_msg(io_lib:format("Value with field `~p`", [Key]), Data) + _ -> decode_error_msg("object", Data) end. size_of_tuple(Data) -> tuple_size(Data). diff --git a/src/gleam_stdlib.mjs b/src/gleam_stdlib.mjs index 4d8f65e..8340cd6 100644 --- a/src/gleam_stdlib.mjs +++ b/src/gleam_stdlib.mjs @@ -558,7 +558,7 @@ export function decode_option(data, decoder) { } export function decode_field(value, name) { - let error = () => decoder_error(`Value with field ${inspect(name)}`, value); + let error = () => decoder_error("object", value); if (value instanceof Map) { let entry = value.get(name); return entry.isOk() ? entry : error(); -- cgit v1.2.3