Skip to content

Commit f3c0609

Browse files
committed
closes #353 - also fixes a bug where a ModuleOption could be acquired as a rename target
1 parent 6b52a41 commit f3c0609

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

RetailCoder.VBE/UI/Refactorings/Rename/RenamePresenter.cs

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Linq;
34
using System.Runtime.InteropServices;
45
using System.Text.RegularExpressions;
56
using System.Windows.Forms;
67
using Microsoft.Vbe.Interop;
78
using Rubberduck.Extensions;
89
using Rubberduck.Parsing;
10+
using Rubberduck.Parsing.Grammar;
911
using Rubberduck.Parsing.Symbols;
1012

1113
namespace Rubberduck.UI.Refactorings.Rename
@@ -86,6 +88,25 @@ private void RenameUsages()
8688
var newContent = GetReplacementLine(content, _view.Target.IdentifierName, _view.NewName);
8789
module.ReplaceLine(line.Key, newContent);
8890
}
91+
92+
if (grouping.Any(reference => reference.Context.Parent is VBAParser.ImplementsStmtContext))
93+
{
94+
var members = _declarations.FindMembers(_view.Target);
95+
foreach (var member in members)
96+
{
97+
var oldMemberName = _view.Target.IdentifierName + '_' + member.IdentifierName;
98+
var newMemberName = _view.NewName + '_' + member.IdentifierName;
99+
var method = _declarations[oldMemberName].SingleOrDefault(m => m.QualifiedName.QualifiedModuleName == grouping.Key);
100+
if (method == null)
101+
{
102+
continue;
103+
}
104+
105+
var content = module.get_Lines(method.Selection.StartLine, 1);
106+
var newContent = GetReplacementLine(content, oldMemberName, newMemberName);
107+
module.ReplaceLine(method.Selection.StartLine, newContent);
108+
}
109+
}
89110
}
90111
}
91112

@@ -107,9 +128,10 @@ private string GetReplacementLine(string content, string target, string newName)
107128

108129
private void AcquireTarget(QualifiedSelection selection)
109130
{
110-
_view.Target = _declarations.Items.SingleOrDefault(
111-
item => IsSelectedDeclaration(selection, item)
112-
|| IsSelectedReference(selection, item));
131+
_view.Target = _declarations.Items
132+
.Where(item => item.DeclarationType != DeclarationType.ModuleOption)
133+
.SingleOrDefault(item => IsSelectedDeclaration(selection, item)
134+
|| IsSelectedReference(selection, item));
113135

114136
if (_view.Target == null)
115137
{

0 commit comments

Comments
 (0)