|
1 | 1 | using System; |
2 | | -using System.Drawing; |
3 | 2 | using System.Linq; |
4 | 3 | using System.Runtime.InteropServices; |
5 | | -using System.Threading.Tasks; |
6 | 4 | using System.Windows.Forms; |
7 | 5 | using Microsoft.Office.Core; |
8 | 6 | using Microsoft.Vbe.Interop; |
|
12 | 10 | using Rubberduck.Refactoring; |
13 | 11 | using Rubberduck.UI.FindSymbol; |
14 | 12 | using Rubberduck.UI.IdentifierReferences; |
15 | | -using Rubberduck.UI.Refactorings.ExtractMethod; |
16 | | -using Rubberduck.UI.Refactorings.Rename; |
17 | 13 | using Rubberduck.UI.Refactorings.RemoveParameter; |
| 14 | +using Rubberduck.UI.Refactorings.Rename; |
18 | 15 | using Rubberduck.UI.Refactorings.ReorderParameters; |
19 | 16 | using Rubberduck.VBEditor; |
20 | 17 | using Rubberduck.VBEditor.Extensions; |
@@ -230,23 +227,25 @@ private void FindAllImplementations() |
230 | 227 | var progress = new ParsingProgressPresenter(); |
231 | 228 | var result = progress.Parse(_parser, IDE.ActiveVBProject); |
232 | 229 |
|
233 | | - var targets = result.Declarations.Items |
234 | | - .Where(item => !item.IsBuiltIn |
235 | | - && item.ComponentName == selection.QualifiedName.ComponentName); |
| 230 | + var interfaceNames = result.Declarations.FindInterfaceMembers().Where(item => item.Project.Equals(selection.QualifiedName.Project)).Select(item => item.ComponentName).Distinct(); |
| 231 | + var interfaceReferences = result.Declarations.Items.Where(item => interfaceNames.Contains(item.IdentifierName)).Select(item => item.References); |
236 | 232 |
|
237 | | - var interfaceImplementation = result.Declarations.FindInterfaceImplementationMembers(); |
238 | | - if (interfaceImplementation == null) |
| 233 | + foreach (var reference in interfaceReferences) |
239 | 234 | { |
240 | | - return; |
| 235 | + foreach (var item in reference) |
| 236 | + { |
| 237 | + if (item.Selection.Contains(selection.Selection)) |
| 238 | + { |
| 239 | + FindAllImplementations(item.Declaration); |
| 240 | + return; |
| 241 | + } |
| 242 | + } |
241 | 243 | } |
242 | | - |
243 | | - FindAllImplementations(interfaceMember); |
244 | 244 | } |
245 | 245 |
|
246 | 246 | public void FindAllImplementations(Declaration target) |
247 | 247 | { |
248 | | - var test = target.DeclarationType; |
249 | | - var referenceCount = 0; |
| 248 | + var referenceCount = target.References.Count(); |
250 | 249 |
|
251 | 250 | if (referenceCount == 1) |
252 | 251 | { |
@@ -387,7 +386,6 @@ public void RemoveParameter(QualifiedSelection selection) |
387 | 386 | var result = progress.Parse(_parser, IDE.ActiveVBProject); |
388 | 387 |
|
389 | 388 | var presenter = new RemoveParameterPresenter(result, selection); |
390 | | - |
391 | 389 | } |
392 | 390 |
|
393 | 391 | private CommandBarButton AddMenuButton(CommandBarPopup menu) |
|
0 commit comments