Fix #836
authorFábio Santos <fabiosantosart@gmail.com>
Tue, 20 Oct 2015 18:48:56 +0000 (19:48 +0100)
committerFábio Santos <fabiosantosart@gmail.com>
Tue, 20 Oct 2015 18:48:56 +0000 (19:48 +0100)
lib/output.js
test/run-tests.js
test/sourcemaps.js [new file with mode: 0644]

index 933a4ce..7d1e5db 100644 (file)
@@ -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);
     });
index 818a65e..1e9eb3c 100755 (executable)
@@ -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 (file)
index 0000000..7db4672
--- /dev/null
@@ -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();
+}
+