diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ast.js | 16 | ||||
-rw-r--r-- | lib/compress.js | 19 | ||||
-rw-r--r-- | lib/mozilla-ast.js | 6 | ||||
-rw-r--r-- | lib/output.js | 3 | ||||
-rw-r--r-- | lib/parse.js | 22 | ||||
-rw-r--r-- | lib/scope.js | 7 |
6 files changed, 17 insertions, 56 deletions
@@ -495,10 +495,10 @@ var AST_Finally = DEFNODE("Finally", null, { $documentation: "A `finally` node; only makes sense as part of a `try` statement" }, AST_Block); -/* -----[ VAR/CONST ]----- */ +/* -----[ VAR ]----- */ var AST_Definitions = DEFNODE("Definitions", "definitions", { - $documentation: "Base class for `var` or `const` nodes (variable declarations/initializations)", + $documentation: "Base class for `var` nodes (variable declarations/initializations)", $propdoc: { definitions: "[AST_VarDef*] array of variable definitions" }, @@ -516,14 +516,10 @@ var AST_Var = DEFNODE("Var", null, { $documentation: "A `var` statement" }, AST_Definitions); -var AST_Const = DEFNODE("Const", null, { - $documentation: "A `const` statement" -}, AST_Definitions); - var AST_VarDef = DEFNODE("VarDef", "name value", { $documentation: "A variable declaration; only appears in a AST_Definitions node", $propdoc: { - name: "[AST_SymbolVar|AST_SymbolConst] name of the variable", + name: "[AST_SymbolVar] name of the variable", value: "[AST_Node?] initializer, or null of there's no initializer" }, _walk: function(visitor) { @@ -728,17 +724,13 @@ var AST_SymbolAccessor = DEFNODE("SymbolAccessor", null, { }, AST_Symbol); var AST_SymbolDeclaration = DEFNODE("SymbolDeclaration", "init", { - $documentation: "A declaration symbol (symbol in var/const, function name or argument, symbol in catch)", + $documentation: "A declaration symbol (symbol in var, function name or argument, symbol in catch)", }, AST_Symbol); var AST_SymbolVar = DEFNODE("SymbolVar", null, { $documentation: "Symbol defining a variable", }, AST_SymbolDeclaration); -var AST_SymbolConst = DEFNODE("SymbolConst", null, { - $documentation: "A constant declaration" -}, AST_SymbolDeclaration); - var AST_SymbolFunarg = DEFNODE("SymbolFunarg", null, { $documentation: "Symbol naming a function argument", }, AST_SymbolVar); diff --git a/lib/compress.js b/lib/compress.js index 1ded032b..892bceef 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -479,8 +479,7 @@ merge(Compressor.prototype, { if (def.fixed === false) return false; if (def.fixed != null && (!value || def.references.length > 0)) return false; return !def.orig.some(function(sym) { - return sym instanceof AST_SymbolConst - || sym instanceof AST_SymbolDefun + return sym instanceof AST_SymbolDefun || sym instanceof AST_SymbolLambda; }); } @@ -497,7 +496,7 @@ merge(Compressor.prototype, { def.escaped = false; if (def.scope.uses_eval) { def.fixed = false; - } else if (!def.global || def.orig[0] instanceof AST_SymbolConst || compressor.toplevel(def)) { + } else if (!def.global || compressor.toplevel(def)) { def.fixed = undefined; } else { def.fixed = false; @@ -531,14 +530,6 @@ merge(Compressor.prototype, { return lhs instanceof AST_SymbolRef && lhs.definition().orig[0] instanceof AST_SymbolLambda; } - function is_reference_const(ref) { - if (!(ref instanceof AST_SymbolRef)) return false; - var orig = ref.definition().orig; - for (var i = orig.length; --i >= 0;) { - if (orig[i] instanceof AST_SymbolConst) return true; - } - } - function find_variable(compressor, name) { var scope, i = 0; while (scope = compressor.parent(i++)) { @@ -804,8 +795,7 @@ merge(Compressor.prototype, { return make_node(AST_SymbolRef, expr.name, expr.name); } } else { - var lhs = expr[expr instanceof AST_Assign ? "left" : "expression"]; - return !is_reference_const(lhs) && lhs; + return expr[expr instanceof AST_Assign ? "left" : "expression"]; } } @@ -1988,7 +1978,6 @@ merge(Compressor.prototype, { && node instanceof AST_Assign && node.operator == "=" && node.left instanceof AST_SymbolRef - && !is_reference_const(node.left) && scope === self) { node.right.walk(tw); return true; @@ -3194,7 +3183,7 @@ merge(Compressor.prototype, { && (left.operator == "++" || left.operator == "--")) { left = left.expression; } else left = null; - if (!left || is_lhs_read_only(left) || is_reference_const(left)) { + if (!left || is_lhs_read_only(left)) { expressions[++i] = cdr; continue; } diff --git a/lib/mozilla-ast.js b/lib/mozilla-ast.js index e97d6191..7d246758 100644 --- a/lib/mozilla-ast.js +++ b/lib/mozilla-ast.js @@ -172,7 +172,7 @@ }); }, VariableDeclaration: function(M) { - return new (M.kind === "const" ? AST_Const : AST_Var)({ + return new AST_Var({ start : my_start_token(M), end : my_end_token(M), definitions : M.declarations.map(from_moz) @@ -208,7 +208,7 @@ Identifier: function(M) { var p = FROM_MOZ_STACK[FROM_MOZ_STACK.length - 2]; return new ( p.type == "LabeledStatement" ? AST_Label - : p.type == "VariableDeclarator" && p.id === M ? (p.kind == "const" ? AST_SymbolConst : AST_SymbolVar) + : p.type == "VariableDeclarator" && p.id === M ? AST_SymbolVar : p.type == "FunctionExpression" ? (p.id === M ? AST_SymbolLambda : AST_SymbolFunarg) : p.type == "FunctionDeclaration" ? (p.id === M ? AST_SymbolDefun : AST_SymbolFunarg) : p.type == "CatchClause" ? AST_SymbolCatch @@ -331,7 +331,7 @@ def_to_moz(AST_Definitions, function To_Moz_VariableDeclaration(M) { return { type: "VariableDeclaration", - kind: M instanceof AST_Const ? "const" : "var", + kind: "var", declarations: M.definitions.map(to_moz) }; }); diff --git a/lib/output.js b/lib/output.js index 33f4c533..0b98825f 100644 --- a/lib/output.js +++ b/lib/output.js @@ -1033,9 +1033,6 @@ function OutputStream(options) { DEFPRINT(AST_Var, function(self, output){ self._do_print(output, "var"); }); - DEFPRINT(AST_Const, function(self, output){ - self._do_print(output, "const"); - }); function parenthesize_for_noin(node, output, noin) { if (!noin) node.print(output); diff --git a/lib/parse.js b/lib/parse.js index 3493f8e6..c432ad7a 100644 --- a/lib/parse.js +++ b/lib/parse.js @@ -916,9 +916,6 @@ function parse($TEXT, options) { case "var": return tmp = var_(), semicolon(), tmp; - case "const": - return tmp = const_(), semicolon(), tmp; - case "with": if (S.input.has_directive("use strict")) { croak("Strict mode may not include a with statement"); @@ -1153,16 +1150,13 @@ function parse($TEXT, options) { }); }; - function vardefs(no_in, in_const) { + function vardefs(no_in) { var a = []; for (;;) { a.push(new AST_VarDef({ start : S.token, - name : as_symbol(in_const ? AST_SymbolConst : AST_SymbolVar), - value : is("operator", "=") - ? (next(), expression(false, no_in)) - : in_const && S.input.has_directive("use strict") - ? croak("Missing initializer in const declaration") : null, + name : as_symbol(AST_SymbolVar), + value : is("operator", "=") ? (next(), expression(false, no_in)) : null, end : prev() })); if (!is("punc", ",")) @@ -1175,15 +1169,7 @@ function parse($TEXT, options) { var var_ = function(no_in) { return new AST_Var({ start : prev(), - definitions : vardefs(no_in, false), - end : prev() - }); - }; - - var const_ = function() { - return new AST_Const({ - start : prev(), - definitions : vardefs(false, true), + definitions : vardefs(no_in), end : prev() }); }; diff --git a/lib/scope.js b/lib/scope.js index c8d7c6bb..ea08d775 100644 --- a/lib/scope.js +++ b/lib/scope.js @@ -156,8 +156,7 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options){ // later. (node.scope = defun.parent_scope).def_function(node); } - else if (node instanceof AST_SymbolVar - || node instanceof AST_SymbolConst) { + else if (node instanceof AST_SymbolVar) { defun.def_variable(node); if (defun !== scope) { node.mark_enclosed(options); @@ -268,7 +267,7 @@ AST_Scope.DEFMETHOD("init_scope_vars", function(parent_scope){ AST_Lambda.DEFMETHOD("init_scope_vars", function(){ AST_Scope.prototype.init_scope_vars.apply(this, arguments); this.uses_arguments = false; - this.def_variable(new AST_SymbolConst({ + this.def_variable(new AST_SymbolFunarg({ name: "arguments", start: this.start, end: this.end @@ -491,8 +490,6 @@ AST_Toplevel.DEFMETHOD("compute_char_frequency", function(options){ } else if (node instanceof AST_Var) base54.consider("var"); - else if (node instanceof AST_Const) - base54.consider("const"); else if (node instanceof AST_Lambda) base54.consider("function"); else if (node instanceof AST_For) |