Skip to content

Commit e25a938

Browse files
committed
Removed raise.ex and moved code into kernel.ex
1 parent 093e89d commit e25a938

5 files changed

Lines changed: 33 additions & 60 deletions

File tree

lib/elixir_script/translator/kernel.ex

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ defmodule ElixirScript.Translator.Kernel do
22
@moduledoc false
33
alias ESTree.Tools.Builder, as: JS
44
alias ElixirScript.Translator
5+
alias ElixirScript.Translator.Map
56
alias ElixirScript.Translator.Function
67
alias ElixirScript.Translator.Expression
78
alias ElixirScript.Translator.Raise
@@ -58,7 +59,7 @@ defmodule ElixirScript.Translator.Kernel do
5859
Translator.translate(fun, env),
5960
JS.identifier(:apply)
6061
),
61-
[JS.identifier(:this)] ++ Enum.map(args, &Translator.translate(&1, env))
62+
[JS.identifier(:null)] ++ Enum.map(args, &Translator.translate(&1, env))
6263
)
6364
end
6465

@@ -71,7 +72,7 @@ defmodule ElixirScript.Translator.Kernel do
7172
),
7273
JS.identifier(:apply)
7374
),
74-
[JS.identifier(:this)] ++ Enum.map(args, &Translator.translate(&1, env))
75+
[JS.identifier(:null)] ++ Enum.map(args, &Translator.translate(&1, env))
7576
)
7677
end
7778

@@ -190,11 +191,32 @@ defmodule ElixirScript.Translator.Kernel do
190191
defp do_translate({:raise, _, [alias_info, attributes]}, env) do
191192
{_, _, name} = alias_info
192193

193-
Raise.throw_error(name, attributes, env)
194+
JS.throw_statement(
195+
JS.call_expression(
196+
JS.member_expression(
197+
JS.identifier(List.last(name)),
198+
JS.identifier(:defexception)
199+
),
200+
Enum.map(attributes, fn({k, v})->
201+
JS.assignment_expression(
202+
:=,
203+
JS.identifier(k),
204+
Translator.translate(v, env)
205+
)
206+
end)
207+
)
208+
)
194209
end
195210

196211
defp do_translate({:raise, _, [message]}, env) do
197-
Raise.throw_error(message, env)
212+
JS.throw_statement(
213+
JS.object_expression(
214+
[
215+
Map.make_property(Translator.translate(:__struct__, env), Translator.translate(:RuntimeError, env)),
216+
Map.make_property(Translator.translate(:message, env), JS.literal(message))
217+
]
218+
)
219+
)
198220
end
199221

200222
defp do_translate({:to_string, _, [param]}, env) when is_binary(param) do

lib/elixir_script/translator/raise.ex

Lines changed: 0 additions & 48 deletions
This file was deleted.

lib/elixir_script/translator/try.ex

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
defmodule ElixirScript.Translator.Try do
22
@moduledoc false
33
alias ESTree.Tools.Builder, as: JS
4-
alias ElixirScript.Translator
54
alias ElixirScript.Translator.Function
6-
alias ElixirScript.Translator.Case
7-
alias ElixirScript.Translator.Utils
85

96
@error_identifier JS.identifier(:e)
107

@@ -100,8 +97,8 @@ defmodule ElixirScript.Translator.Try do
10097

10198
defp convert_to_struct(module) do
10299
case module do
103-
{:__aliases__, _, _} = _alias->
104-
{:%, [], [_alias, {:%{}, [], []}]}
100+
{:__aliases__, _, _} = alias_ast->
101+
{:%, [], [alias_ast, {:%{}, [], []}]}
105102
ast ->
106103
ast
107104
end

mix.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
%{"benchfella": {:hex, :benchfella, "0.2.1"},
2-
"dogma": {:git, "https://github.com/lpil/dogma.git", "5a8eb42845bcc649659710d5d27942fa9a3c6421", []},
2+
"dogma": {:hex, :dogma, "0.0.7"},
33
"earmark": {:hex, :earmark, "0.1.17"},
44
"estree": {:hex, :estree, "2.0.1"},
55
"ex_doc": {:hex, :ex_doc, "0.9.0"},

test/translator/struct_test.exs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ defmodule ElixirScript.Translator.Struct.Test do
161161
end
162162

163163
js_code = """
164-
throw new MyAppError(MyAppError.defexception(message='did not get what was expected'));
164+
throw MyAppError.defexception(message = 'did not get what was expected');
165165
"""
166166

167167
assert_translation(ex_ast, js_code)
@@ -172,7 +172,9 @@ defmodule ElixirScript.Translator.Struct.Test do
172172
end
173173

174174
js_code = """
175-
throw new RuntimeError({__struct__: Kernel.SpecialForms.atom('RuntimeError'), message: 'did not get what was expected'});
175+
throw {
176+
[Kernel.SpecialForms.atom('__struct__')]: Kernel.SpecialForms.atom('RuntimeError'), [Kernel.SpecialForms.atom('message')]: 'did not get what was expected'
177+
};
176178
"""
177179

178180
assert_translation(ex_ast, js_code)

0 commit comments

Comments
 (0)