From: Mihai Bazon Date: Wed, 5 Sep 2012 11:31:05 +0000 (+0300) Subject: fix for variable names like `toString` X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=c7b484b64fdce8ed922f18376b7edf3cb40112f1;p=UglifyJS.git fix for variable names like `toString` --- diff --git a/lib/scope.js b/lib/scope.js index 0518a49a..adf36493 100644 --- a/lib/scope.js +++ b/lib/scope.js @@ -258,9 +258,10 @@ AST_SymbolRef.DEFMETHOD("reference", function(symbol) { AST_Scope.DEFMETHOD("find_variable", function(name){ if (name instanceof AST_Symbol) name = name.name; - return this.variables[name] || - (this.name && this.name.name == name && this.name) || - (this.parent_scope && this.parent_scope.find_variable(name)); + return HOP(this.variables, name) + ? this.variables[name] + : ((this.name && this.name.name == name && this.name) + || (this.parent_scope && this.parent_scope.find_variable(name))); }); AST_Scope.DEFMETHOD("def_function", function(symbol){ @@ -270,11 +271,10 @@ AST_Scope.DEFMETHOD("def_function", function(symbol){ AST_Scope.DEFMETHOD("def_variable", function(symbol){ symbol.global = !this.parent_scope; - var existing = this.variables[symbol.name]; - if (!existing) { + if (!HOP(this.variables, symbol.name)) { this.variables[symbol.name] = symbol; } else { - symbol.uniq = existing; + symbol.uniq = this.variables[symbol.name]; } symbol.scope = this; });