diff --git a/lib/jsdoc/name.js b/lib/jsdoc/name.js index 8fc3cd04..afac40ca 100644 --- a/lib/jsdoc/name.js +++ b/lib/jsdoc/name.js @@ -337,7 +337,7 @@ exports.longnamesToTree = function longnamesToTree(longnames, doclets) { longnames.forEach(function(longname) { var currentLongname = ''; - var currentNavItem = tree; + var currentParent = tree; var nameInfo; var processed; @@ -352,14 +352,18 @@ exports.longnamesToTree = function longnamesToTree(longnames, doclets) { processed.chunks.forEach(function(chunk) { currentLongname += chunk; - if (!hasOwnProp.call(currentNavItem, chunk)) { - currentNavItem[chunk] = nameInfo[currentLongname]; + if (currentParent !== tree) { + currentParent.children = currentParent.children || {}; + currentParent = currentParent.children; } - if (currentNavItem[chunk]) { - currentNavItem[chunk].doclet = doclets ? doclets[currentLongname] : null; - currentNavItem[chunk].children = currentNavItem[chunk].children || {}; - currentNavItem = currentNavItem[chunk].children; + if (!hasOwnProp.call(currentParent, chunk)) { + currentParent[chunk] = nameInfo[currentLongname]; + } + + if (currentParent[chunk]) { + currentParent[chunk].doclet = doclets ? doclets[currentLongname] : null; + currentParent = currentParent[chunk]; } }); });