From: Richard van Velzen Date: Sat, 31 Jan 2015 12:22:07 +0000 (+0100) Subject: Drop all `console` statements properly X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=605362f89da444e46bae35e7f9384b5cba2eeb80;p=UglifyJS.git Drop all `console` statements properly Because the base reference can be an member expression as well, we have to dig a bit deeper to find the leftmost base reference. Fixes #451 --- diff --git a/lib/compress.js b/lib/compress.js index ae20d485..27285984 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1873,11 +1873,16 @@ merge(Compressor.prototype, { } } if (compressor.option("drop_console")) { - if (self.expression instanceof AST_PropAccess && - self.expression.expression instanceof AST_SymbolRef && - self.expression.expression.name == "console" && - self.expression.expression.undeclared()) { - return make_node(AST_Undefined, self).transform(compressor); + if (self.expression instanceof AST_PropAccess) { + var name = self.expression.expression; + while (name.expression) { + name = name.expression; + } + if (name instanceof AST_SymbolRef + && name.name == "console" + && name.undeclared()) { + return make_node(AST_Undefined, self).transform(compressor); + } } } return self.evaluate(compressor)[0]; diff --git a/test/compress/drop-console.js b/test/compress/drop-console.js new file mode 100644 index 00000000..162b339c --- /dev/null +++ b/test/compress/drop-console.js @@ -0,0 +1,24 @@ +drop_console_1: { + options = {}; + input: { + console.log('foo'); + console.log.apply(console, arguments); + } + expect: { + console.log('foo'); + console.log.apply(console, arguments); + } +} + +drop_console_1: { + options = { drop_console: true }; + input: { + console.log('foo'); + console.log.apply(console, arguments); + } + expect: { + // with regular compression these will be stripped out as well + void 0; + void 0; + } +}