From e37b67d013c4537a36bb3c24f4f99e72efbf6d4b Mon Sep 17 00:00:00 2001 From: Richard van Velzen Date: Sun, 4 Jan 2015 20:53:19 +0100 Subject: Add an option to prevent function names from being mangled See #552. This is mostly useful for having the actual function names in traces. --- lib/scope.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/scope.js b/lib/scope.js index d252d535..73442a30 100644 --- a/lib/scope.js +++ b/lib/scope.js @@ -57,9 +57,14 @@ function SymbolDef(scope, index, orig) { SymbolDef.prototype = { unmangleable: function(options) { - return (this.global && !(options && options.toplevel)) + if (!options) options = {}; + + return (this.global && !options.toplevel) || this.undeclared - || (!(options && options.eval) && (this.scope.uses_eval || this.scope.uses_with)); + || (!options.eval && (this.scope.uses_eval || this.scope.uses_with)) + || (options.keep_fnames + && (this.orig[0] instanceof AST_SymbolLambda + || this.orig[0] instanceof AST_SymbolDefun)); }, mangle: function(options) { if (!this.mangled_name && !this.unmangleable(options)) { @@ -322,11 +327,12 @@ AST_Symbol.DEFMETHOD("global", function(){ AST_Toplevel.DEFMETHOD("_default_mangler_options", function(options){ return defaults(options, { - except : [], - eval : false, - sort : false, - toplevel : false, - screw_ie8 : false + except : [], + eval : false, + sort : false, + toplevel : false, + screw_ie8 : false, + keep_fnames : false }); }); -- cgit v1.2.3