@@ -124,13 +124,6 @@ function Namespace(name, options) {
124124     * @protected  
125125     */ 
126126    this . _needsRecursiveFeatureResolution  =  true ; 
127- 
128-     /** 
129-      * Whether or not objects contained in this namespace need a resolve. 
130-      * @type  {boolean } 
131-      * @protected  
132-      */ 
133-     this . _needsRecursiveResolve  =  true ; 
134127} 
135128
136129function  clearCache ( namespace )  { 
@@ -280,13 +273,11 @@ Namespace.prototype.add = function add(object) {
280273    } 
281274
282275    this . _needsRecursiveFeatureResolution  =  true ; 
283-     this . _needsRecursiveResolve  =  true ; 
284276
285277    // Also clear parent caches, since they need to recurse down. 
286278    var  parent  =  this ; 
287279    while ( parent  =  parent . parent )  { 
288280        parent . _needsRecursiveFeatureResolution  =  true ; 
289-         parent . _needsRecursiveResolve  =  true ; 
290281    } 
291282
292283    object . onAdd ( this ) ; 
@@ -350,16 +341,13 @@ Namespace.prototype.define = function define(path, json) {
350341 * @returns  {Namespace } `this` 
351342 */ 
352343Namespace . prototype . resolveAll  =  function  resolveAll ( )  { 
353-     if  ( ! this . _needsRecursiveResolve )  return  this ; 
354- 
355344    var  nested  =  this . nestedArray ,  i  =  0 ; 
356345    this . resolve ( ) ; 
357346    while  ( i  <  nested . length ) 
358347        if  ( nested [ i ]  instanceof  Namespace ) 
359348            nested [ i ++ ] . resolveAll ( ) ; 
360349        else 
361350            nested [ i ++ ] . resolve ( ) ; 
362-     this . _needsRecursiveResolve  =  false ; 
363351    return  this ; 
364352} ; 
365353
@@ -401,47 +389,29 @@ Namespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChe
401389    }  else  if  ( ! path . length ) 
402390        return  this ; 
403391
404-     var  flatPath  =  path . join ( "." ) ; 
405- 
406392    // Start at root if path is absolute 
407393    if  ( path [ 0 ]  ===  "" ) 
408394        return  this . root . lookup ( path . slice ( 1 ) ,  filterTypes ) ; 
409395
410-     // Early bailout for objects with matching absolute paths 
411-     var  found  =  this . root . _fullyQualifiedObjects [ "."  +  flatPath ] ; 
412-     if  ( found  &&  ( ! filterTypes  ||  filterTypes . indexOf ( found . constructor )  >  - 1 ) )  { 
413-         return  found ; 
414-     } 
415- 
416-     // Do a regular lookup at this namespace and below 
417-     found  =  this . _lookupImpl ( path ,  flatPath ) ; 
396+     var  found  =  this . _lookupImpl ( path ) ; 
418397    if  ( found  &&  ( ! filterTypes  ||  filterTypes . indexOf ( found . constructor )  >  - 1 ) )  { 
419398        return  found ; 
420399    } 
421400
422-     if  ( parentAlreadyChecked ) 
401+     // If there hasn't been a match, try again at the parent 
402+     if  ( this . parent  ===  null  ||  parentAlreadyChecked ) 
423403        return  null ; 
424- 
425-     // If there hasn't been a match, walk up the tree and look more broadly 
426-     var  current  =  this ; 
427-     while  ( current . parent )  { 
428-         found  =  current . parent . _lookupImpl ( path ,  flatPath ) ; 
429-         if  ( found  &&  ( ! filterTypes  ||  filterTypes . indexOf ( found . constructor )  >  - 1 ) )  { 
430-             return  found ; 
431-         } 
432-         current  =  current . parent ; 
433-     } 
434-     return  null ; 
404+     return  this . parent . lookup ( path ,  filterTypes ) ; 
435405} ; 
436406
437407/** 
438408 * Internal helper for lookup that handles searching just at this namespace and below along with caching. 
439409 * @param  {string[] } path Path to look up 
440-  * @param  {string } flatPath Flattened version of the path to use as a cache key 
441410 * @returns  {ReflectionObject|null } Looked up object or `null` if none could be found 
442411 * @private  
443412 */ 
444- Namespace . prototype . _lookupImpl  =  function  lookup ( path ,  flatPath )  { 
413+ Namespace . prototype . _lookupImpl  =  function  lookup ( path )  { 
414+     var  flatPath  =  path . join ( "." ) ; 
445415    if ( Object . prototype . hasOwnProperty . call ( this . _lookupCache ,  flatPath ) )  { 
446416        return  this . _lookupCache [ flatPath ] ; 
447417    } 
@@ -452,15 +422,13 @@ Namespace.prototype._lookupImpl = function lookup(path, flatPath) {
452422    if  ( found )  { 
453423        if  ( path . length  ===  1 )  { 
454424            exact  =  found ; 
455-         }  else  if  ( found  instanceof  Namespace )  { 
456-             path  =  path . slice ( 1 ) ; 
457-             exact  =  found . _lookupImpl ( path ,  path . join ( "." ) ) ; 
458-         } 
425+         }  else  if  ( found  instanceof  Namespace  &&  ( found  =  found . _lookupImpl ( path . slice ( 1 ) ) ) ) 
426+             exact  =  found ; 
459427
460428    // Otherwise try each nested namespace 
461429    }  else  { 
462430        for  ( var  i  =  0 ;  i  <  this . nestedArray . length ;  ++ i ) 
463-             if  ( this . _nestedArray [ i ]  instanceof  Namespace  &&  ( found  =  this . _nestedArray [ i ] . _lookupImpl ( path ,   flatPath ) ) ) 
431+             if  ( this . _nestedArray [ i ]  instanceof  Namespace  &&  ( found  =  this . _nestedArray [ i ] . _lookupImpl ( path ) ) ) 
464432                exact  =  found ; 
465433    } 
466434
0 commit comments