aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/scope.js20
1 files 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
});
});