@@ -21,7 +21,7 @@ translate(Meta, Args, Return, S) ->
2121
2222 case comprehension_expr (TInto , TExpr ) of
2323 {inline , TIntoExpr } ->
24- { build_inline (Ann , TCases , TIntoExpr , TInto , TUniq , SF ), SF } ;
24+ build_inline (Ann , TCases , TIntoExpr , TInto , TUniq , SF );
2525 {into , TIntoExpr } ->
2626 build_into (Ann , TCases , TIntoExpr , TInto , TUniq , SF )
2727 end .
@@ -91,17 +91,17 @@ collect_filters([], Acc) ->
9191
9292build_inline (Ann , Clauses , Expr , Into , Uniq , S ) ->
9393 case not Uniq and lists :all (fun (Clause ) -> element (1 , Clause ) == bin end , Clauses ) of
94- true -> build_comprehension (Ann , Clauses , Expr , Into );
94+ true -> { build_comprehension (Ann , Clauses , Expr , Into ), S } ;
9595 false -> build_inline_each (Ann , Clauses , Expr , Into , Uniq , S )
9696 end .
9797
9898build_inline_each (Ann , Clauses , Expr , false , Uniq , S ) ->
9999 InnerFun = fun (InnerExpr , _InnerAcc ) -> InnerExpr end ,
100- build_reduce (Ann , Clauses , InnerFun , Expr , {nil , Ann }, Uniq , S );
100+ { build_reduce (Ann , Clauses , InnerFun , Expr , {nil , Ann }, Uniq , S ), S } ;
101101build_inline_each (Ann , Clauses , Expr , {nil , _ } = Into , Uniq , S ) ->
102102 InnerFun = fun (InnerExpr , InnerAcc ) -> {cons , Ann , InnerExpr , InnerAcc } end ,
103103 ReduceExpr = build_reduce (Ann , Clauses , InnerFun , Expr , Into , Uniq , S ),
104- elixir_erl :remote (Ann , lists , reverse , [ReduceExpr ]);
104+ { elixir_erl :remote (Ann , lists , reverse , [ReduceExpr ]), S } ;
105105build_inline_each (Ann , Clauses , Expr , {bin , _ , []}, Uniq , S ) ->
106106 {InnerValue , SV } = build_var (Ann , S ),
107107
@@ -135,11 +135,21 @@ build_inline_each(Ann, Clauses, Expr, {bin, _, []}, Uniq, S) ->
135135 end ,
136136
137137 ReduceExpr = build_reduce (Ann , Clauses , InnerFun , Expr , {nil , Ann }, Uniq , SV ),
138- elixir_erl :remote (Ann , erlang , iolist_to_binary , [ReduceExpr ]).
138+
139+ {{'case' , Ann , ReduceExpr , [
140+ {clause , Ann ,
141+ [InnerValue ],
142+ [[elixir_erl :remote (Ann , erlang , is_bitstring , [InnerValue ])]],
143+ [InnerValue ]},
144+ {clause , Ann ,
145+ [InnerValue ],
146+ [],
147+ [elixir_erl :remote (Ann , erlang , iolist_to_binary , [InnerValue ])]}
148+ ]}, SV }.
139149
140150build_into (Ann , Clauses , Expr , {map , _ , []}, Uniq , S ) ->
141- ReduceExpr = build_inline_each (Ann , Clauses , Expr , {nil , Ann }, Uniq , S ),
142- {elixir_erl :remote (Ann , maps , from_list , [ReduceExpr ]), S };
151+ { ReduceExpr , SR } = build_inline_each (Ann , Clauses , Expr , {nil , Ann }, Uniq , S ),
152+ {elixir_erl :remote (Ann , maps , from_list , [ReduceExpr ]), SR };
143153build_into (Ann , Clauses , Expr , Into , Uniq , S ) ->
144154 {Fun , SF } = build_var (Ann , S ),
145155 {Acc , SA } = build_var (Ann , SF ),
0 commit comments