From a595d4be50fe7e4e5a946bf5ed5878fa7bd42b64 Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Thu, 9 Sep 2021 22:09:06 +0100 Subject: Improve error messages --- src/gleam_stdlib.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'src/gleam_stdlib.js') diff --git a/src/gleam_stdlib.js b/src/gleam_stdlib.js index 7ecbe11..b743c03 100644 --- a/src/gleam_stdlib.js +++ b/src/gleam_stdlib.js @@ -518,24 +518,27 @@ export function decode_bit_string(data) { : decoder_error("BitString", data); } +function decode_tuple_error(size, data) { + return decoder_error( + `Tuple of at least ${size} element${size == 1 ? "" : "s"}`, + data + ); +} + export function decode_element(data, index) { - let error = (size) => - decoder_error( - `Tuple of at least ${size} element${size == 1 ? "" : "s"}`, - data - ); - if (!Array.isArray(data)) return error(index < 0 ? 1 : index + 1); + if (!Array.isArray(data)) + return decode_tuple_error(index < 0 ? Math.abs(index) : index + 1, data); if (index >= 0) { if (index < data.length) { return new Ok(data[index]); } else { - return error(index + 1); + return decode_tuple_error(index + 1, data); } } else { if (Math.abs(index) <= data.length) { return new Ok(data[data.length + index]); } else { - return error(Math.abs(index)); + return decode_tuple_error(Math.abs(index), data); } } } -- cgit v1.2.3