diff --git a/lib/mozilla-ast.js b/lib/mozilla-ast.js index 1deb18e2..749d3179 100644 --- a/lib/mozilla-ast.js +++ b/lib/mozilla-ast.js @@ -163,6 +163,20 @@ end : my_end_token(M), name : M.name }); + }, + ArrayExpression: function (M) { + var start = my_start_token(M); + var end = my_end_token(M); + return new AST_Array({ + start: start, + end: end, + elements: M.elements.map(function (E) { + return E ? from_moz(E) : new AST_Hole({ + start: start, + end: end + }); + }) + }); } }; @@ -199,7 +213,6 @@ map("CatchClause", AST_Catch, "param>argname, body%body"); map("ThisExpression", AST_This); - map("ArrayExpression", AST_Array, "elements@elements"); map("FunctionExpression", AST_Function, "id>name, params@argnames, body%body"); map("BinaryExpression", AST_Binary, "operator=operator, left>left, right>right"); map("LogicalExpression", AST_Binary, "operator=operator, left>left, right>right"); @@ -208,6 +221,13 @@ map("NewExpression", AST_New, "callee>expression, arguments@args"); map("CallExpression", AST_Call, "callee>expression, arguments@args"); + def_to_moz(AST_Array, function To_Moz_ArrayExpression(M) { + return { + type: "ArrayExpression", + elements: M.elements.map(to_moz) + } + }); + def_to_moz(AST_Directive, function To_Moz_Directive(M) { return { type: "ExpressionStatement",