4
4
using Rubberduck . Parsing . Grammar ;
5
5
using System . ComponentModel ;
6
6
using System . Collections . ObjectModel ;
7
+ using Rubberduck . Parsing . Symbols ;
8
+ using System . Xml . Linq ;
7
9
8
10
namespace Rubberduck . Refactorings . ExtractMethod
9
11
{
@@ -27,16 +29,28 @@ public class ExtractMethodParameter : INotifyPropertyChanged
27
29
28
30
public event PropertyChangedEventHandler PropertyChanged ;
29
31
30
- public ExtractMethodParameter ( string typeName , ExtractMethodParameterType parameterType , string name , bool isArray , bool isObject , bool canReturn )
32
+ public ExtractMethodParameter ( Declaration declaration , ExtractMethodParameterType parameterType , bool canReturn )
31
33
{
32
- Name = name ?? NoneLabel ;
33
- TypeName = typeName ;
34
34
ParameterType = parameterType ;
35
- IsArray = isArray ;
36
35
CanReturn = canReturn ;
37
- IsObject = isObject ;
36
+ Declaration = declaration ;
37
+ if ( declaration == null )
38
+ {
39
+ Name = NoneLabel ;
40
+ TypeName = string . Empty ;
41
+ IsArray = false ;
42
+ IsObject = false ;
43
+ }
44
+ else
45
+ {
46
+ Name = declaration . IdentifierName ;
47
+ TypeName = declaration . AsTypeNameWithoutArrayDesignator ;
48
+ IsArray = declaration . IsArray ;
49
+ IsObject = declaration . IsObject ;
50
+ }
38
51
}
39
52
53
+ public Declaration Declaration { get ; }
40
54
public string Name { get ; set ; }
41
55
42
56
public string TypeName { get ; set ; }
@@ -111,9 +125,7 @@ public override string ToString()
111
125
}
112
126
113
127
114
- public static ExtractMethodParameter None => new ExtractMethodParameter ( string . Empty ,
115
- ExtractMethodParameterType . ByValParameter ,
116
- RefactoringsUI . ExtractMethod_NoneSelected , false , false , false ) ;
128
+ public static ExtractMethodParameter None => new ExtractMethodParameter ( null , ExtractMethodParameterType . ByValParameter , false ) ;
117
129
118
130
public static ObservableCollection < ExtractMethodParameterType > AllowableTypes = new ObservableCollection < ExtractMethodParameterType >
119
131
{
@@ -144,43 +156,31 @@ public static Dictionary<ExtractMethodParameterType, string> ParameterTypes
144
156
public static bool operator == ( ExtractMethodParameter left , ExtractMethodParameter right )
145
157
{
146
158
return left ? . ParameterType == right ? . ParameterType &&
147
- left ? . TypeName == right ? . TypeName &&
148
- left ? . Name == right ? . Name &&
149
- left ? . IsArray == right ? . IsArray &&
150
159
left ? . CanReturn == right ? . CanReturn &&
151
- left ? . IsObject == right ? . IsObject ;
160
+ left ? . Declaration == right ? . Declaration ;
152
161
}
153
162
154
163
public static bool operator != ( ExtractMethodParameter left , ExtractMethodParameter right )
155
164
{
156
165
return ! ( left ? . ParameterType == right ? . ParameterType &&
157
- left ? . TypeName == right ? . TypeName &&
158
- left ? . Name == right ? . Name &&
159
- left ? . IsArray == right ? . IsArray &&
160
166
left ? . CanReturn == right ? . CanReturn &&
161
- left ? . IsObject == right ? . IsObject ) ;
167
+ left ? . Declaration == right ? . Declaration ) ;
162
168
}
163
169
164
170
public override bool Equals ( object obj )
165
171
{
166
172
return obj is ExtractMethodParameter parameter &&
167
- Name == parameter . Name &&
168
- TypeName == parameter . TypeName &&
169
173
CanReturn == parameter . CanReturn &&
170
174
ParameterType == parameter . ParameterType &&
171
- IsArray == parameter . IsArray &&
172
- IsObject == parameter . IsObject ;
175
+ Declaration == parameter . Declaration ;
173
176
}
174
177
175
178
public override int GetHashCode ( )
176
179
{
177
180
int hashCode = 1661774273 ;
178
- hashCode = ( hashCode * - 1521134295 ) + EqualityComparer < string > . Default . GetHashCode ( Name ) ;
179
- hashCode = ( hashCode * - 1521134295 ) + EqualityComparer < string > . Default . GetHashCode ( TypeName ) ;
180
181
hashCode = ( hashCode * - 1521134295 ) + CanReturn . GetHashCode ( ) ;
181
182
hashCode = ( hashCode * - 1521134295 ) + ParameterType . GetHashCode ( ) ;
182
- hashCode = ( hashCode * - 1521134295 ) + IsArray . GetHashCode ( ) ;
183
- hashCode = ( hashCode * - 1521134295 ) + IsObject . GetHashCode ( ) ;
183
+ hashCode = ( hashCode * - 1521134295 ) + ( Declaration == null ? 0 : Declaration . GetHashCode ( ) ) ;
184
184
return hashCode ;
185
185
}
186
186
}
0 commit comments