fix & improve AST_TemplateString (#2410)
- resolve `semicolons:false` ambiguity with tagged literals - allow `side_effects` to work on template literals - traverse `AST_TemplateString` properly fixes #2401
This commit is contained in:
@@ -2230,6 +2230,10 @@ merge(Compressor.prototype, {
|
||||
return expression.has_side_effects(compressor);
|
||||
});
|
||||
});
|
||||
def(AST_TemplateSegment, return_false);
|
||||
def(AST_TemplateString, function(compressor){
|
||||
return any(this.segments, compressor);
|
||||
});
|
||||
})(function(node, func){
|
||||
node.DEFMETHOD("has_side_effects", func);
|
||||
});
|
||||
@@ -2944,6 +2948,11 @@ merge(Compressor.prototype, {
|
||||
def(AST_Expansion, function(compressor, first_in_statement){
|
||||
return this.expression.drop_side_effect_free(compressor, first_in_statement);
|
||||
});
|
||||
def(AST_TemplateSegment, return_null);
|
||||
def(AST_TemplateString, function(compressor){
|
||||
var values = trim(this.segments, compressor, first_in_statement);
|
||||
return values && make_sequence(this, values);
|
||||
});
|
||||
})(function(node, func){
|
||||
node.DEFMETHOD("drop_side_effect_free", func);
|
||||
});
|
||||
@@ -4888,7 +4897,7 @@ merge(Compressor.prototype, {
|
||||
}
|
||||
self.segments = segments;
|
||||
|
||||
return self;
|
||||
return segments.length == 1 ? make_node(AST_String, self, segments[0]) : self;
|
||||
});
|
||||
|
||||
OPT(AST_PrefixedTemplateString, function(self, compressor){
|
||||
|
||||
Reference in New Issue
Block a user