aboutsummaryrefslogtreecommitdiff
path: root/gen
diff options
context:
space:
mode:
Diffstat (limited to 'gen')
-rw-r--r--gen/src/gleam@dynamic.erl40
-rw-r--r--gen/src/gleam@list.erl4
-rw-r--r--gen/test/gleam@dynamic_test.erl170
-rw-r--r--gen/test/gleam@list_test.erl18
-rw-r--r--gen/test/gleam@map_test.erl2
-rw-r--r--gen/test/gleam@result_test.erl6
6 files changed, 225 insertions, 15 deletions
diff --git a/gen/src/gleam@dynamic.erl b/gen/src/gleam@dynamic.erl
new file mode 100644
index 0000000..e20db87
--- /dev/null
+++ b/gen/src/gleam@dynamic.erl
@@ -0,0 +1,40 @@
+-module(gleam@dynamic).
+-compile(no_auto_import).
+
+-export([from/1, unsafe_coerce/1, string/1, int/1, float/1, atom/1, bool/1, thunk/1, list/2, field/2]).
+
+from(A) ->
+ gleam_stdlib:identity(A).
+
+unsafe_coerce(A) ->
+ gleam_stdlib:identity(A).
+
+string(A) ->
+ gleam_stdlib:decode_string(A).
+
+int(A) ->
+ gleam_stdlib:decode_int(A).
+
+float(A) ->
+ gleam_stdlib:decode_float(A).
+
+atom(A) ->
+ gleam_stdlib:decode_atom(A).
+
+bool(A) ->
+ gleam_stdlib:decode_bool(A).
+
+thunk(A) ->
+ gleam_stdlib:decode_thunk(A).
+
+list_dynamic(A) ->
+ gleam_stdlib:decode_list(A).
+
+list(Dynamic, DecoderType) ->
+ gleam@result:then(
+ list_dynamic(Dynamic),
+ fun(Capture1) -> gleam@list:traverse(Capture1, DecoderType) end
+ ).
+
+field(A, B) ->
+ gleam_stdlib:decode_field(A, B).
diff --git a/gen/src/gleam@list.erl b/gen/src/gleam@list.erl
index 586a5aa..1e19592 100644
--- a/gen/src/gleam@list.erl
+++ b/gen/src/gleam@list.erl
@@ -258,8 +258,8 @@ intersperse(List, Elem) ->
[X] ->
[X];
- [X1 | Rest] ->
- [X1, Elem | intersperse(Rest, Elem)]
+ [X | Rest] ->
+ [X, Elem | intersperse(Rest, Elem)]
end.
at(List, Index) ->
diff --git a/gen/test/gleam@dynamic_test.erl b/gen/test/gleam@dynamic_test.erl
new file mode 100644
index 0000000..d233dbc
--- /dev/null
+++ b/gen/test/gleam@dynamic_test.erl
@@ -0,0 +1,170 @@
+-module(gleam@dynamic_test).
+-compile(no_auto_import).
+
+-export([string_test/0, int_test/0, float_test/0, thunk_test/0, bool_test/0, atom_test/0, list_test/0, field_test/0]).
+
+string_test() ->
+ gleam@expect:equal(
+ gleam@dynamic:string(gleam@dynamic:from(<<"">>)),
+ {ok, <<"">>}
+ ),
+ gleam@expect:equal(
+ gleam@dynamic:string(gleam@dynamic:from(<<"Hello">>)),
+ {ok, <<"Hello">>}
+ ),
+ gleam@expect:equal(
+ gleam@dynamic:string(gleam@dynamic:from(1)),
+ {error, <<"Expected a String, got `1`">>}
+ ),
+ gleam@expect:equal(
+ gleam@dynamic:string(gleam@dynamic:from([])),
+ {error, <<"Expected a String, got `[]`">>}
+ ).
+
+int_test() ->
+ gleam@expect:equal(gleam@dynamic:int(gleam@dynamic:from(1)), {ok, 1}),
+ gleam@expect:equal(gleam@dynamic:int(gleam@dynamic:from(2)), {ok, 2}),
+ gleam@expect:equal(
+ gleam@dynamic:int(gleam@dynamic:from(1.0)),
+ {error, <<"Expected an Int, got `1.0`">>}
+ ),
+ gleam@expect:equal(
+ gleam@dynamic:int(gleam@dynamic:from([])),
+ {error, <<"Expected an Int, got `[]`">>}
+ ).
+
+float_test() ->
+ gleam@expect:equal(gleam@dynamic:float(gleam@dynamic:from(1.0)), {ok, 1.0}),
+ gleam@expect:equal(gleam@dynamic:float(gleam@dynamic:from(2.2)), {ok, 2.2}),
+ gleam@expect:equal(
+ gleam@dynamic:float(gleam@dynamic:from(1)),
+ {error, <<"Expected a Float, got `1`">>}
+ ),
+ gleam@expect:equal(
+ gleam@dynamic:float(gleam@dynamic:from([])),
+ {error, <<"Expected a Float, got `[]`">>}
+ ).
+
+thunk_test() ->
+ gleam@expect:is_ok(gleam@dynamic:thunk(gleam@dynamic:from(fun() -> 1 end))),
+ gleam@expect:equal(
+ gleam@result:map(
+ gleam@dynamic:thunk(gleam@dynamic:from(fun() -> 1 end)),
+ fun(F) -> F() end
+ ),
+ {ok, gleam@dynamic:from(1)}
+ ),
+ gleam@expect:is_error(
+ gleam@dynamic:thunk(gleam@dynamic:from(fun(X) -> X end))
+ ),
+ gleam@expect:is_error(gleam@dynamic:thunk(gleam@dynamic:from(1))),
+ gleam@expect:is_error(gleam@dynamic:thunk(gleam@dynamic:from([]))).
+
+bool_test() ->
+ gleam@expect:equal(
+ gleam@dynamic:bool(gleam@dynamic:from(true)),
+ {ok, true}
+ ),
+ gleam@expect:equal(
+ gleam@dynamic:bool(gleam@dynamic:from(false)),
+ {ok, false}
+ ),
+ gleam@expect:equal(
+ gleam@dynamic:bool(gleam@dynamic:from(1)),
+ {error, <<"Expected a Bool, got `1`">>}
+ ),
+ gleam@expect:equal(
+ gleam@dynamic:bool(gleam@dynamic:from([])),
+ {error, <<"Expected a Bool, got `[]`">>}
+ ).
+
+atom_test() ->
+ gleam@expect:equal(
+ gleam@dynamic:atom(
+ gleam@dynamic:from(gleam@atom:create_from_string(<<"">>))
+ ),
+ {ok, gleam@atom:create_from_string(<<"">>)}
+ ),
+ gleam@expect:equal(
+ gleam@dynamic:atom(
+ gleam@dynamic:from(gleam@atom:create_from_string(<<"ok">>))
+ ),
+ {ok, gleam@atom:create_from_string(<<"ok">>)}
+ ),
+ gleam@expect:is_error(gleam@dynamic:atom(gleam@dynamic:from(1))),
+ gleam@expect:is_error(gleam@dynamic:atom(gleam@dynamic:from([]))).
+
+list_test() ->
+ gleam@expect:equal(
+ gleam@dynamic:list(gleam@dynamic:from([]), fun gleam@dynamic:string/1),
+ {ok, []}
+ ),
+ gleam@expect:equal(
+ gleam@dynamic:list(gleam@dynamic:from([]), fun gleam@dynamic:int/1),
+ {ok, []}
+ ),
+ gleam@expect:equal(
+ gleam@dynamic:list(
+ gleam@dynamic:from([1, 2, 3]),
+ fun gleam@dynamic:int/1
+ ),
+ {ok, [1, 2, 3]}
+ ),
+ gleam@expect:equal(
+ gleam@dynamic:list(
+ gleam@dynamic:from([[1], [2], [3]]),
+ fun(Capture1) ->
+ gleam@dynamic:list(Capture1, fun gleam@dynamic:int/1)
+ end
+ ),
+ {ok, [[1], [2], [3]]}
+ ),
+ gleam@expect:is_error(
+ gleam@dynamic:list(gleam@dynamic:from(1), fun gleam@dynamic:string/1)
+ ),
+ gleam@expect:is_error(
+ gleam@dynamic:list(gleam@dynamic:from(1.0), fun gleam@dynamic:int/1)
+ ),
+ gleam@expect:is_error(
+ gleam@dynamic:list(
+ gleam@dynamic:from([<<"">>]),
+ fun gleam@dynamic:int/1
+ )
+ ),
+ gleam@expect:is_error(
+ gleam@dynamic:list(
+ gleam@dynamic:from(
+ [gleam@dynamic:from(1), gleam@dynamic:from(<<"not an int">>)]
+ ),
+ fun gleam@dynamic:int/1
+ )
+ ).
+
+field_test() ->
+ {ok, OkAtom} = gleam@atom:from_string(<<"ok">>),
+ {ok, ErrorAtom} = gleam@atom:from_string(<<"error">>),
+ gleam@expect:equal(
+ gleam@dynamic:field(
+ gleam@dynamic:from(gleam@map:insert(gleam@map:new(), OkAtom, 1)),
+ OkAtom
+ ),
+ {ok, gleam@dynamic:from(1)}
+ ),
+ gleam@expect:equal(
+ gleam@dynamic:field(
+ gleam@dynamic:from(
+ gleam@map:insert(
+ gleam@map:insert(gleam@map:new(), OkAtom, 3),
+ ErrorAtom,
+ 1
+ )
+ ),
+ OkAtom
+ ),
+ {ok, gleam@dynamic:from(3)}
+ ),
+ gleam@expect:is_error(
+ gleam@dynamic:field(gleam@dynamic:from(gleam@map:new()), OkAtom)
+ ),
+ gleam@expect:is_error(gleam@dynamic:field(gleam@dynamic:from(1), OkAtom)),
+ gleam@expect:is_error(gleam@dynamic:field(gleam@dynamic:from([]), [])).
diff --git a/gen/test/gleam@list_test.erl b/gen/test/gleam@list_test.erl
index 6281c9e..42588da 100644
--- a/gen/test/gleam@list_test.erl
+++ b/gen/test/gleam@list_test.erl
@@ -42,14 +42,14 @@ filter_test() ->
[5, 7]
),
gleam@expect:equal(
- gleam@list:filter([0, 4, 5, 7, 3], fun(X) -> X < 4 end),
+ gleam@list:filter([0, 4, 5, 7, 3], fun(X1) -> X1 < 4 end),
[0, 3]
).
map_test() ->
gleam@expect:equal(gleam@list:map([], fun(X) -> X * 2 end), []),
gleam@expect:equal(
- gleam@list:map([0, 4, 5, 7, 3], fun(X) -> X * 2 end),
+ gleam@list:map([0, 4, 5, 7, 3], fun(X1) -> X1 * 2 end),
[0, 8, 10, 14, 6]
).
@@ -126,7 +126,7 @@ all_test() ->
true
),
gleam@expect:equal(
- gleam@list:all([1, 2, 3, 4, 5], fun(X) -> X < 0 end),
+ gleam@list:all([1, 2, 3, 4, 5], fun(X1) -> X1 < 0 end),
false
),
gleam@expect:equal(gleam@list:all([], fun(_) -> false end), true).
@@ -137,7 +137,7 @@ any_test() ->
true
),
gleam@expect:equal(
- gleam@list:any([1, 2, 3, 4, 5], fun(X) -> X < 0 end),
+ gleam@list:any([1, 2, 3, 4, 5], fun(X1) -> X1 < 0 end),
false
),
gleam@expect:equal(gleam@list:any([], fun(_) -> false end), false).
@@ -216,7 +216,7 @@ index_map_test() ->
gleam@list:index_map([3, 4, 5], fun(I, X) -> {I, X} end),
[{0, 3}, {1, 4}, {2, 5}]
),
- F = fun(I, X) -> gleam@string:append(X, gleam@int:to_string(I)) end,
+ F = fun(I1, X1) -> gleam@string:append(X1, gleam@int:to_string(I1)) end,
gleam@expect:equal(
gleam@list:index_map([<<"a">>, <<"b">>, <<"c">>], F),
[<<"a0">>, <<"b1">>, <<"c2">>]
@@ -268,19 +268,19 @@ split_while_test() ->
{[], []}
),
gleam@expect:equal(
- gleam@list:split_while([1, 2, 3, 4, 5], fun(X) -> X =< 5 end),
+ gleam@list:split_while([1, 2, 3, 4, 5], fun(X1) -> X1 =< 5 end),
{[1, 2, 3, 4, 5], []}
),
gleam@expect:equal(
- gleam@list:split_while([1, 2, 3, 4, 5], fun(X) -> X =:= 2 end),
+ gleam@list:split_while([1, 2, 3, 4, 5], fun(X2) -> X2 =:= 2 end),
{[], [1, 2, 3, 4, 5]}
),
gleam@expect:equal(
- gleam@list:split_while([1, 2, 3, 4, 5], fun(X) -> X =< 3 end),
+ gleam@list:split_while([1, 2, 3, 4, 5], fun(X3) -> X3 =< 3 end),
{[1, 2, 3], [4, 5]}
),
gleam@expect:equal(
- gleam@list:split_while([1, 2, 3, 4, 5], fun(X) -> X =< -3 end),
+ gleam@list:split_while([1, 2, 3, 4, 5], fun(X4) -> X4 =< -3 end),
{[], [1, 2, 3, 4, 5]}
).
diff --git a/gen/test/gleam@map_test.erl b/gen/test/gleam@map_test.erl
index 5409e85..50dba1a 100644
--- a/gen/test/gleam@map_test.erl
+++ b/gen/test/gleam@map_test.erl
@@ -145,6 +145,6 @@ fold_test() ->
),
Add = fun(_, V, Acc) -> V + Acc end,
gleam@expect:equal(gleam@map:fold(Dict, 0, Add), 6),
- Concat = fun(K, _, Acc) -> gleam@string:append(Acc, K) end,
+ Concat = fun(K, _, Acc1) -> gleam@string:append(Acc1, K) end,
gleam@expect:equal(gleam@map:fold(Dict, <<"">>, Concat), <<"abcd">>),
gleam@expect:equal(gleam@map:fold(gleam@map:from_list([]), 0, Add), 0).
diff --git a/gen/test/gleam@result_test.erl b/gen/test/gleam@result_test.erl
index ee32547..ae6b760 100644
--- a/gen/test/gleam@result_test.erl
+++ b/gen/test/gleam@result_test.erl
@@ -18,7 +18,7 @@ map_test() ->
{ok, <<"2">>}
),
gleam@expect:equal(
- gleam@result:map({error, 1}, fun(X) -> X + 1 end),
+ gleam@result:map({error, 1}, fun(X1) -> X1 + 1 end),
{error, 1}
).
@@ -28,7 +28,7 @@ map_error_test() ->
{ok, 1}
),
gleam@expect:equal(
- gleam@result:map_error({error, 1}, fun(X) -> {<<"ok">>, X + 1} end),
+ gleam@result:map_error({error, 1}, fun(X1) -> {<<"ok">>, X1 + 1} end),
{error, {<<"ok">>, 2}}
).
@@ -47,7 +47,7 @@ then_test() ->
{error, 1}
),
gleam@expect:equal(
- gleam@result:then({ok, 1}, fun(X) -> {ok, X + 1} end),
+ gleam@result:then({ok, 1}, fun(X1) -> {ok, X1 + 1} end),
{ok, 2}
),
gleam@expect:equal(