JSDOC/ScopeParser.js
authorAlan Knowles <alan@akbkhome.com>
Thu, 15 Jul 2010 08:04:06 +0000 (16:04 +0800)
committerAlan Knowles <alan@akbkhome.com>
Thu, 15 Jul 2010 08:04:06 +0000 (16:04 +0800)
JSDOC/ScopeParser.js

index c8ed336..127a1a9 100644 (file)
@@ -223,10 +223,12 @@ ScopeParser.prototype = {
         
         var isObjectLitAr = [ false ];
         var isInObjectLitAr;
-        if (scope) {
+        thisScope = scope;
+        if (thisScope) {
             this.scopes.push(scope);
+        } else {
+            thisScope = this.scopes[scopes.length-1]
         }
-        
        
         //var scopeIndent = ''; 
         //this.scopes.forEach(function() {
@@ -275,10 +277,10 @@ ScopeParser.prototype = {
                         
 
                         if (this.mode == "BUILDING_SYMBOL_TREE") {
-                            identifier = scope.getIdentifier(token.data) ;
+                            identifier = thisScope.getIdentifier(token.data) ;
                             
                             if (identifier == false) {
-                                scope.declareIdentifier(token.data, token);
+                                thisScope.declareIdentifier(token.data, token);
                             } else {
                                 token.identifier = identifier;
                                 this.warn("(SCOPE) The variable " + token.data  + ' (line:' + token.line + ")  has already been declared in the same scope...");
@@ -346,7 +348,7 @@ ScopeParser.prototype = {
                             // key value..
                             
                             this.ts = new TokenStream(token.props[prop].val);
-                            this.parseScope(scope);
+                            this.parseScope(false);
                             
                         }
                         this.ts = curTS;
@@ -360,7 +362,7 @@ ScopeParser.prototype = {
                     var _this = this;
                     token.items.forEach(function(expr) {
                           _this.ts = new TokenStream(expr);
-                          _this.parseExpression(scope)
+                          _this.parseExpression()
                     });
                     this.ts = curTS;
                     //print("NOT PROPS"); Seed.quit();
@@ -403,7 +405,7 @@ ScopeParser.prototype = {
                         // object member. As a consequence, the only thing we can
                         // do is turn the obfuscation off for the highest scope
                         // containing the 'with' block.
-                        this.protectScopeFromObfuscation(scope);
+                        this.protectScopeFromObfuscation(thisScope);
                         this.warn("Using 'with' is not recommended." + (this.munge ? " Moreover, using 'with' reduces the level of compression!" : ""), true);
                     }
                     break;
@@ -495,7 +497,7 @@ ScopeParser.prototype = {
                         //println("GOT IDENT: <B>" + symbol + "</B><BR/>");
                              
                             //println("GOT IDENT (2): <B>" + symbol + "</B><BR/>");
-                        identifier = this.getIdentifier(symbol, scope);
+                        identifier = this.getIdentifier(symbol, thisScope);
                         
                         if (identifier == false) {
 // BUG!find out where builtin is defined...
@@ -535,7 +537,7 @@ ScopeParser.prototype = {
                                 var _t = this;
                                 this.ts.look(-1).data.replace(/eval:var:([a-z_]+)/ig, function(m, a) {
                                     
-                                    var hi = _t.getIdentifier(a, scope);
+                                    var hi = _t.getIdentifier(a, thisScope);
                                    // println("PROTECT "+a+" from munge" + (hi ? "FOUND" : "MISSING"));
                                     if (hi) {
                                      //   println("PROTECT "+a+" from munge");
@@ -548,7 +550,7 @@ ScopeParser.prototype = {
                             } else {
                                 
                             
-                                this.protectScopeFromObfuscation(scope);
+                                this.protectScopeFromObfuscation(thisScope);
                                 this.warn("Using 'eval' is not recommended. (use  eval:var:noreplace in comments to optimize) " + (this.munge ? " Moreover, using 'eval' reduces the level of compression!" : ""), true);
                             }