diff options
author | Jez Ng <me@jezng.com> | 2013-06-19 04:53:35 -0700 |
---|---|---|
committer | Jez Ng <me@jezng.com> | 2013-06-19 14:15:18 -0700 |
commit | 0f73e28bab1c1b8caa8f7b77692bebd705bebe6a (patch) | |
tree | 3fab252ab22e525118b7aa1396854363afbe7548 /tools/eliminator | |
parent | 0c3cb9305358d34d0f7cdcee6cdb3d60a7b4b507 (diff) |
Map source lines for assignment statements.
Diffstat (limited to 'tools/eliminator')
-rw-r--r-- | tools/eliminator/node_modules/uglify-js/lib/process.js | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/tools/eliminator/node_modules/uglify-js/lib/process.js b/tools/eliminator/node_modules/uglify-js/lib/process.js index 70a4b0a4..660001aa 100644 --- a/tools/eliminator/node_modules/uglify-js/lib/process.js +++ b/tools/eliminator/node_modules/uglify-js/lib/process.js @@ -58,6 +58,18 @@ var jsp = require("./parse-js"), PRECEDENCE = jsp.PRECEDENCE, OPERATORS = jsp.OPERATORS; +function NodeWithLine(str, line) { + this.str = str; + this.line = line; +} + +NodeWithLine.prototype = new String(); +NodeWithLine.prototype.toString = function() { return this.str; } +NodeWithLine.prototype.lineComment = function() { return " // @line " + this.line; } + +// XXX ugly hack +String.prototype.lineComment = function() { return ""; } + /* -----[ helper for AST traversal ]----- */ function ast_walker() { @@ -339,6 +351,7 @@ var SPLICE_NEEDS_BRACKETS = jsp.array_to_hash([ "if", "while", "do", "for", "for function gen_code(ast, options) { options = defaults(options, { + debug: false, indent_start : 0, indent_level : 4, quote_keys : false, @@ -470,8 +483,7 @@ function gen_code(ast, options) { "num": make_num, "name": make_name, "toplevel": function(statements) { - return make_block_statements(statements) - .join(newline + newline); + return make_block_statements(statements).join(newline + newline); }, "splice": function(statements) { var parent = w.parent(); @@ -542,7 +554,10 @@ function gen_code(ast, options) { "assign": function(op, lvalue, rvalue) { if (op && op !== true) op += "="; else op = "="; - return add_spaces([ make(lvalue), op, parenthesize(rvalue, "seq") ]); + var s = add_spaces([ make(lvalue), op, parenthesize(rvalue, "seq") ]); + if (options.debug && lvalue[0].start) + return new NodeWithLine(s, lvalue[0].start.line); + return s; }, "dot": function(expr) { var out = make(expr), i = 1; @@ -596,8 +611,9 @@ function gen_code(ast, options) { }, "return": function(expr) { var out = [ "return" ]; - if (expr != null) out.push(make(expr)); - return add_spaces(out) + ";"; + var str = make(expr); + if (expr != null) out.push(str); + return add_spaces(out) + ";" + str.lineComment(); }, "binary": function(operator, lvalue, rvalue) { var left = make(lvalue), right = make(rvalue); @@ -673,7 +689,8 @@ function gen_code(ast, options) { })), "]" ]); }, "stat": function(stmt) { - return make(stmt).replace(/;*\s*$/, ";"); + var str = make(stmt); + return str.replace(/;*\s*$/, ";") + str.lineComment(); }, "seq": function() { return add_commas(MAP(slice(arguments), make)); |