Skip to content

Commit 39c212e

Browse files
committed
Merge from master
2 parents 703cef3 + 8703a53 commit 39c212e

File tree

8 files changed

+60
-2798
lines changed

8 files changed

+60
-2798
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@ stdlib_state.bin
2222
test/app/build
2323
.vscode
2424
cover
25+
/priv

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
88
### Added
99
- Reimplement `String.split_at/2` to make sure Unicode library isn't compiled
1010

11+
### Fixed
12+
- Make sure not to add underscores to erlang functions
13+
- Make sure any variable names that are javascript keywords are handled properly
14+
1115
## [0.30.0] - 2017-08-15
1216

1317
### Added

lib/elixir_script/passes/translate/form.ex

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,39 @@ defmodule ElixirScript.Translate.Form do
99
alias ElixirScript.Translate.Clause
1010
require Logger
1111

12+
@js_reserved_words [
13+
:break,
14+
:case,
15+
:class,
16+
:const,
17+
:continue,
18+
:debugger,
19+
:default,
20+
:delete,
21+
:do,
22+
:else,
23+
:export,
24+
:extends,
25+
:finally,
26+
:function,
27+
:if,
28+
:import,
29+
:in,
30+
:instanceof,
31+
:new,
32+
:return,
33+
:super,
34+
:switch,
35+
:throw,
36+
:try,
37+
:typeof,
38+
:var,
39+
:void,
40+
:while,
41+
:with,
42+
:yield
43+
]
44+
1245
def compile!(ast, state) do
1346
{js_ast, _} = compile(ast, state)
1447

@@ -369,10 +402,10 @@ defmodule ElixirScript.Translate.Form do
369402
end
370403
end
371404

372-
def compile({:default, meta, _}, state) do
405+
def compile({var, meta, _}, state) when var in @js_reserved_words do
373406
counter = Pattern.get_counter(meta)
374407

375-
var = :__default__
408+
var = String.to_atom("__#{var}__")
376409
var = Pattern.get_variable_name(to_string(var) <> counter, state)
377410
{ ElixirScript.Translate.Identifier.make_identifier(var), state }
378411
end

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ defmodule ElixirScript.Translate.Forms.For do
22
@moduledoc false
33

44
alias ESTree.Tools.Builder, as: JS
5+
<<<<<<< HEAD
56
alias ElixirScript.Translate.{Form, Clause, Identifier, Helpers}
7+
=======
8+
alias ElixirScript.Translate.{Form, Clause, Helpers, Identifier}
9+
>>>>>>> master
610
alias ElixirScript.Translate.Forms.Pattern
711

812
def compile({:for, _, generators}, state) do
@@ -23,7 +27,12 @@ defmodule ElixirScript.Translate.Forms.For do
2327
[JS.array_expression(args.patterns), fun, filter]
2428
)
2529

30+
<<<<<<< HEAD
2631
members = ["Elixir", "Collectable", "__load"]
32+
=======
33+
members = ["Elixir", "Collectable" , "__load"]
34+
35+
>>>>>>> master
2736
collectable = Helpers.call(
2837
Identifier.make_namespace_members(members),
2938
[JS.identifier("Elixir")]

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ defmodule ElixirScript.Translate.Forms.Remote do
5757
def compile({:., _, [module, function]}, state) when module in @erlang_modules do
5858
ast = J.member_expression(
5959
Helpers.core_module(module),
60-
ElixirScript.Translate.Identifier.make_function_name(function)
60+
J.identifier(function)
6161
)
6262

6363
{ ast, state }

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,11 @@
2424
"license": "MIT",
2525
"dependencies": {
2626
"erlang-types": "^1.0.1",
27+
<<<<<<< HEAD
2728
"tailored": "^2.7.1"
29+
=======
30+
"tailored": "^2.7.2"
31+
>>>>>>> master
2832
},
2933
"devDependencies": {
3034
"ava": "^0.21.0",

0 commit comments

Comments
 (0)