aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2017-09-15 12:46:48 +0800
committerGitHub <noreply@github.com>2017-09-15 12:46:48 +0800
commit182a47bfb1d49a99a561253edc05e70a6dc5b8e8 (patch)
treec0251f537fd75be1b3d610d88ae831f642de5b1e
parentcd27f4ec38f2899707859459970406ae67c3adb6 (diff)
downloadtracifyjs-182a47bfb1d49a99a561253edc05e70a6dc5b8e8.tar.gz
tracifyjs-182a47bfb1d49a99a561253edc05e70a6dc5b8e8.zip
improve source mapping (#2312)
fixes #2310
-rw-r--r--lib/output.js2
-rw-r--r--test/input/issue-2310/input.js10
-rw-r--r--test/mocha/cli.js19
3 files changed, 30 insertions, 1 deletions
diff --git a/lib/output.js b/lib/output.js
index 6f7b18db..315bfafd 100644
--- a/lib/output.js
+++ b/lib/output.js
@@ -1109,7 +1109,7 @@ function OutputStream(options) {
self.expression.print(output);
if (self instanceof AST_New && !need_constructor_parens(self, output))
return;
- if (self.expression instanceof AST_Lambda) {
+ if (self.expression instanceof AST_Call || self.expression instanceof AST_Lambda) {
output.add_mapping(self.start);
}
output.with_parens(function(){
diff --git a/test/input/issue-2310/input.js b/test/input/issue-2310/input.js
new file mode 100644
index 00000000..ea7c1f33
--- /dev/null
+++ b/test/input/issue-2310/input.js
@@ -0,0 +1,10 @@
+function foo() {
+ return function() {
+ console.log("PASS");
+ };
+}
+
+(function() {
+ var f = foo();
+ f();
+})();
diff --git a/test/mocha/cli.js b/test/mocha/cli.js
index 1d847dc9..85b2e8c9 100644
--- a/test/mocha/cli.js
+++ b/test/mocha/cli.js
@@ -573,6 +573,25 @@ describe("bin/uglifyjs", function () {
return JSON.stringify(map).replace(/"/g, '\\"');
}
});
+ it("Should include function calls in source map", function(done) {
+ var command = [
+ uglifyjscmd,
+ "test/input/issue-2310/input.js",
+ "-c",
+ "--source-map", "url=inline",
+ ].join(" ");
+
+ exec(command, function(err, stdout, stderr) {
+ if (err) throw err;
+
+ assert.strictEqual(stdout, [
+ 'function foo(){return function(){console.log("PASS")}}foo()();',
+ "//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvaW5wdXQvaXNzdWUtMjMxMC9pbnB1dC5qcyJdLCJuYW1lcyI6WyJmb28iLCJjb25zb2xlIiwibG9nIiwiZiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsTUFDTCxPQUFPLFdBQ0hDLFFBQVFDLElBQUksU0FLUkYsS0FDUkcifQ==",
+ ""
+ ].join("\n"));
+ done();
+ });
+ });
it("Should dump AST as JSON", function(done) {
var command = uglifyjscmd + " test/input/global_defs/simple.js -mco ast";
exec(command, function (err, stdout) {