Skip to content

Commit e972d6c

Browse files
committed
FindAllReferencesCommand:
- FindNewDeclaration: Now uses DeclarationFinder.MatchName() - EvaluateCanExecute: Added nullceck - OnExecute: Added nullcheck - FindTarget: Defensive cast now uses pattern matching; assignments use tuple deconstruction; reduced indentation
1 parent 2fed134 commit e972d6c

File tree

1 file changed

+28
-29
lines changed

1 file changed

+28
-29
lines changed

RetailCoder.VBE/UI/Command/FindAllReferencesCommand.cs

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ public FindAllReferencesCommand(INavigateCommand navigateCommand, IMessageBox me
4242

4343
private Declaration FindNewDeclaration(Declaration declaration)
4444
{
45-
return _state.AllUserDeclarations.SingleOrDefault(item =>
46-
item.ProjectId == declaration.ProjectId &&
47-
item.ComponentName == declaration.ComponentName &&
48-
item.ParentScope == declaration.ParentScope &&
49-
item.IdentifierName == declaration.IdentifierName &&
50-
item.DeclarationType == declaration.DeclarationType);
45+
return _state.DeclarationFinder
46+
.MatchName(declaration.IdentifierName)
47+
.SingleOrDefault(d => d.ProjectId == declaration.ProjectId
48+
&& d.ComponentName == declaration.ComponentName
49+
&& d.ParentScope == declaration.ParentScope
50+
&& d.DeclarationType == declaration.DeclarationType);
5151
}
5252

5353
private void _state_StateChanged(object sender, ParserStateEventArgs e)
@@ -88,7 +88,7 @@ private void UpdateTab()
8888

8989
protected override bool EvaluateCanExecute(object parameter)
9090
{
91-
if (_state.Status != ParserState.Ready ||
91+
if ((_state?.Status ?? ParserState.None) != ParserState.Ready ||
9292
(_vbe.ActiveCodePane == null && !(_vbe.SelectedVBComponent?.HasDesigner ?? false)))
9393
{
9494
return false;
@@ -102,7 +102,7 @@ protected override bool EvaluateCanExecute(object parameter)
102102

103103
protected override void OnExecute(object parameter)
104104
{
105-
if (_state.Status != ParserState.Ready)
105+
if ((_state?.Status ?? ParserState.None) != ParserState.Ready)
106106
{
107107
return;
108108
}
@@ -156,8 +156,7 @@ private SearchResultsViewModel CreateViewModel(Declaration declaration)
156156

157157
private Declaration FindTarget(object parameter)
158158
{
159-
var declaration = parameter as Declaration;
160-
if (declaration != null)
159+
if (parameter is Declaration declaration)
161160
{
162161
return declaration;
163162
}
@@ -174,36 +173,36 @@ private Declaration FindCodePaneTarget()
174173

175174
private Declaration FindFormDesignerTarget(QualifiedModuleName? qualifiedModuleName = null)
176175
{
177-
var projectId = qualifiedModuleName.HasValue
178-
? qualifiedModuleName.Value.ProjectId
179-
: _vbe.ActiveVBProject.ProjectId;
180-
181-
var component = qualifiedModuleName.HasValue
182-
? qualifiedModuleName.Value.Component
183-
:_vbe.SelectedVBComponent;
184-
176+
(var projectId, var component)
177+
= qualifiedModuleName.HasValue
178+
? (qualifiedModuleName.Value.ProjectId, qualifiedModuleName.Value.Component)
179+
: (_vbe.ActiveVBProject.ProjectId, _vbe.SelectedVBComponent);
185180

186181
if (component?.HasDesigner ?? false)
187182
{
188183
if (qualifiedModuleName.HasValue)
189184
{
190-
return _state.DeclarationFinder.MatchName(qualifiedModuleName.Value.Name)
191-
.SingleOrDefault(m => m.ProjectId == projectId
192-
&& m.DeclarationType.HasFlag(qualifiedModuleName.Value.ComponentType)
193-
&& m.ComponentName == component.Name);
185+
return _state.DeclarationFinder
186+
.MatchName(qualifiedModuleName.Value.Name)
187+
.SingleOrDefault(m => m.ProjectId == projectId
188+
&& m.DeclarationType.HasFlag(qualifiedModuleName.Value.ComponentType)
189+
&& m.ComponentName == component.Name);
194190
}
195191

196192
var selectedCount = component.SelectedControls.Count;
197193
if (selectedCount > 1) { return null; }
198194

199195
// Cannot use DeclarationType.UserForm, parser only assigns UserForms the ClassModule flag
200-
var selectedType = selectedCount == 0 ? DeclarationType.ClassModule : DeclarationType.Control;
201-
string selectedName = selectedCount == 0 ? component.Name : component.SelectedControls[0].Name;
202-
203-
return _state.DeclarationFinder.MatchName(selectedName)
204-
.SingleOrDefault(m => m.ProjectId == projectId
205-
&& m.DeclarationType.HasFlag(selectedType)
206-
&& m.ComponentName == component.Name);
196+
(var selectedType, var selectedName)
197+
= selectedCount == 0
198+
? (DeclarationType.ClassModule, component.Name)
199+
: (DeclarationType.Control, component.SelectedControls[0].Name);
200+
201+
return _state.DeclarationFinder
202+
.MatchName(selectedName)
203+
.SingleOrDefault(m => m.ProjectId == projectId
204+
&& m.DeclarationType.HasFlag(selectedType)
205+
&& m.ComponentName == component.Name);
207206
}
208207
return null;
209208
}

0 commit comments

Comments
 (0)