Skip to content

Commit 6791992

Browse files
committed
remove built-in declarations for removed references
1 parent 8d73919 commit 6791992

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

Rubberduck.Parsing/VBA/RubberduckParser.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public void Parse()
102102
var components = projects.SelectMany(p => p.VBComponents.Cast<VBComponent>()).ToList();
103103
_state.SetModuleState(ParserState.LoadingReference);
104104

105-
LoadComReferences(projects);
105+
SyncComReferences(projects);
106106

107107
foreach (var component in components)
108108
{
@@ -138,7 +138,7 @@ private void ParseAll()
138138
var unchanged = components.Where(c => !_state.IsModified(c)).ToList();
139139

140140
_state.SetModuleState(ParserState.LoadingReference); // todo: change that to a simple statusbar text update
141-
LoadComReferences(projects);
141+
SyncComReferences(projects);
142142

143143
if (!modified.Any())
144144
{
@@ -168,7 +168,7 @@ private void ParseAll()
168168

169169
private readonly HashSet<ReferencePriorityMap> _references = new HashSet<ReferencePriorityMap>();
170170

171-
private void LoadComReferences(IEnumerable<VBProject> projects)
171+
private void SyncComReferences(IReadOnlyList<VBProject> projects)
172172
{
173173
foreach (var vbProject in projects)
174174
{
@@ -200,9 +200,17 @@ private void LoadComReferences(IEnumerable<VBProject> projects)
200200
}
201201
}
202202
}
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+
}
203211
}
204212

205-
public void UnloadComReference(Reference reference)
213+
private void UnloadComReference(Reference reference)
206214
{
207215
var referenceId = reference.ReferenceId();
208216
var map = _references.SingleOrDefault(r => r.ReferenceId == referenceId);

0 commit comments

Comments
 (0)