Skip to content

Commit a5b3f42

Browse files
committed
Fix some compiler errors
1 parent 874f9b0 commit a5b3f42

File tree

4 files changed

+26
-19
lines changed

4 files changed

+26
-19
lines changed

lib/elixir_script/passes/translate/form.ex

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,13 +392,26 @@ defmodule ElixirScript.Translate.Form do
392392

393393
defp compile_params(params, state) do
394394
{params, var_decs} = Enum.map_reduce(params, [], fn
395+
({:=, _, [{left_var, _, atom} = left, right]} = ast, acc) when is_atom(atom) ->
396+
case Atom.to_string(left_var) do
397+
"_" <> _ ->
398+
{compile!(right, state), acc}
399+
_ ->
400+
{ast, state} = compile(ast, state)
401+
left = compile!(left, state)
402+
403+
{left, acc ++ List.wrap(ast)}
404+
end
405+
395406
({:=, _, [left, _]} = ast, acc) ->
396407
{ast, state} = compile(ast, state)
397408
left = compile!(left, state)
398409

399410
{left, acc ++ List.wrap(ast)}
400411
(x, acc) ->
401-
{compile!(x, state), acc}
412+
compiled = compile!(x, state)
413+
414+
{compiled, acc}
402415
end)
403416

404417
{var_decs, params}

lib/elixir_script/passes/translate/forms/for.ex

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -96,12 +96,9 @@ defmodule ElixirScript.Translate.Forms.For do
9696

9797

9898
defp create_function_expression(ast, state, module_state) do
99-
{ ast, _ } = Enum.map_reduce(List.wrap(ast), module_state, fn x, acc_state ->
100-
Form.compile(x, acc_state)
101-
end)
102-
10399
ast = ast
104-
|> List.flatten
100+
|> ElixirScript.Translate.Function.compile_block(module_state)
101+
|> elem(0)
105102
|> Clause.return_last_statement
106103

107104
Helpers.arrow_function(

lib/elixir_script/passes/translate/forms/match.ex

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,15 @@ defmodule ElixirScript.Translate.Forms.Match do
5656
defp compile_match(%{patterns: [left], expression: right}, state) do
5757
{ right_ast, state } = Form.compile(right, state)
5858

59-
{var_dec, right_ast} = case right_ast do
60-
[variable_declaration, x] ->
61-
{variable_declaration, x}
59+
{var_decs, right_ast} = case right_ast do
60+
x when is_list(x) ->
61+
l = Enum.reverse(x)
62+
[head | tail] = l
63+
l = Enum.reverse(tail)
64+
65+
{l, head}
6266
x ->
63-
{nil, x}
67+
{[], x}
6468
end
6569

6670
{ patterns, params, state } = Pattern.compile([left], state)
@@ -84,14 +88,7 @@ defmodule ElixirScript.Translate.Forms.Match do
8488
List.wrap(array_pattern)
8589
end
8690

87-
js_ast = case var_dec do
88-
nil ->
89-
js_ast
90-
x ->
91-
[x] ++ js_ast
92-
end
93-
94-
{ js_ast, state }
91+
{ var_decs ++ js_ast, state }
9592
end
9693

9794
defp compile_match(%{patterns: lefts, expression: right}, state) do

lib/elixir_script/passes/translate/function.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ defmodule ElixirScript.Translate.Function do
173173
{ast, state}
174174
end
175175

176-
@spec update_last_call([ESTree.Node.t], map) :: ESTree.Node.t
176+
@spec update_last_call([ESTree.Node.t], map) :: list
177177
def update_last_call(clause_body, %{function: {name, _}, anonymous_fn: anonymous?}) do
178178
last_item = List.last(clause_body)
179179
function_name = ElixirScript.Translate.Identifier.make_function_name(name)

0 commit comments

Comments
 (0)