@@ -102,7 +102,7 @@ public void Parse()
102
102
var components = projects . SelectMany ( p => p . VBComponents . Cast < VBComponent > ( ) ) . ToList ( ) ;
103
103
_state . SetModuleState ( ParserState . LoadingReference ) ;
104
104
105
- LoadComReferences ( projects ) ;
105
+ SyncComReferences ( projects ) ;
106
106
107
107
foreach ( var component in components )
108
108
{
@@ -138,7 +138,7 @@ private void ParseAll()
138
138
var unchanged = components . Where ( c => ! _state . IsModified ( c ) ) . ToList ( ) ;
139
139
140
140
_state . SetModuleState ( ParserState . LoadingReference ) ; // todo: change that to a simple statusbar text update
141
- LoadComReferences ( projects ) ;
141
+ SyncComReferences ( projects ) ;
142
142
143
143
if ( ! modified . Any ( ) )
144
144
{
@@ -168,7 +168,7 @@ private void ParseAll()
168
168
169
169
private readonly HashSet < ReferencePriorityMap > _references = new HashSet < ReferencePriorityMap > ( ) ;
170
170
171
- private void LoadComReferences ( IEnumerable < VBProject > projects )
171
+ private void SyncComReferences ( IReadOnlyList < VBProject > projects )
172
172
{
173
173
foreach ( var vbProject in projects )
174
174
{
@@ -200,9 +200,17 @@ private void LoadComReferences(IEnumerable<VBProject> projects)
200
200
}
201
201
}
202
202
}
203
+
204
+ var mappedIds = _references . Select ( map => map . ReferenceId ) ;
205
+ var unmapped = projects . SelectMany ( project => project . References . Cast < Reference > ( ) )
206
+ . Where ( reference => ! mappedIds . Contains ( reference . ReferenceId ( ) ) ) ;
207
+ foreach ( var reference in unmapped )
208
+ {
209
+ UnloadComReference ( reference ) ;
210
+ }
203
211
}
204
212
205
- public void UnloadComReference ( Reference reference )
213
+ private void UnloadComReference ( Reference reference )
206
214
{
207
215
var referenceId = reference . ReferenceId ( ) ;
208
216
var map = _references . SingleOrDefault ( r => r . ReferenceId == referenceId ) ;
0 commit comments