@@ -412,7 +412,7 @@ namespace ts.server {
412412 ) : void {
413413 const projectService = defaultProject . projectService ;
414414 let toDo : ProjectAndLocation < TLocation > [ ] | undefined ;
415- const seenProjects = createMap < true > ( ) ;
415+ const seenProjects = createMap < Project > ( ) ;
416416 forEachProjectInProjects ( projects , initialLocation && initialLocation . fileName , ( project , path ) => {
417417 // TLocation shoud be either `sourcemaps.SourceMappableLocation` or `undefined`. Since `initialLocation` is `TLocation` this cast should be valid.
418418 const location = ( initialLocation ? { fileName : path , position : initialLocation . position } : undefined ) as TLocation ;
@@ -421,9 +421,11 @@ namespace ts.server {
421421
422422 // After initial references are collected, go over every other project and see if it has a reference for the symbol definition.
423423 if ( getDefinition ) {
424+ projectService . loadAncestorAndReferenceConfiguredProjects ( seenProjects ) ;
425+
424426 const memGetDefinition = memoize ( getDefinition ) ;
425427 projectService . forEachEnabledProject ( project => {
426- if ( ! addToSeen ( seenProjects , project . projectName ) ) return ;
428+ if ( ! addToSeen ( seenProjects , project ) ) return ;
427429 const definition = getDefinitionInProject ( memGetDefinition ( ) , defaultProject , project ) ;
428430 if ( definition ) {
429431 toDo = callbackProjectAndLocation < TLocation > ( { project, location : definition as TLocation } , projectService , toDo , seenProjects , cb ) ;
@@ -442,16 +444,24 @@ namespace ts.server {
442444 return mappedDefinition && project . containsFile ( toNormalizedPath ( mappedDefinition . fileName ) ) ? mappedDefinition : undefined ;
443445 }
444446
447+ function addToSeen ( seenProjects : Map < Project > , project : Project ) {
448+ return ts . addToSeen ( seenProjects , getProjectKey ( project ) , project ) ;
449+ }
450+
451+ function getProjectKey ( project : Project ) {
452+ return project . projectKind === ProjectKind . Configured ? ( project as ConfiguredProject ) . canonicalConfigFilePath : project . projectName ;
453+ }
454+
445455 function callbackProjectAndLocation < TLocation extends sourcemaps . SourceMappableLocation | undefined > (
446456 projectAndLocation : ProjectAndLocation < TLocation > ,
447457 projectService : ProjectService ,
448458 toDo : ProjectAndLocation < TLocation > [ ] | undefined ,
449- seenProjects : Map < true > ,
459+ seenProjects : Map < Project > ,
450460 cb : CombineProjectOutputCallback < TLocation > ,
451461 ) : ProjectAndLocation < TLocation > [ ] | undefined {
452462 if ( projectAndLocation . project . getCancellationToken ( ) . isCancellationRequested ( ) ) return undefined ; // Skip rest of toDo if cancelled
453463 cb ( projectAndLocation , ( project , location ) => {
454- seenProjects . set ( projectAndLocation . project . projectName , true ) ;
464+ seenProjects . set ( getProjectKey ( projectAndLocation . project ) , projectAndLocation . project ) ;
455465 const originalLocation = projectService . getOriginalLocationEnsuringConfiguredProject ( project , location ) ;
456466 if ( ! originalLocation ) return undefined ;
457467
@@ -472,8 +482,8 @@ namespace ts.server {
472482 return toDo ;
473483 }
474484
475- function addToTodo < TLocation extends sourcemaps . SourceMappableLocation | undefined > ( projectAndLocation : ProjectAndLocation < TLocation > , toDo : Push < ProjectAndLocation < TLocation > > , seenProjects : Map < true > ) : void {
476- if ( addToSeen ( seenProjects , projectAndLocation . project . projectName ) ) toDo . push ( projectAndLocation ) ;
485+ function addToTodo < TLocation extends sourcemaps . SourceMappableLocation | undefined > ( projectAndLocation : ProjectAndLocation < TLocation > , toDo : Push < ProjectAndLocation < TLocation > > , seenProjects : Map < Project > ) : void {
486+ if ( addToSeen ( seenProjects , projectAndLocation . project ) ) toDo . push ( projectAndLocation ) ;
477487 }
478488
479489 function documentSpanLocation ( { fileName, textSpan } : DocumentSpan ) : sourcemaps . SourceMappableLocation {
0 commit comments