Skip to content

Commit b9199b0

Browse files
authored
Merge pull request #5740 from retailcoder/argcontext
Makes SelectedDeclarationProvider argument-aware and moves parts of the work to an async task.
2 parents 0c493cb + 695fea0 commit b9199b0

File tree

42 files changed

+869
-215
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+869
-215
lines changed

Rubberduck.CodeAnalysis/Inspections/Concrete/NonReturningFunctionInspection.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ private bool IsAssignedByRefArgument(Declaration enclosingProcedure, IdentifierR
7171
return false;
7272
}
7373

74-
var parameter = finder.FindParameterOfNonDefaultMemberFromSimpleArgumentNotPassedByValExplicitly(argExpression, enclosingProcedure);
74+
var argument = argExpression.GetAncestor<VBAParser.ArgumentContext>();
75+
var parameter = finder.FindParameterOfNonDefaultMemberFromSimpleArgumentNotPassedByValExplicitly(argument, enclosingProcedure);
7576

7677
// note: not recursive, by design.
7778
return parameter != null

Rubberduck.CodeAnalysis/Inspections/Concrete/ParameterCanBeByValInspection.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,8 @@ private static bool IsPotentiallyAssignedByRefArgument(QualifiedModuleName modul
142142
return false;
143143
}
144144

145-
var parameter = finder.FindParameterOfNonDefaultMemberFromSimpleArgumentNotPassedByValExplicitly(argExpression, module);
145+
var argument = argExpression.GetAncestor<VBAParser.ArgumentContext>();
146+
var parameter = finder.FindParameterOfNonDefaultMemberFromSimpleArgumentNotPassedByValExplicitly(argument, module);
146147

147148
if (parameter == null)
148149
{

Rubberduck.CodeAnalysis/Inspections/Concrete/ParameterNotUsedInspection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ private static bool TryFindParameterIndex(ParameterDeclaration parameter, IParam
114114

115115
private static bool ParameterAtIndexIsNotUsed(IParameterizedDeclaration declaration, int parameterIndex)
116116
{
117-
var parameter = declaration.Parameters.ElementAtOrDefault(parameterIndex);
117+
var parameter = declaration?.Parameters.ElementAtOrDefault(parameterIndex);
118118
return parameter != null
119119
&& !parameter.References.Any();
120120
}

Rubberduck.CodeAnalysis/Inspections/Concrete/ProcedureCanBeWrittenAsFunctionInspection.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,8 @@ private static bool IsUsageAsAssignedToByRefArgument(IdentifierReference referen
8888
return false;
8989
}
9090

91-
var parameter = finder.FindParameterOfNonDefaultMemberFromSimpleArgumentNotPassedByValExplicitly(argExpression, reference.QualifiedModuleName);
91+
var argument = argExpression.GetAncestor<VBAParser.ArgumentContext>();
92+
var parameter = finder.FindParameterOfNonDefaultMemberFromSimpleArgumentNotPassedByValExplicitly(argument, reference.QualifiedModuleName);
9293

9394
if (parameter == null)
9495
{

Rubberduck.CodeAnalysis/Inspections/Concrete/UnassignedVariableUsageInspection.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,8 @@ private static bool IsAssignedByRefArgument(Declaration enclosingProcedure, Iden
155155
return false;
156156
}
157157

158-
var parameter = finder.FindParameterOfNonDefaultMemberFromSimpleArgumentNotPassedByValExplicitly(argExpression, enclosingProcedure);
158+
var argument = argExpression.GetAncestor<VBAParser.ArgumentContext>();
159+
var parameter = finder.FindParameterOfNonDefaultMemberFromSimpleArgumentNotPassedByValExplicitly(argument, enclosingProcedure);
159160

160161
// note: not recursive, by design.
161162
return parameter != null

Rubberduck.CodeAnalysis/Inspections/Concrete/VariableNotAssignedInspection.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ private static bool IsAssignedByRefArgument(Declaration enclosingProcedure, Iden
6969
return false;
7070
}
7171

72-
var parameter = finder.FindParameterOfNonDefaultMemberFromSimpleArgumentNotPassedByValExplicitly(argExpression, enclosingProcedure);
72+
var argument = argExpression.GetAncestor<VBAParser.ArgumentContext>();
73+
var parameter = finder.FindParameterOfNonDefaultMemberFromSimpleArgumentNotPassedByValExplicitly(argument, enclosingProcedure);
7374

7475
// note: not recursive, by design.
7576
return parameter != null

Rubberduck.Core/AppMenu.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
using System.Collections.Generic;
33
using System.Linq;
44
using System.Runtime.InteropServices;
5+
using System.Threading;
6+
using System.Threading.Tasks;
57
using NLog;
68
using Rubberduck.Parsing;
79
using Rubberduck.Parsing.VBA;
@@ -75,26 +77,26 @@ private void InitializeRubberduckMenus()
7577
_logger.Error(exception);
7678
}
7779
}
78-
EvaluateCanExecute(_parser.State);
80+
EvaluateCanExecuteAsync(_parser.State, CancellationToken.None).Wait();
7981
}
8082

