Skip to content

Commit

Permalink
parser state no longer remains stuck on 'Loading references' - parser…
Browse files Browse the repository at this point in the history
… is pretty much stable!
  • Loading branch information
retailcoder committed Apr 21, 2016
1 parent d80b7b5 commit 28baafc
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions Rubberduck.Parsing/VBA/RubberduckParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,14 +135,24 @@ private void ParseAll()

var components = projects.SelectMany(p => p.VBComponents.Cast<VBComponent>()).ToList();
var modified = components.Where(_state.IsModified).ToList();
var unchanged = components.Where(c => !_state.IsModified(c)).ToList();

_state.SetModuleState(ParserState.LoadingReference);
_state.SetModuleState(ParserState.LoadingReference); // todo: change that to a simple statusbar text update
LoadComReferences(projects);

if (!modified.Any())
{
return;
}

foreach (var component in modified)
{
_state.SetModuleState(component, ParserState.Pending);
}
foreach (var component in unchanged)
{
_state.SetModuleState(component, ParserState.Parsed);
}

// invalidation cleanup should go into ParseAsync?
foreach (var invalidated in _componentAttributes.Keys.Except(components))
Expand All @@ -152,8 +162,6 @@ private void ParseAll()

foreach (var vbComponent in modified)
{
while (!_state.ClearDeclarations(vbComponent)) { }

ParseAsync(vbComponent, CancellationToken.None);
}
}
Expand Down Expand Up @@ -194,11 +202,6 @@ private void LoadComReferences(IEnumerable<VBProject> projects)
}
}

public void LoadNewComReferences()
{
LoadComReferences(_state.Projects);
}

public void UnloadComReference(Reference reference)
{
var referenceId = reference.ReferenceId();
Expand Down

0 comments on commit 28baafc

Please sign in to comment.