diff options
author | tynanbe <contact@tynan.be> | 2022-06-27 15:49:50 -0500 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2022-06-27 22:19:30 +0100 |
commit | 4cdbf54237feb9b7fb855599173528deb0313c16 (patch) | |
tree | 65d7cc7e54d5b2959d31371fe1fd4af894119db3 | |
parent | 402040ddad97b046e6d215d1efc49b6920315a87 (diff) | |
download | gleam_stdlib-4cdbf54237feb9b7fb855599173528deb0313c16.tar.gz gleam_stdlib-4cdbf54237feb9b7fb855599173528deb0313c16.zip |
Let `decode_list` succeed with arrays
-rw-r--r-- | CHANGELOG.md | 3 | ||||
-rw-r--r-- | src/gleam_stdlib.mjs | 3 | ||||
-rw-r--r-- | test/gleam/dynamic_test.gleam | 14 |
3 files changed, 20 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index d7edea9..b21f991 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## Unreleased +- Fixed a bug where decoding a `List` from a `Dynamic` `Array` would fail. + ## v0.22.1 - 2022-06-27 - Fixed a bug where `big_string.concat` could crash. diff --git a/src/gleam_stdlib.mjs b/src/gleam_stdlib.mjs index dac8d58..a612367 100644 --- a/src/gleam_stdlib.mjs +++ b/src/gleam_stdlib.mjs @@ -576,6 +576,9 @@ export function tuple_get(data, index) { } export function decode_list(data) { + if (Array.isArray(data)) { + return new Ok(List.fromArray(data)); + } return List.isList(data) ? new Ok(data) : decoder_error("List", data); } diff --git a/test/gleam/dynamic_test.gleam b/test/gleam/dynamic_test.gleam index a1c15fe..8e9d4f7 100644 --- a/test/gleam/dynamic_test.gleam +++ b/test/gleam/dynamic_test.gleam @@ -756,6 +756,20 @@ pub fn shallow_list_test() { |> should.equal(Error([DecodeError(expected: "List", found: "Int", path: [])])) } +if javascript { + pub fn array_on_js_is_also_list_test() { + #() + |> dynamic.from + |> dynamic.shallow_list + |> should.equal(Ok([])) + + #(1, 2) + |> dynamic.from + |> dynamic.list(of: dynamic.int) + |> should.equal(Ok([1, 2])) + } +} + pub fn result_test() { Ok(1) |> dynamic.from |