@@ -35,7 +35,7 @@ internal static class GetX
35
35
TryGetFlagsOrDefault ( invocation , getX , context , out flagsArg , out effectiveFlags ) &&
36
36
TryGetTypesOrDefault ( invocation , getX , context , out typesArg , out types ) )
37
37
{
38
- return TryGetTarget ( getX , targetType , ".ctor" , effectiveFlags , types , context , out target ) ;
38
+ return TryGetMember ( getX , targetType , ".ctor" , effectiveFlags , types , context , out target ) ;
39
39
}
40
40
41
41
return null ;
@@ -78,7 +78,7 @@ internal static class GetX
78
78
TryGetFlagsOrDefault ( invocation , getX , context , out flagsArg , out effectiveFlags ) &&
79
79
TryGetTypesOrDefault ( invocation , getX , context , out typesArg , out types ) )
80
80
{
81
- return TryGetTarget ( getX , targetType , targetName , effectiveFlags , types , context , out target ) ;
81
+ return TryGetMember ( getX , targetType , targetName , effectiveFlags , types , context , out target ) ;
82
82
}
83
83
84
84
return null ;
@@ -105,7 +105,7 @@ internal static class GetX
105
105
TryGetFlagsOrDefault ( invocation , getX , context , out flagsArg , out effectiveFlags ) &&
106
106
TryGetTypesOrDefault ( invocation , getX , context , out typesArg , out types ) )
107
107
{
108
- return TryGetTarget ( getX , targetType , targetName , effectiveFlags , types , context , out target ) ;
108
+ return TryGetMember ( getX , targetType , targetName , effectiveFlags , types , context , out target ) ;
109
109
}
110
110
111
111
return null ;
@@ -143,27 +143,27 @@ internal static bool TryGetTargetType(InvocationExpressionSyntax getX, SyntaxNod
143
143
TryGetTargetType ( memberAccess . Expression , context , null , out result , out instance ) ;
144
144
}
145
145
146
- internal static GetXResult TryGetTarget ( IMethodSymbol getX , ITypeSymbol targetType , string targetMetadataName , BindingFlags flags , IReadOnlyList < ITypeSymbol > types , SyntaxNodeAnalysisContext context , out ISymbol target )
146
+ internal static GetXResult TryGetMember ( IMethodSymbol getX , ITypeSymbol targetType , string targetMetadataName , BindingFlags flags , IReadOnlyList < ITypeSymbol > types , SyntaxNodeAnalysisContext context , out ISymbol member )
147
147
{
148
148
var name = TrimName ( ) ;
149
- target = null ;
149
+ member = null ;
150
150
if ( targetType is ITypeParameterSymbol typeParameter )
151
151
{
152
152
if ( typeParameter . ConstraintTypes . Length == 0 )
153
153
{
154
- return TryGetTarget ( getX , context . Compilation . GetSpecialType ( SpecialType . System_Object ) , name , flags , types , context , out target ) ;
154
+ return TryGetMember ( getX , context . Compilation . GetSpecialType ( SpecialType . System_Object ) , name , flags , types , context , out member ) ;
155
155
}
156
156
157
157
foreach ( var constraintType in typeParameter . ConstraintTypes )
158
158
{
159
- var result = TryGetTarget ( getX , constraintType , name , flags , types , context , out target ) ;
159
+ var result = TryGetMember ( getX , constraintType , name , flags , types , context , out member ) ;
160
160
if ( result != GetXResult . NoMatch )
161
161
{
162
162
return result ;
163
163
}
164
164
}
165
165
166
- return TryGetTarget ( getX , context . Compilation . GetSpecialType ( SpecialType . System_Object ) , name , flags , types , context , out target ) ;
166
+ return TryGetMember ( getX , context . Compilation . GetSpecialType ( SpecialType . System_Object ) , name , flags , types , context , out member ) ;
167
167
}
168
168
169
169
if ( getX == KnownSymbol . Type . GetNestedType ||
@@ -179,10 +179,10 @@ internal static GetXResult TryGetTarget(IMethodSymbol getX, ITypeSymbol targetTy
179
179
continue ;
180
180
}
181
181
182
- if ( target == null )
182
+ if ( member == null )
183
183
{
184
- target = candidate ;
185
- if ( IsOfWrongType ( target ) )
184
+ member = candidate ;
185
+ if ( IsOfWrongType ( member ) )
186
186
{
187
187
return GetXResult . WrongMemberType ;
188
188
}
@@ -193,41 +193,41 @@ internal static GetXResult TryGetTarget(IMethodSymbol getX, ITypeSymbol targetTy
193
193
}
194
194
}
195
195
196
- if ( target != null )
196
+ if ( member != null )
197
197
{
198
198
return GetXResult . Single ;
199
199
}
200
200
201
- if ( targetType . TryFindFirstMemberRecursive ( name , out target ) )
201
+ if ( targetType . TryFindFirstMemberRecursive ( name , out member ) )
202
202
{
203
203
if ( getX == KnownSymbol . Type . GetNestedType &&
204
- ! targetType . Equals ( target . ContainingType ) )
204
+ ! targetType . Equals ( member . ContainingType ) )
205
205
{
206
206
return GetXResult . UseContainingType ;
207
207
}
208
208
209
- if ( target . IsStatic &&
210
- target . DeclaredAccessibility == Accessibility . Private &&
211
- ! targetType . Equals ( target . ContainingType ) )
209
+ if ( member . IsStatic &&
210
+ member . DeclaredAccessibility == Accessibility . Private &&
211
+ ! targetType . Equals ( member . ContainingType ) )
212
212
{
213
213
return GetXResult . UseContainingType ;
214
214
}
215
215
216
- if ( target . MetadataName == targetMetadataName &&
217
- ! MatchesFilter ( target , target . MetadataName , flags , null ) )
216
+ if ( member . MetadataName == targetMetadataName &&
217
+ ! MatchesFilter ( member , member . MetadataName , flags , null ) )
218
218
{
219
219
return GetXResult . WrongFlags ;
220
220
}
221
221
222
- if ( ! target . ContainingType . Equals ( targetType ) &&
223
- ( target . IsStatic ||
222
+ if ( ! member . ContainingType . Equals ( targetType ) &&
223
+ ( member . IsStatic ||
224
224
flags . HasFlagFast ( BindingFlags . DeclaredOnly ) ) )
225
225
{
226
226
return GetXResult . WrongFlags ;
227
227
}
228
228
}
229
229
230
- if ( IsExplicitImplementation ( out target ) )
230
+ if ( IsExplicitImplementation ( out member ) )
231
231
{
232
232
return GetXResult . ExplicitImplementation ;
233
233
}
@@ -244,36 +244,36 @@ internal static GetXResult TryGetTarget(IMethodSymbol getX, ITypeSymbol targetTy
244
244
var current = targetType ;
245
245
while ( current != null )
246
246
{
247
- foreach ( var member in current . GetMembers ( name ) )
247
+ foreach ( var candidate in current . GetMembers ( name ) )
248
248
{
249
- if ( ! MatchesFilter ( member , targetMetadataName , flags , types ) )
249
+ if ( ! MatchesFilter ( candidate , targetMetadataName , flags , types ) )
250
250
{
251
251
continue ;
252
252
}
253
253
254
- if ( target == null )
254
+ if ( member == null )
255
255
{
256
- target = member ;
257
- if ( target . IsStatic &&
258
- target . DeclaredAccessibility == Accessibility . Private &&
259
- ! target . ContainingType . Equals ( targetType ) )
256
+ member = candidate ;
257
+ if ( member . IsStatic &&
258
+ member . DeclaredAccessibility == Accessibility . Private &&
259
+ ! member . ContainingType . Equals ( targetType ) )
260
260
{
261
261
return GetXResult . UseContainingType ;
262
262
}
263
263
264
- if ( member . IsStatic &&
264
+ if ( candidate . IsStatic &&
265
265
! current . Equals ( targetType ) &&
266
266
! flags . HasFlagFast ( BindingFlags . FlattenHierarchy ) )
267
267
{
268
268
return GetXResult . WrongFlags ;
269
269
}
270
270
271
- if ( IsOfWrongType ( member ) )
271
+ if ( IsOfWrongType ( candidate ) )
272
272
{
273
273
return GetXResult . WrongMemberType ;
274
274
}
275
275
}
276
- else if ( IsOverriding ( target , member ) )
276
+ else if ( IsOverriding ( member , candidate ) )
277
277
{
278
278
// continue
279
279
}
@@ -286,18 +286,18 @@ internal static GetXResult TryGetTarget(IMethodSymbol getX, ITypeSymbol targetTy
286
286
current = current . BaseType ;
287
287
}
288
288
289
- if ( target == null )
289
+ if ( member == null )
290
290
{
291
- if ( targetType . TryFindFirstMemberRecursive ( name , out target ) )
291
+ if ( targetType . TryFindFirstMemberRecursive ( name , out member ) )
292
292
{
293
- if ( target . MetadataName == targetMetadataName &&
294
- ! MatchesFilter ( target , target . MetadataName , flags , null ) )
293
+ if ( member . MetadataName == targetMetadataName &&
294
+ ! MatchesFilter ( member , member . MetadataName , flags , null ) )
295
295
{
296
296
return GetXResult . WrongFlags ;
297
297
}
298
298
}
299
299
300
- if ( IsExplicitImplementation ( out target ) )
300
+ if ( IsExplicitImplementation ( out member ) )
301
301
{
302
302
return GetXResult . ExplicitImplementation ;
303
303
}
@@ -312,34 +312,34 @@ internal static GetXResult TryGetTarget(IMethodSymbol getX, ITypeSymbol targetTy
312
312
313
313
return GetXResult . Single ;
314
314
315
- bool IsOfWrongType ( ISymbol member )
315
+ bool IsOfWrongType ( ISymbol candidate )
316
316
{
317
317
if ( getX . ReturnType == KnownSymbol . EventInfo &&
318
- ! ( member is IEventSymbol ) )
318
+ ! ( candidate is IEventSymbol ) )
319
319
{
320
320
return true ;
321
321
}
322
322
323
323
if ( getX . ReturnType == KnownSymbol . FieldInfo &&
324
- ! ( member is IFieldSymbol ) )
324
+ ! ( candidate is IFieldSymbol ) )
325
325
{
326
326
return true ;
327
327
}
328
328
329
329
if ( getX . ReturnType == KnownSymbol . MethodInfo &&
330
- ! ( member is IMethodSymbol ) )
330
+ ! ( candidate is IMethodSymbol ) )
331
331
{
332
332
return true ;
333
333
}
334
334
335
335
if ( getX . ReturnType == KnownSymbol . PropertyInfo &&
336
- ! ( member is IPropertySymbol ) )
336
+ ! ( candidate is IPropertySymbol ) )
337
337
{
338
338
return true ;
339
339
}
340
340
341
341
if ( getX . ReturnType == KnownSymbol . Type &&
342
- ! ( member is ITypeSymbol ) )
342
+ ! ( candidate is ITypeSymbol ) )
343
343
{
344
344
return true ;
345
345
}
@@ -430,12 +430,12 @@ bool IsKnownArgument(IParameterSymbol parameter)
430
430
/// <summary>
431
431
/// Handles GetField, GetEvent, GetMember, GetMethod...
432
432
/// </summary>
433
- private static GetXResult ? TryMatchGetX ( InvocationExpressionSyntax invocation , QualifiedMethod getXMethod , SyntaxNodeAnalysisContext context , out ITypeSymbol targetType , out ArgumentSyntax nameArg , out string targetName , out ISymbol target , out ArgumentSyntax flagsArg , out BindingFlags effectiveFlags )
433
+ private static GetXResult ? TryMatchGetX ( InvocationExpressionSyntax invocation , QualifiedMethod getXMethod , SyntaxNodeAnalysisContext context , out ITypeSymbol targetType , out ArgumentSyntax nameArg , out string targetName , out ISymbol member , out ArgumentSyntax flagsArg , out BindingFlags effectiveFlags )
434
434
{
435
435
targetType = null ;
436
436
nameArg = null ;
437
437
targetName = null ;
438
- target = null ;
438
+ member = null ;
439
439
flagsArg = null ;
440
440
effectiveFlags = 0 ;
441
441
if ( invocation . ArgumentList != null &&
@@ -444,7 +444,7 @@ bool IsKnownArgument(IParameterSymbol parameter)
444
444
TryGetName ( invocation , getX , context , out nameArg , out targetName ) &&
445
445
TryGetFlagsOrDefault ( invocation , getX , context , out flagsArg , out effectiveFlags ) )
446
446
{
447
- return TryGetTarget ( getX , targetType , targetName , effectiveFlags , null , context , out target ) ;
447
+ return TryGetMember ( getX , targetType , targetName , effectiveFlags , null , context , out member ) ;
448
448
}
449
449
450
450
return null ;
0 commit comments