X-Git-Url: http://git.roojs.org/?p=gnome.introspection-doc-generator;a=blobdiff_plain;f=JSDOC%2FScope.js;h=b34d0a01c7ce8bb730012eec8591010d78c93060;hp=3a03c4b86368f02693a61d2ab6bcb666bb20e540;hb=53b1092ed504e2d0fbd10d508b4b2b505a4eeff0;hpb=36b2086548e17ebfcff7bffc9a100eefefca1dc1 diff --git a/JSDOC/Scope.js b/JSDOC/Scope.js index 3a03c4b..b34d0a0 100644 --- a/JSDOC/Scope.js +++ b/JSDOC/Scope.js @@ -6,11 +6,12 @@ * // FIXME - I need this to do next() without doccomments.. */ -Identifier = imports.Identifier.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; this.gid = Scope.gid++; - - print("ADD SCOPE(" + this.gid + ") TO "+ (parent ? this.parent.gid : 'TOP')); + 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,31 @@ Scope.prototype = { munged : false, protectedVars : {}, // only used by to parent.. - declareIdentifier : function(symbol, token) { + + /** + * dump the scope to StdOut... + * + */ + dump : function(indent) + { + indent = indent || ''; + print( + indent + "Scope: " + this.id + "\n" + + indent + "Started: " + ( this.token ? this.token.line : 'TOP' ) + "\n" + + indent + "- " + XObject.keys(this.identifiers).join(", ") + "\n" + ); + this.subScopes.forEach(function(s) { + s.dump(indent + ' '); + }); + - print("SCOPE : " + this.gid + " : " + token.toString()+""); + }, + + + declareIdentifier : function(symbol, token) + { + + //print("SCOPE : " + this.gid + " :SYM: " + symbol + " " + token.toString()+""); if (typeof(this.identifiers[symbol])== 'undefined') { @@ -69,19 +93,21 @@ Scope.prototype = { // then it's global... this.identifiers[symbol].toMunge = false; } + + this.addToParentScope(symbol); return this.identifiers[symbol]; }, - getIdentifier : function(symbol) { + getIdentifier : function(symbol, token) { if (typeof(this.identifiers[symbol])== 'undefined') { - if (['String', 'Date'].indexOf(symbol)) { + if (['String', 'Date'].indexOf(symbol)> -1) { return false; } - print("SCOPE : " + this.gid +" = SYMBOL NOT FOUND?" + symbol); + //print("SCOPE : " + this.gid +" = SYMBOL NOT FOUND?" + token.toString()); return false; } - + //print("SCOPE : " + this.gid +" = FOUND:" + token.toString()); return this.identifiers[symbol]; }, @@ -238,7 +264,7 @@ Scope.prototype = { if (!repsym.length) { if (!freeSymbols.length) { - addSyms(JSDOC.Scope.twos); + addSyms(Scope.twos); } repsym = freeSymbols.shift(); // pop off beginngin??? }