Skip to content

Commit 50b5ddd

Browse files
authored
Merge pull request #1890 from Hosch250/resolverBugs
Make resolve sequence resolve references on all components, modified …
2 parents fd13607 + 17bad86 commit 50b5ddd

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

Rubberduck.Parsing/VBA/RubberduckParser.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -613,35 +613,35 @@ private Declaration CreateProjectDeclaration(QualifiedModuleName projectQualifie
613613

614614
private void ResolveReferences(DeclarationFinder finder, VBComponent component, IParseTree tree)
615615
{
616-
var state = _state.GetModuleState(component);
617-
if (state != ParserState.Resolving)
618-
{
619-
return;
620-
}
616+
Debug.Assert(State.Status == ParserState.ResolvedDeclarations);
617+
621618
var qualifiedName = new QualifiedModuleName(component);
622619
Logger.Debug("Resolving identifier references in '{0}'... (thread {1})", qualifiedName.Name, Thread.CurrentThread.ManagedThreadId);
620+
623621
var resolver = new IdentifierReferenceResolver(qualifiedName, finder);
624622
var listener = new IdentifierReferenceListener(resolver);
623+
625624
if (!string.IsNullOrWhiteSpace(tree.GetText().Trim()))
626625
{
627626
var walker = new ParseTreeWalker();
628627
try
629628
{
630-
Stopwatch watch = Stopwatch.StartNew();
629+
var watch = Stopwatch.StartNew();
631630
walker.Walk(listener, tree);
632631
watch.Stop();
633-
Logger.Debug("Binding Resolution done for component '{0}' in {1}ms (thread {2})", component.Name, watch.ElapsedMilliseconds, Thread.CurrentThread.ManagedThreadId);
632+
Logger.Debug("Binding Resolution done for component '{0}' in {1}ms (thread {2})", component.Name,
633+
watch.ElapsedMilliseconds, Thread.CurrentThread.ManagedThreadId);
634+
634635
_state.RebuildSelectionCache();
635-
state = ParserState.Ready;
636+
_state.SetModuleState(component, ParserState.Ready);
636637
}
637638
catch (Exception exception)
638639
{
639640
Logger.Error(exception, "Exception thrown resolving '{0}' (thread {1}).", component.Name, Thread.CurrentThread.ManagedThreadId);
640-
state = ParserState.ResolverError;
641+
_state.SetModuleState(component, ParserState.ResolverError);
641642
}
642643
}
643-
644-
_state.SetModuleState(component, state);
644+
645645
Logger.Debug("'{0}' is {1} (thread {2})", component.Name, _state.GetModuleState(component), Thread.CurrentThread.ManagedThreadId);
646646
}
647647

0 commit comments

Comments
 (0)