@@ -226,13 +226,32 @@ private void ExecuteCommonParseActivities(IReadOnlyCollection<QualifiedModuleNam
226
226
_parsingStageService . SyncComReferences ( token ) ;
227
227
if ( _parsingStageService . LastSyncOfCOMReferencesLoadedReferences || _parsingStageService . COMReferencesUnloadedInLastSync . Any ( ) )
228
228
{
229
- var unloadedReferences = _parsingStageService . COMReferencesUnloadedInLastSync ;
230
- var additionalModulesToBeReresolved = OtherModulesReferencingAnyNotToBeParsed ( unloadedReferences . ToHashSet ( ) . AsReadOnly ( ) , toParse ) ;
229
+ var unloadedReferences = _parsingStageService . COMReferencesUnloadedInLastSync . ToHashSet ( ) ;
230
+ var unloadedModules =
231
+ _parsingCacheService . DeclarationFinder . AllModules
232
+ . Where ( qmn => unloadedReferences . Contains ( qmn . ProjectId ) )
233
+ . ToHashSet ( ) ;
234
+ var additionalModulesToBeReresolved = OtherModulesReferencingAnyNotToBeParsed ( unloadedModules . AsReadOnly ( ) , toParse ) ;
231
235
toReresolveReferences . UnionWith ( additionalModulesToBeReresolved ) ;
232
236
_parserStateManager . SetModuleStates ( additionalModulesToBeReresolved , ParserState . ResolvingReferences , token ) ;
233
- ClearModuleToModuleReferences ( unloadedReferences ) ;
237
+ ClearModuleToModuleReferences ( unloadedModules ) ;
234
238
RefreshDeclarationFinder ( ) ;
235
239
}
240
+
241
+ if ( _parsingStageService . COMReferencesAffectedByPriorityChangesInLastSync . Any ( ) )
242
+ {
243
+ //We only use the referencedProjectId because that simplifies the reference management immensely.
244
+ var affectedReferences = _parsingStageService . COMReferencesAffectedByPriorityChangesInLastSync
245
+ . Select ( tpl => tpl . referencedProjectId )
246
+ . ToHashSet ( ) ;
247
+ var referenceModules =
248
+ _parsingCacheService . DeclarationFinder . AllModules
249
+ . Where ( qmn => affectedReferences . Contains ( qmn . ProjectId ) )
250
+ . ToHashSet ( ) ;
251
+ var additionalModulesToBeReresolved = OtherModulesReferencingAnyNotToBeParsed ( referenceModules . AsReadOnly ( ) , toParse ) ;
252
+ toReresolveReferences . UnionWith ( additionalModulesToBeReresolved ) ;
253
+ _parserStateManager . SetModuleStates ( additionalModulesToBeReresolved , ParserState . ResolvingReferences , token ) ;
254
+ }
236
255
token . ThrowIfCancellationRequested ( ) ;
237
256
238
257
_parsingStageService . LoadBuitInDeclarations ( ) ;
0 commit comments