X-Git-Url: http://git.roojs.org/?p=gnome.introspection-doc-generator;a=blobdiff_plain;f=JSDOC%2FScope.js;h=ed5202af818616e088e98ecf4da81b287ab29744;hp=05a7cdb904422c3fc886928353f6e599a598498c;hb=15d8f50209e07792458b915a0ef44673b687930e;hpb=1ea7a7967bb830099dfc3040bbd3b4326782b529
diff --git a/JSDOC/Scope.js b/JSDOC/Scope.js
index 05a7cdb..ed5202a 100644
--- a/JSDOC/Scope.js
+++ b/JSDOC/Scope.js
@@ -6,11 +6,12 @@
* // FIXME - I need this to do next() without doccomments..
*/
-Identifier = imports['JSDOC/Identifier.js'].Identifier
-XObject = imports.XObject.XObject;
+const Identifier = imports.Identifier.Identifier
+const XObject = imports.XObject.XObject;
+Scope.id = 1;
-function Scope(braceN, parent, startTokN, lastIdent)
+function Scope(braceN, parent, startTokN, lastIdent, token)
{
if (lastIdent.length) {
// println("NEW SCOPE: " + lastIdent);
@@ -18,14 +19,15 @@ function Scope(braceN, parent, startTokN, lastIdent)
this.braceN = braceN
this.parent = parent;
- this.id = startTokN;
+ this.id = Scope.id++;
this.identifiers = { };
this.subScopes = [];
this.hints = { };
this.ident = lastIdent;
-
-
- //println("ADD SCOPE(" + this.id + ") TO "+ (parent ? this.parent.id : 'TOP') + "
");
+ this.gid = Scope.gid++;
+ this.token = token;
+ //print("ADD SCOPE(" + this.gid + ") TO "+ (parent ? this.parent.gid : 'TOP') + ' : ' +
+ // (token ? token.toString() : ''));
if (parent) {
this.parent.subScopes.push(this);
@@ -52,9 +54,37 @@ Scope.prototype = {
munged : false,
protectedVars : {}, // only used by to parent..
- declareIdentifier : function(symbol, token) {
+
+ /**
+ * dump the scope to StdOut...
+ *
+ */
+ dump : function(indent)
+ {
+ indent = indent || '';
+ var str = '';
+ for (var k in this.identifiers) {
+ str += str.length ? ", " : "";
+ str += k + '=>' + this.identifiers[k].mungedValue;
+ }
+
+ print(
+ indent + "Scope: " + this.id + "\n" +
+ indent + "Started: " + ( this.token ? this.token.line : 'TOP' ) + "\n" +
+ indent + "- " + str + "\n"
+ );
+ this.subScopes.forEach(function(s) {
+ s.dump(indent + ' ');
+ });
+
+
+ },
+
+
+ declareIdentifier : function(symbol, token)
+ {
- //println("ADD IDENT(" + this.id + "):" + symbol+"
");
+ //print("SCOPE : " + this.gid + " :SYM: " + symbol + " " + token.toString()+"");
if (typeof(this.identifiers[symbol])== 'undefined') {
@@ -69,11 +99,22 @@ Scope.prototype = {
// then it's global...
this.identifiers[symbol].toMunge = false;
}
+
+
this.addToParentScope(symbol);
return this.identifiers[symbol];
},
- getIdentifier : function(symbol) {
- return (typeof(this.identifiers[symbol])== 'undefined') ? false : this.identifiers[symbol];
+ getIdentifier : function(symbol, token) {
+ if (typeof(this.identifiers[symbol])== 'undefined') {
+ if (['String', 'Date'].indexOf(symbol)> -1) {
+ return false;
+ }
+
+ //print("SCOPE : " + this.gid +" = SYMBOL NOT FOUND?" + token.toString());
+ return false;
+ }
+ //print("SCOPE : " + this.gid +" = FOUND:" + token.toString());
+ return this.identifiers[symbol];
},
addHint : function(varName, varType) {
@@ -178,10 +219,10 @@ Scope.prototype = {
if (this.parent) {
var all = [];
- for (var i in this.identifiers) {
- all.push(i);
+ for (var ii in this.identifiers) {
+ all.push(ii);
}
- print("MUNGE: " + all.join(', '));
+ //print("MUNGE: " + all.join(', '));
//println("MUNGE: Building FreeSyms:" + this.id+"");
@@ -210,23 +251,26 @@ Scope.prototype = {
if (!this.identifiers[i].toMunge) {
+ //print("SKIP toMunge==false : " + i)
continue;
}
if (this.isProtectedVar(i)) {
+ //print("SKIP PROTECTED: " + i)
continue; //
}
- if (this.identifiers[i].constructor != Identifier) {
- continue;
- }
+ //if (this.identifiers[i].constructor != Identifier) {
+ // print("SKIP NOT IDENTIFIER : " + i)
+ // continue;
+ // }
// println("IDENT:" +i+'');
if (!repsym.length) {
if (!freeSymbols.length) {
- addSyms(JSDOC.Scope.twos);
+ addSyms(Scope.twos);
}
repsym = freeSymbols.shift(); // pop off beginngin???
}
@@ -238,7 +282,7 @@ Scope.prototype = {
//println([ repsym,mungedValue ]);
if (this.mungeM && repsym.length < mungedValue.length) {
- print("REPLACE:"+ mungedValue +" with " + repsym );
+ //print("REPLACE:"+ mungedValue +" with " + repsym );
mungedValue = repsym;
repsym = '';
}
@@ -249,8 +293,8 @@ Scope.prototype = {
}
this.munged = true;
//println("Doing sub scopes");
- for (var i = 0; i < this.subScopes.length; i++) {
- var ss = this.subScopes[i];
+ for (var j = 0; j < this.subScopes.length; j++) {
+ var ss = this.subScopes[j];
ss.munge();
}
}
@@ -310,4 +354,4 @@ XObject.extend(Scope, {
})
// init the scope constants..
Scope.init();
-
\ No newline at end of file
+Scope.gid = 0;
\ No newline at end of file