1
1
using System ;
2
+ using System . Collections . Generic ;
2
3
using System . Linq ;
3
4
using System . Runtime . InteropServices ;
4
5
using System . Text . RegularExpressions ;
5
6
using System . Windows . Forms ;
6
7
using Microsoft . Vbe . Interop ;
7
8
using Rubberduck . Extensions ;
8
9
using Rubberduck . Parsing ;
10
+ using Rubberduck . Parsing . Grammar ;
9
11
using Rubberduck . Parsing . Symbols ;
10
12
11
13
namespace Rubberduck . UI . Refactorings . Rename
@@ -86,6 +88,25 @@ private void RenameUsages()
86
88
var newContent = GetReplacementLine ( content , _view . Target . IdentifierName , _view . NewName ) ;
87
89
module . ReplaceLine ( line . Key , newContent ) ;
88
90
}
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
+ }
89
110
}
90
111
}
91
112
@@ -107,9 +128,10 @@ private string GetReplacementLine(string content, string target, string newName)
107
128
108
129
private void AcquireTarget ( QualifiedSelection selection )
109
130
{
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 ) ) ;
113
135
114
136
if ( _view . Target == null )
115
137
{
0 commit comments