diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2018-01-05 19:36:02 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-05 19:36:02 +0800 |
commit | 7f2a591c7ecdb13a20bbad5e7c614672dd890431 (patch) | |
tree | b910855717b17a1b9edee369458769d46ac21b76 | |
parent | afbcebddf63c7ffa5b0df9b3712ee3b560918f1e (diff) | |
download | tracifyjs-7f2a591c7ecdb13a20bbad5e7c614672dd890431.tar.gz tracifyjs-7f2a591c7ecdb13a20bbad5e7c614672dd890431.zip |
warn on deprecated features (#2726)
- `function.arguments`
- `function.callers`
fixes #2719
-rw-r--r-- | lib/compress.js | 8 | ||||
-rw-r--r-- | test/compress/issue-2719.js | 32 |
2 files changed, 40 insertions, 0 deletions
diff --git a/lib/compress.js b/lib/compress.js index 3a3aac4f..e824d6ff 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -5461,6 +5461,14 @@ merge(Compressor.prototype, { }); OPT(AST_Dot, function(self, compressor){ + if (self.property == "arguments" || self.property == "caller") { + compressor.warn("Function.protoype.{prop} not supported [{file}:{line},{col}]", { + prop: self.property, + file: self.start.file, + line: self.start.line, + col: self.start.col + }); + } var def = self.resolve_defines(compressor); if (def) { return def.optimize(compressor); diff --git a/test/compress/issue-2719.js b/test/compress/issue-2719.js new file mode 100644 index 00000000..93e51d7c --- /dev/null +++ b/test/compress/issue-2719.js @@ -0,0 +1,32 @@ +warn: { + options = { + evaluate: true, + inline: true, + passes: 2, + properties: true, + reduce_funcs: true, + reduce_vars: true, + toplevel: true, + unused: true, + } + input: { + function f() { + return g(); + } + function g() { + return g["call" + "er"].arguments; + } + // 3 + console.log(f(1, 2, 3).length); + } + expect: { + // TypeError: Cannot read property 'arguments' of null + console.log(function g() { + return g.caller.arguments; + }().length); + } + expect_warnings: [ + "WARN: Function.protoype.caller not supported [test/compress/issue-2719.js:17,19]", + "WARN: Function.protoype.arguments not supported [test/compress/issue-2719.js:17,19]", + ] +} |