Skip to content

Commit dc17662

Browse files
authored
Merge pull request #3797 from MDoerner/AddTwoNewStatus
Adds 'Started' and 'UnexpectedError' parser states.
2 parents f01d2ce + 88706c7 commit dc17662

File tree

7 files changed

+50
-7
lines changed

7 files changed

+50
-7
lines changed

RetailCoder.VBE/UI/Command/ReparseCommand.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ protected override bool EvaluateCanExecute(object parameter)
3838
return _state.Status == ParserState.Pending
3939
|| _state.Status == ParserState.Ready
4040
|| _state.Status == ParserState.Error
41-
|| _state.Status == ParserState.ResolverError;
41+
|| _state.Status == ParserState.ResolverError
42+
|| _state.Status == ParserState.UnexpectedError;
4243
}
4344

4445
protected override void OnExecute(object parameter)

RetailCoder.VBE/UI/RubberduckUI.Designer.cs

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

RetailCoder.VBE/UI/RubberduckUI.de.resx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<root>
33
<!--
44
Microsoft ResX Schema
@@ -1728,4 +1728,10 @@ Möchten sie die Einstellungen in Rubberduck importieren?</value>
17281728
<data name="CodeMetrics_Nesting" xml:space="preserve">
17291729
<value>Maximale Einrückung</value>
17301730
</data>
1731+
<data name="ParserState_Started" xml:space="preserve">
1732+
<value>Gestartet</value>
1733+
</data>
1734+
<data name="ParserState_UnexpectedError" xml:space="preserve">
1735+
<value>Unerwarteter Fehler</value>
1736+
</data>
17311737
</root>

RetailCoder.VBE/UI/RubberduckUI.resx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1789,4 +1789,10 @@ Would you like to import them to Rubberduck?</value>
17891789
<data name="GeneralSettings_CompileBeforeParse" xml:space="preserve">
17901790
<value>Compile code before parsing</value>
17911791
</data>
1792+
<data name="ParserState_Started" xml:space="preserve">
1793+
<value>Started</value>
1794+
</data>
1795+
<data name="ParserState_UnexpectedError" xml:space="preserve">
1796+
<value>Unexpected Error</value>
1797+
</data>
17921798
</root>

Rubberduck.Parsing/VBA/ParseCoordinator.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ private void ExecuteCommonParseActivities(IReadOnlyCollection<QualifiedModuleNam
165165
toReresolveReferences.UnionWith(toReresolveReferencesInput);
166166
token.ThrowIfCancellationRequested();
167167

168-
_parserStateManager.SetModuleStates(toParse, ParserState.Pending, token);
168+
_parserStateManager.SetModuleStates(toParse, ParserState.Started, token);
169169
token.ThrowIfCancellationRequested();
170170

171171
_parserStateManager.SetStatusAndFireStateChanged(this, ParserState.LoadingReference, token);
@@ -320,9 +320,9 @@ private void ParseAll(object requestor, CancellationToken token)
320320
catch (Exception exception)
321321
{
322322
Logger.Error(exception, "Unexpected exception thrown in parsing run. (thread {0}).", Thread.CurrentThread.ManagedThreadId);
323-
if (!(_parserStateManager.OverallParserState >= ParserState.Error))
323+
if (_parserStateManager.OverallParserState != ParserState.UnexpectedError)
324324
{
325-
_parserStateManager.SetStatusAndFireStateChanged(this, ParserState.Error, token);
325+
_parserStateManager.SetStatusAndFireStateChanged(this, ParserState.UnexpectedError, token);
326326
}
327327
}
328328
finally
@@ -337,7 +337,7 @@ private void ParseAllInternal(object requestor, CancellationToken token)
337337
{
338338
token.ThrowIfCancellationRequested();
339339

340-
_parserStateManager.SetStatusAndFireStateChanged(requestor, ParserState.Pending, token);
340+
_parserStateManager.SetStatusAndFireStateChanged(requestor, ParserState.Started, token);
341341
token.ThrowIfCancellationRequested();
342342

343343
_projectManager.RefreshProjects();

Rubberduck.Parsing/VBA/ParserState.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,14 @@ namespace Rubberduck.Parsing.VBA
44
public enum ParserState
55
{
66
/// <summary>
7-
/// Parse was requested but hasn't started yet.
7+
/// Parse has not been requested or has not started yet.
88
/// </summary>
99
Pending,
1010
/// <summary>
11+
/// Parse has started and is in the coordination phase.
12+
/// </summary>
13+
Started,
14+
/// <summary>
1115
/// Project references are being loaded into parser state.
1216
/// </summary>
1317
LoadingReference,
@@ -44,6 +48,10 @@ public enum ParserState
4448
/// </summary>
4549
ResolverError,
4650
/// <summary>
51+
/// Unexpected exception has been encountered during a parse.
52+
/// </summary>
53+
UnexpectedError,
54+
/// <summary>
4755
/// This component doesn't need a state. Use for built-in declarations.
4856
/// </summary>
4957
None,

Rubberduck.Parsing/VBA/RubberduckParserState.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,10 @@ private ParserState OverallParserStateFromModuleStates()
402402
}
403403

404404
// error state takes precedence over every other state
405+
if (stateCounts[(int)ParserState.UnexpectedError] > 0)
406+
{
407+
return ParserState.UnexpectedError;
408+
}
405409
if (stateCounts[(int)ParserState.Error] > 0)
406410
{
407411
return ParserState.Error;

0 commit comments

Comments
 (0)