Skip to content

Commit 58e7de2

Browse files
committed
Added assignment property
1 parent a37a7df commit 58e7de2

10 files changed

+64
-35
lines changed

Diff for: CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# v2.3.0
2+
* Enhancements:
3+
* Added AssignmentProperty for use with ObjectPattern
4+
* Updated some typespecs to reflect updates in ESTree spec
5+
16
# v2.2.0
27
* Enhancements:
38
* Added structs for JSX AST

Diff for: lib/es_tree/assignment_expression.ex

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
defmodule ESTree.AssignmentExpression do
2-
@type t :: %ESTree.AssignmentExpression{
3-
type: binary,
2+
@type t :: %ESTree.AssignmentExpression{
3+
type: binary,
44
loc: ESTree.SourceLocation.t | nil,
55
operator: ESTree.assignment_operator,
6-
left: ESTree.Pattern.t | ESTree.Expression.t,
6+
left: ESTree.Pattern.t,
77
right: ESTree.Expression.t
88
}
9-
defstruct type: "AssignmentExpression",
10-
loc: nil,
9+
defstruct type: "AssignmentExpression",
10+
loc: nil,
1111
operator: nil,
1212
left: %ESTree.EmptyExpression{},
13-
right: %ESTree.EmptyExpression{}
14-
end
13+
right: %ESTree.EmptyExpression{}
14+
end

Diff for: lib/es_tree/assignment_property.ex

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
defmodule ESTree.AssignmentProperty do
2+
@type t :: %ESTree.AssignmentProperty{
3+
type: binary,
4+
loc: ESTree.SourceLocation.t | nil,
5+
value: ESTree.Pattern.t
6+
}
7+
defstruct type: "Property",
8+
loc: nil,
9+
value: %ESTree.EmptyExpression{}
10+
end

Diff for: lib/es_tree/for_in_statement.ex

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
defmodule ESTree.ForInStatement do
2-
@type t :: %ESTree.ForInStatement{
3-
type: binary,
2+
@type t :: %ESTree.ForInStatement{
3+
type: binary,
44
loc: ESTree.SourceLocation.t | nil,
5-
left: ESTree.VariableDeclaration.t | ESTree.Expression.t ,
5+
left: ESTree.VariableDeclaration.t | ESTree.Pattern.t ,
66
right: ESTree.Expression.t ,
77
body: ESTree.Statement.t
88
}
@@ -11,4 +11,4 @@ defmodule ESTree.ForInStatement do
1111
left: %ESTree.EmptyExpression{},
1212
right: %ESTree.EmptyExpression{},
1313
body: %ESTree.EmptyStatement{}
14-
end
14+
end

Diff for: lib/es_tree/for_of_statement.ex

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
defmodule ESTree.ForOfStatement do
2-
@type t :: %ESTree.ForOfStatement{
3-
type: binary,
2+
@type t :: %ESTree.ForOfStatement{
3+
type: binary,
44
loc: ESTree.SourceLocation.t | nil,
5-
left: ESTree.VariableDeclaration.t | ESTree.Expression.t ,
5+
left: ESTree.VariableDeclaration.t | ESTree.Pattern.t ,
66
right: ESTree.Expression.t ,
7-
body: ESTree.Statement.t
7+
body: ESTree.Statement.t
88
}
9-
defstruct type: "ForOfStatement",
10-
loc: nil,
9+
defstruct type: "ForOfStatement",
10+
loc: nil,
1111
left: %ESTree.EmptyExpression{},
1212
right: %ESTree.EmptyExpression{},
1313
body: %ESTree.EmptyStatement{}
14-
end
14+
end

Diff for: lib/es_tree/node.ex

-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ defmodule ESTree.Node do
88
ESTree.Pattern.t |
99
ESTree.SwitchCase.t |
1010
ESTree.CatchClause.t |
11-
ESTree.Identifier.t |
12-
ESTree.Literal.t |
1311
ESTree.MethodDefinition.t |
1412
ESTree.Class.t |
1513
ESTree.ClassBody.t |

Diff for: lib/es_tree/object_pattern.ex

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
defmodule ESTree.ObjectPattern do
2-
@type t :: %ESTree.ObjectPattern{
2+
@type t :: %ESTree.ObjectPattern{
33
type: binary,
44
loc: ESTree.SourceLocation.t | nil,
5-
properties: [ESTree.Property.t]
5+
properties: [ESTree.AssignmentProperty.t]
66
}
77
defstruct type: "ObjectPattern",
88
loc: nil,
99
properties: []
10-
end
10+
end

Diff for: lib/es_tree/tools/builder.ex

+20-9
Original file line numberDiff line numberDiff line change
@@ -28,24 +28,35 @@ defmodule ESTree.Tools.Builder do
2828
ESTree.SourceLocation.t | nil
2929
) :: ESTree.ArrowFunctionExpression.t
3030
def arrow_function_expression(params, defaults, body, generator \\ false, expression \\ false, loc \\ nil) do
31-
%ESTree.ArrowFunctionExpression{
32-
params: params, defaults: defaults,
33-
body: body, generator: generator, expression: expression, loc: loc
31+
%ESTree.ArrowFunctionExpression{
32+
params: params, defaults: defaults,
33+
body: body, generator: generator, expression: expression, loc: loc
3434
}
3535
end
3636

3737
@spec assignment_expression(
38-
ESTree.assignment_operator,
39-
ESTree.Pattern.t | ESTree.Expression.t,
38+
ESTree.assignment_operator,
39+
ESTree.Pattern.t,
4040
ESTree.Expression.t,
4141
ESTree.SourceLocation.t | nil
4242
) :: ESTree.AssignmentExpression.t
4343
def assignment_expression(operator, left, right, loc \\ nil) do
44-
%ESTree.AssignmentExpression{
44+
%ESTree.AssignmentExpression{
4545
operator: operator, left: left, right: right, loc: loc
4646
}
4747
end
4848

49+
@spec assignment_property(
50+
ESTree.Pattern.t,
51+
ESTree.SourceLocation.t | nil
52+
) :: ESTree.AssignmentProperty.t
53+
def assignment_property(value, loc \\ nil) do
54+
%ESTree.AssignmentProperty{
55+
value: value, loc: loc
56+
}
57+
end
58+
59+
4960
@spec await_expression(
5061
ESTree.Expression.t | nil,
5162
boolean,
@@ -259,19 +270,19 @@ defmodule ESTree.Tools.Builder do
259270
end
260271

261272
@spec for_in_statement(
262-
ESTree.VariableDeclaration.t | ESTree.Expression.t,
273+
ESTree.VariableDeclaration.t | ESTree.Pattern.t,
263274
ESTree.Expression.t,
264275
ESTree.Statement.t,
265276
ESTree.SourceLocation.t | nil
266277
) :: ESTree.ForInStatement.t
267278
def for_in_statement(left, right, body, loc \\ nil) do
268-
%ESTree.ForInStatement{
279+
%ESTree.ForInStatement{
269280
left: left, right: right, body: body, loc: loc
270281
}
271282
end
272283

273284
@spec for_of_statement(
274-
ESTree.VariableDeclaration.t | ESTree.Expression.t,
285+
ESTree.VariableDeclaration.t | ESTree.Pattern.t,
275286
ESTree.Expression.t,
276287
ESTree.Statement.t,
277288
ESTree.SourceLocation.t | nil

Diff for: lib/es_tree/tools/generator.ex

+7-2
Original file line numberDiff line numberDiff line change
@@ -456,9 +456,9 @@ defmodule ESTree.Tools.Generator do
456456
else
457457
""
458458
end
459-
459+
460460
params = params_and_defaults(ast.params, ast.defaults)
461-
461+
462462
"(#{params})#{generator} => #{generate(ast.body)}"
463463
end
464464

@@ -474,6 +474,11 @@ defmodule ESTree.Tools.Generator do
474474
"{" <> Enum.map_join(properties, ",", &generate(&1)) <> "}"
475475
end
476476

477+
def do_generate(%ESTree.AssignmentProperty{ value: value }, _) do
478+
value = generate(value)
479+
"#{value}"
480+
end
481+
477482
def do_generate(%ESTree.ArrayPattern{elements: elements}, level) do
478483
"[" <> Enum.map_join(elements, ",", &generate(&1)) <> "]"
479484
end

Diff for: mix.exs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ defmodule ESTree.Mixfile do
33

44
def project do
55
[app: :estree,
6-
version: "2.2.0",
6+
version: "2.3.0",
77
elixir: "~> 1.0",
88
deps: deps,
99
description: description,

0 commit comments

Comments
 (0)