81-
public void OnSelectedDeclarationChange(object sender, DeclarationChangedEventArgs e)
83+
public async void OnSelectedDeclarationChange(object sender, DeclarationChangedEventArgs e)
8284
{
83-
EvaluateCanExecute(_parser.State);
85+
await EvaluateCanExecuteAsync(_parser.State, CancellationToken.None);
8486
}
8587

86-
private void OnParserStateChanged(object sender, EventArgs e)
88+
private async void OnParserStateChanged(object sender, EventArgs e)
8789
{
88-
EvaluateCanExecute(_parser.State);
90+
await EvaluateCanExecuteAsync(_parser.State, CancellationToken.None);
8991
}
9092

91-
public void EvaluateCanExecute(RubberduckParserState state)
93+
public async Task EvaluateCanExecuteAsync(RubberduckParserState state, CancellationToken token)
9294
{
9395
foreach (var menu in _menus)
9496
{
9597
try
9698
{
97-
menu.EvaluateCanExecute(state);
99+
await menu.EvaluateCanExecuteAsync(state, token);
98100
}
99101
catch (Exception exception)
100102
{

Rubberduck.Core/Refactorings/ExtractMethod/ExtractedParameter.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Rubberduck.Parsing.Grammar;
22
using Rubberduck.Resources;
3+
using Tokens = Rubberduck.Resources.Tokens;
34

45
namespace Rubberduck.Refactorings.ExtractMethod
56
{

Rubberduck.Core/UI/CodeExplorer/Commands/CodeExplorerFindAllReferencesCommand.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ public class CodeExplorerFindAllReferencesCommand : CodeExplorerCommandBase
1919
};
2020

2121
private readonly RubberduckParserState _state;
22-
private readonly FindAllReferencesService _finder;
22+
private readonly FindAllReferencesAction _finder;
2323

2424
public CodeExplorerFindAllReferencesCommand(
2525
RubberduckParserState state,
26-
FindAllReferencesService finder,
26+
FindAllReferencesAction finder,
2727
IVbeEvents vbeEvents)
2828
: base(vbeEvents)
2929
{

Rubberduck.Core/UI/Command/ComCommands/FindAllReferencesCommand.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,23 @@ public class FindAllReferencesCommand : ComCommandBase
1818
private readonly IDeclarationFinderProvider _declarationFinderProvider;
1919
private readonly ISelectedDeclarationProvider _selectedDeclarationProvider;
2020
private readonly IVBE _vbe;
21-
private readonly FindAllReferencesService _finder;
21+
private readonly FindAllReferencesAction _service;
2222

2323
public FindAllReferencesCommand(
2424
IParserStatusProvider parserStatusProvider,
2525
IDeclarationFinderProvider declarationFinderProvider,
2626
ISelectedDeclarationProvider selectedDeclarationProvider,
2727
IVBE vbe,
2828
ISearchResultsWindowViewModel viewModel,
29-
FindAllReferencesService finder,
29+
FindAllReferencesAction finder,
3030
IVbeEvents vbeEvents)
3131
: base(vbeEvents)
3232
{
3333
_parserStatusProvider = parserStatusProvider;
3434
_declarationFinderProvider = declarationFinderProvider;
3535
_selectedDeclarationProvider = selectedDeclarationProvider;
3636
_vbe = vbe;
37-
_finder = finder;
37+
_service = finder;
3838

3939
AddToCanExecuteEvaluation(SpecialEvaluateCanExecute);
4040
}
@@ -77,7 +77,7 @@ protected override void OnExecute(object parameter)
7777
return;
7878
}
7979

80-
_finder.FindAllReferences(declaration);
80+
_service.FindAllReferences(declaration);
8181
}
8282

8383
private Declaration FindTarget(object parameter)

0 commit comments

Comments
 (0)