Skip to content

Commit 0e3d079

Browse files
fix crash when inlining uninitialized variable into template string. Closes #876
1 parent 738350c commit 0e3d079

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

lib/compress/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6245,7 +6245,7 @@ def_optimize(AST_Binary, function(self, compressor) {
62456245
var l = self.left;
62466246
var r = self.right.evaluate(compressor);
62476247
if (r != self.right) {
6248-
l.segments[l.segments.length - 1].value += r.toString();
6248+
l.segments[l.segments.length - 1].value += String(r);
62496249
return l;
62506250
}
62516251
}
@@ -6254,7 +6254,7 @@ def_optimize(AST_Binary, function(self, compressor) {
62546254
var r = self.right;
62556255
var l = self.left.evaluate(compressor);
62566256
if (l != self.left) {
6257-
r.segments[0].value = l.toString() + r.segments[0].value ;
6257+
r.segments[0].value = String(l) + r.segments[0].value;
62586258
return r;
62596259
}
62606260
}

test/compress/template-string.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,26 @@ template_concattenating_string: {
198198
}
199199
}
200200

201+
template_evaluate_undefined: {
202+
options = {
203+
evaluate: true,
204+
reduce_vars: true
205+
}
206+
input: {
207+
// test.js
208+
() => {
209+
let x;
210+
console.log(x + `?ts=${Date.now()}`);
211+
};
212+
}
213+
expect: {
214+
() => {
215+
let x;
216+
console.log(`undefined?ts=${Date.now()}`);
217+
};
218+
}
219+
}
220+
201221
evaluate_nested_templates: {
202222
options = {
203223
evaluate: true

0 commit comments

Comments
 (0)