nl_tokens: When an alias symbol is referenced we need to mark the entity it references as referenced and in turn repeat that until we reach a non - alias or an exported entity ( which is always considered referenced ) . We do this by checking the target of the alias as an expression ( which recursively takes us back here if the target references another alias ) .
pl_tokens: function markAliasSymbolAsReferenced ( symbol ) { var links = getSymbolLinks ( symbol ) ; if ( ! links . referenced ) { links . referenced = true ; var node = getDeclarationOfAliasSymbol ( symbol ) ; if ( node . kind === 227 /* ExportAssignment */ ) { // export default <symbol> checkExpressionCached ( node . expression ) ; } else if ( node . kind === 230 /* ExportSpecifier */ ) { // export { <symbol> } or export { <symbol> as foo } checkExpressionCached ( <mask> . propertyName || node . name ) ; } else if ( ts . isInternalModuleImportEqualsDeclaration ( node ) ) { // import foo = <symbol> checkExpressionCached ( node . moduleReference ) ; } } }