From: Fábio Santos Date: Tue, 20 Oct 2015 18:48:56 +0000 (+0100) Subject: Fix #836 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=b5623b19d499748d0b1cf97204180f9d4d2fc4a1;p=UglifyJS.git Fix #836 --- diff --git a/lib/output.js b/lib/output.js index 933a4ce7..7d1e5dbb 100644 --- a/lib/output.js +++ b/lib/output.js @@ -1352,6 +1352,12 @@ function OutputStream(options) { DEFMAP(AST_Finally, basic_sourcemap_gen); DEFMAP(AST_Definitions, basic_sourcemap_gen); DEFMAP(AST_Constant, basic_sourcemap_gen); + DEFMAP(AST_ObjectSetter, function(self, output){ + output.add_mapping(self.start, self.key.name); + }); + DEFMAP(AST_ObjectGetter, function(self, output){ + output.add_mapping(self.start, self.key.name); + }); DEFMAP(AST_ObjectProperty, function(self, output){ output.add_mapping(self.start, self.key); }); diff --git a/test/run-tests.js b/test/run-tests.js index 818a65e4..1e9eb3cb 100755 --- a/test/run-tests.js +++ b/test/run-tests.js @@ -17,6 +17,9 @@ if (failures) { process.exit(1); } +var run_sourcemaps_tests = require('./sourcemaps'); +run_sourcemaps_tests(); + var run_ast_conversion_tests = require("./mozilla-ast"); run_ast_conversion_tests({ diff --git a/test/sourcemaps.js b/test/sourcemaps.js new file mode 100644 index 00000000..7db4672e --- /dev/null +++ b/test/sourcemaps.js @@ -0,0 +1,40 @@ +var UglifyJS = require(".."); +var ok = require("assert"); + +module.exports = function () { + console.log("--- Sourcemaps tests"); + + var basic = source_map([ + 'var x = 1 + 1;' + ].join('\n')); + + ok.equal(basic.version, 3); + ok.deepEqual(basic.names, ['x']); + + var issue836 = source_map([ + "({", + " get enabled() {", + " return 3;", + " },", + " set enabled(x) {", + " ;", + " }", + "});", + ].join("\n")); + + ok.deepEqual(issue836.names, ['enabled', 'x']); +} + +function source_map(js) { + var source_map = UglifyJS.SourceMap(); + var stream = UglifyJS.OutputStream({ source_map: source_map }); + var parsed = UglifyJS.parse(js); + parsed.print(stream); + return JSON.parse(source_map.toString()); +} + +// Run standalone +if (module.parent === null) { + module.exports(); +} +