JSDOC/Walker2.js
[gnome.introspection-doc-generator] / JSDOC / Walker2.js
index b1368d7..a96d1f4 100644 (file)
@@ -4,7 +4,7 @@ XObject      = imports.XObject.XObject;
 Scope        = imports.Scope.Scope;
 DocComment   = imports.DocComment.DocComment;
 Symbol       = imports.Symbol.Symbol;
-Parser       = imports.Parser.Parser;
+
 
 /**
 * Scope stuff
@@ -159,11 +159,11 @@ Walker2 = XObject.define(
                 print("TOK"+ token.toString());
                 //  this.timerPrint("parseScope AFTER lookT: " + token.toString()); 
                   
-                if (token.is('WHIT')) {
+                if (token.is('COMM')) {
                       
                  
                     if (token.name != 'JSDOC') {
-                        print("Walker2 : spce is not JSDOC");
+                        //print("Walker2 : spce is not JSDOC");
                         continue; //skip.
                     }
                     if (this.currentDoc) {
@@ -179,7 +179,7 @@ Walker2 = XObject.define(
                     
                     // it's a scope changer..
                     if (newDoc.getTag("scope").length) {
-                        print("Walker2 : doctag changes scope");
+                        //print("Walker2 : doctag changes scope");
                         //throw "done";
                         scope.ident = '$private$|' + newDoc.getTag("scope")[0].desc;
                         continue;
@@ -189,7 +189,7 @@ Walker2 = XObject.define(
                     if (newDoc.getTag("scopeAlias").length) {
                         //print(newDoc.getTag("scopeAlias").toSource());
                         // @scopeAlias a=b
-                        print("Walker2 : doctag changes scope (alias)");
+                        //print("Walker2 : doctag changes scope (alias)");
                         var sal = newDoc.getTag("scopeAlias")[0].desc.split("=");
                         aliases[sal[0]] = sal[1];
                         
@@ -199,7 +199,7 @@ Walker2 = XObject.define(
                     
                     /// got a  doc comment..
                     //token.data might be this.??? (not sure though)
-                    print("Walker2 : setting currentDoc");
+                    //print("Walker2 : setting currentDoc");
                     this.currentDoc = newDoc;
                     continue;
                 }
@@ -211,8 +211,8 @@ Walker2 = XObject.define(
                 // things that stop comments carrying on...??
                 
                 if (this.currentDoc && (
-                        token.tokN.data == ';' || 
-                        token.tokN.data == '}')) {
+                        token.data == ';' || 
+                        token.data == '}')) {
                     this.addSymbol('', true);
                     //throw "Unconsumed Doc ("+ token.toString() +"): " + this.currentDoc.toSource();
                 }
@@ -247,7 +247,7 @@ Walker2 = XObject.define(
                     // a  << scope
                 // xxx.applyIf(a, {
                     // a  << scope
-                if (token.type = 'NAME') {
+                if (token.type == 'NAME') {
                     
                     //print("TOK(ident)"+ token.toString());
                     
@@ -460,7 +460,7 @@ Walker2 = XObject.define(
                         //print("ADD SYM:" + atype + ":" + token.toString() + this.ts.lookTok(1).toString() + this.ts.lookTok(2).toString());
                         
                         this.addSymbol(
-                            this.ts.lookTok(-1).tokN == Script.TOKdot ? token.data :    fixAlias(token.data),
+                            this.ts.lookTok(-1).data == '.' ? token.data :    fixAlias(token.data),
                             false,
                             atype);
                         
@@ -469,7 +469,11 @@ Walker2 = XObject.define(
                     
                     continue; // dont care about other idents..
                     
-                }        
+                }
+                
+                print ("NOT NAME");
+                
+                
                 if (token.type == "STRN")   {
                     if (this.currentDoc) {
                         this.addSymbol(token.data.substring(1,token.data.length-1),false,'OBJECT');
@@ -481,7 +485,7 @@ Walker2 = XObject.define(
                 
                 
                  if (token.name == 'FUNCTION') {
-                     
+                    print("GOT FUNCTION");
                     // see if we have an unconsumed doc...
                     
                     if (this.currentDoc) {
@@ -568,7 +572,7 @@ Walker2 = XObject.define(
                             (this.ts.lookTok(-2).type == 'NAME') &&
                             (this.ts.lookTok(-3).data == '(' || this.ts.lookTok(-3).data== ',') 
                         ) {
-                        //print("got for : function() {"); 
+                        print("got for : function() {"); 
                             
                         //scopeName = this.ts.look(-3).data;
                         this.ts.balanceN(Script.TOKlparen);
@@ -740,7 +744,8 @@ Walker2 = XObject.define(
          
         addSymbol: function(lastIdent, appendIt, atype )
         {
-            print("addSymbol : " + lastIndent);
+            print("Walker.addSymbol : " + lastIdent);
+            
             /*if (!this.currentDoc.tags.length) {
                 
               
@@ -761,7 +766,7 @@ Walker2 = XObject.define(
                 return;
             }
             
-            var token = this.ts.cur();
+            var token = this.ts.lookTok(0);
             if (typeof(appendIt) == 'undefined') {
                 appendIt= false;
             }
@@ -816,7 +821,7 @@ Walker2 = XObject.define(
                 
                 /// calc scope!!
                 //print("ADDING SYMBOL: "+ s.join('|') +"\n"+ _s + "\n" +Script.prettyDump(this.currentDoc.toSource()));
-                
+                print("Walker.addsymbol - add : " + _s);
                 if (appendIt && !lastIdent.length) {
                     
                     // append, and no symbol???
@@ -825,6 +830,7 @@ Walker2 = XObject.define(
                     if (this.currentDoc.getTag('class').length) {
                         _s = this.currentDoc.getTag('class')[0].desc;
                         var symbol = new Symbol(_s, [], "CONSTRUCTOR", this.currentDoc);
+                        Parser       = imports.Parser.Parser;
                         Parser.addSymbol(symbol);
                         this.symbols[_s] = symbol;
                         return;
@@ -850,22 +856,30 @@ Walker2 = XObject.define(
                     return;
                 }
             }    
+            print("Walker.addsymbol - chkdup: " + _s);
             if (typeof(this.symbols[_s]) != 'undefined') {
                 
                 if (this.symbols[_s].comment.hasTags) {
                     // then existing comment doesnt has tags 
-                     throw "DUPLICATE Symbol " + _s;
+                    throw {
+                        name: "ArgumentError", 
+                        message:"DUPLICATE Symbol " + _s
+                    };
+                     
                 }
                 // otherwise existing comment has tags - overwrite..
                 
                 
             }
+            print("Walker.addsymbol - ATYPE: " + _s);
+
             if (typeof(atype) == "undefined") {
                 atype = 'OBJECT'; //this.currentDoc.getTag('class').length ? 'OBJECT' : 'FUNCTION';;
                }
             
+            print("Walker.addsymbol - add : ");
             var symbol = new Symbol(_s, [], atype, this.currentDoc);
-            
+            Parser       = imports.Parser.Parser;
             Parser.addSymbol(symbol);
             this.symbols[_s] = symbol;