313 references to DynamicallyAccessedMemberTypes
ILLink.RoslynAnalyzer (313)
DataFlow\DynamicallyAccessedMembersBinder.cs (17)
17
public static IEnumerable<ISymbol> GetDynamicallyAccessedMembers (this ITypeSymbol typeDefinition,
DynamicallyAccessedMemberTypes
memberTypes, bool declaredOnly = false)
19
if (memberTypes ==
DynamicallyAccessedMemberTypes
.None)
22
if (memberTypes ==
DynamicallyAccessedMemberTypes
.All) {
32
if (memberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.NonPublicConstructors)) {
38
if (memberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.PublicConstructors)) {
44
if (memberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor)) {
49
if (memberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.NonPublicMethods)) {
55
if (memberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.PublicMethods)) {
60
if (memberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.NonPublicFields)) {
66
if (memberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.PublicFields)) {
71
if (memberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes)) {
82
if (memberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.PublicNestedTypes)) {
93
if (memberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.NonPublicProperties)) {
99
if (memberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.PublicProperties)) {
104
if (memberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.NonPublicEvents)) {
110
if (memberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.PublicEvents)) {
115
if (memberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.Interfaces)) {
DynamicallyAccessedMembersAnalyzer.cs (25)
153
if (member is IFieldSymbol field && field.GetDynamicallyAccessedMemberTypes () !=
DynamicallyAccessedMemberTypes
.None && !field.Type.IsTypeInterestingForDataflow (isByRef: field.RefKind is not RefKind.None))
156
if (method.GetDynamicallyAccessedMemberTypesOnReturnType () !=
DynamicallyAccessedMemberTypes
.None && !method.ReturnType.IsTypeInterestingForDataflow (isByRef: method.ReturnsByRef))
158
if (method.GetDynamicallyAccessedMemberTypes () !=
DynamicallyAccessedMemberTypes
.None && !method.ContainingType.IsTypeInterestingForDataflow (isByRef: false))
161
if (parameter.GetDynamicallyAccessedMemberTypes () !=
DynamicallyAccessedMemberTypes
.None && !parameter.Type.IsTypeInterestingForDataflow (isByRef: parameter.RefKind is not RefKind.None))
164
} else if (member is IPropertySymbol property && property.GetDynamicallyAccessedMemberTypes () !=
DynamicallyAccessedMemberTypes
.None && !property.Type.IsTypeInterestingForDataflow (isByRef: property.ReturnsByRef)) {
179
var
overrideMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation (overrideMethod);
180
var
baseMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation (baseMethod);
183
(IMethodSymbol attributableMethod,
DynamicallyAccessedMemberTypes
missingAttribute) = GetTargetAndRequirements (overrideMethod,
202
var
baseParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation (baseParam);
203
var
overrideParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation (overrideParam);
205
(IMethodSymbol attributableMethod,
DynamicallyAccessedMemberTypes
missingAttribute) = GetTargetAndRequirements (overrideMethod,
225
var
methodTypeParameterAnnotation = overrideMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes ();
226
var
overriddenMethodTypeParameterAnnotation = baseMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes ();
229
(IMethodSymbol attributableMethod,
DynamicallyAccessedMemberTypes
missingAttribute) = GetTargetAndRequirements (overrideMethod, baseMethod, methodTypeParameterAnnotation, overriddenMethodTypeParameterAnnotation);
250
var
overrideMethodThisAnnotation = FlowAnnotations.GetMethodParameterAnnotation (new ParameterProxy (new (overrideMethod), (ParameterIndex) 0));
251
var
baseMethodThisAnnotation = FlowAnnotations.GetMethodParameterAnnotation (new ParameterProxy (new (baseMethod), (ParameterIndex) 0));
284
|| propertySymbol.GetDynamicallyAccessedMemberTypes () ==
DynamicallyAccessedMemberTypes
.None)
289
&& methodSymbol.GetDynamicallyAccessedMemberTypesOnReturnType () !=
DynamicallyAccessedMemberTypes
.None
292
&& methodSymbol.Parameters[methodSymbol.Parameters.Length - 1].GetDynamicallyAccessedMemberTypes () !=
DynamicallyAccessedMemberTypes
.None) {
303
private static (IMethodSymbol Method,
DynamicallyAccessedMemberTypes
Requirements) GetTargetAndRequirements (IMethodSymbol method, IMethodSymbol overriddenMethod,
DynamicallyAccessedMemberTypes
methodAnnotation,
DynamicallyAccessedMemberTypes
overriddenMethodAnnotation)
305
DynamicallyAccessedMemberTypes
mismatchedArgument;
307
if (methodAnnotation ==
DynamicallyAccessedMemberTypes
.None) {
317
private static (Location[]?, Dictionary<string, string?>?) CreateArguments (Location attributableSymbolLocation,
DynamicallyAccessedMemberTypes
mismatchedArgument)
DynamicallyAccessedMembersTypeHierarchy.cs (7)
17
var
annotation = FlowAnnotations.GetTypeAnnotation (type);
24
var
baseAnnotation = FlowAnnotations.GetTypeAnnotation (baseType);
25
var
annotationToApplyToBase = Annotations.GetMissingMemberTypes (annotation, baseAnnotation);
35
if (annotation.HasFlag (
DynamicallyAccessedMemberTypes
.Interfaces))
37
var
annotationToApplyToInterfaces = annotation ==
DynamicallyAccessedMemberTypes
.All ? annotation :
DynamicallyAccessedMemberTypes
.Interfaces;
ISymbolExtensions.cs (8)
56
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypes (this ISymbol symbol)
59
return
DynamicallyAccessedMemberTypes
.None;
61
return (
DynamicallyAccessedMemberTypes
) dynamicallyAccessedMembers!.ConstructorArguments[0].Value!;
64
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesOnReturnType (this IMethodSymbol methodSymbol)
75
return
DynamicallyAccessedMemberTypes
.None;
77
return (
DynamicallyAccessedMemberTypes
) dynamicallyAccessedMembers.ConstructorArguments[0].Value!;
103
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesOnAssociatedSymbol (this IMethodSymbol methodSymbol) =>
104
methodSymbol.AssociatedSymbol is ISymbol associatedSymbol ? GetDynamicallyAccessedMemberTypes (associatedSymbol) :
DynamicallyAccessedMemberTypes
.None;
src\tools\illink\src\ILLink.Shared\Annotations.cs (31)
19
DynamicallyAccessedMemberTypes
sourceMemberTypes,
20
DynamicallyAccessedMemberTypes
targetMemberTypes,
25
var
missingMemberTypes = GetMissingMemberTypes (targetMemberTypes, sourceMemberTypes);
26
if (missingMemberTypes ==
DynamicallyAccessedMemberTypes
.None)
33
public static
DynamicallyAccessedMemberTypes
GetMissingMemberTypes (
DynamicallyAccessedMemberTypes
requiredMemberTypes,
DynamicallyAccessedMemberTypes
availableMemberTypes)
36
return
DynamicallyAccessedMemberTypes
.None;
38
if (requiredMemberTypes ==
DynamicallyAccessedMemberTypes
.All)
39
return
DynamicallyAccessedMemberTypes
.All;
41
var
missingMemberTypes = requiredMemberTypes & ~availableMemberTypes;
45
if (requiredMemberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.PublicConstructors) &&
46
!availableMemberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.PublicConstructors))
47
missingMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicConstructors;
52
public static string GetMemberTypesString (
DynamicallyAccessedMemberTypes
memberTypes)
54
Debug.Assert (memberTypes !=
DynamicallyAccessedMemberTypes
.None);
56
if (memberTypes ==
DynamicallyAccessedMemberTypes
.All)
57
return $"'{nameof (
DynamicallyAccessedMemberTypes
)}.{nameof (
DynamicallyAccessedMemberTypes
.All)}'";
60
.Where (damt => (memberTypes & damt) == damt && damt !=
DynamicallyAccessedMemberTypes
.None)
63
if (memberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.PublicConstructors))
64
memberTypesList.Remove (
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor);
67
string mtName = mt ==
DynamicallyAccessedMemberTypes
.Interfaces
68
? nameof (
DynamicallyAccessedMemberTypes
.Interfaces)
71
return $"'{nameof (
DynamicallyAccessedMemberTypes
)}.{mtName}'";
75
private static readonly
DynamicallyAccessedMemberTypes
[] AllDynamicallyAccessedMemberTypes = GetAllDynamicallyAccessedMemberTypes ();
77
private static
DynamicallyAccessedMemberTypes
[] GetAllDynamicallyAccessedMemberTypes ()
79
var values = new HashSet<
DynamicallyAccessedMemberTypes
> (
80
Enum.GetValues (typeof (
DynamicallyAccessedMemberTypes
))
81
.Cast<
DynamicallyAccessedMemberTypes
> ());
82
values.Add (
DynamicallyAccessedMemberTypes
.Interfaces);
src\tools\illink\src\ILLink.Shared\DynamicallyAccessedMemberTypesEx.cs (24)
13
public const
DynamicallyAccessedMemberTypes
NonPublicConstructorsWithInherited =
DynamicallyAccessedMemberTypes
.NonPublicConstructors | (
DynamicallyAccessedMemberTypes
) 0x4000;
18
public const
DynamicallyAccessedMemberTypes
NonPublicMethodsWithInherited =
DynamicallyAccessedMemberTypes
.NonPublicMethods | (
DynamicallyAccessedMemberTypes
) 0x8000;
23
public const
DynamicallyAccessedMemberTypes
NonPublicFieldsWithInherited =
DynamicallyAccessedMemberTypes
.NonPublicFields | (
DynamicallyAccessedMemberTypes
) 0x10000;
28
public const
DynamicallyAccessedMemberTypes
NonPublicNestedTypesWithInherited =
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes | (
DynamicallyAccessedMemberTypes
) 0x20000;
33
public const
DynamicallyAccessedMemberTypes
NonPublicPropertiesWithInherited =
DynamicallyAccessedMemberTypes
.NonPublicProperties | (
DynamicallyAccessedMemberTypes
) 0x40000;
38
public const
DynamicallyAccessedMemberTypes
NonPublicEventsWithInherited =
DynamicallyAccessedMemberTypes
.NonPublicEvents | (
DynamicallyAccessedMemberTypes
) 0x80000;
43
public const
DynamicallyAccessedMemberTypes
PublicConstructorsWithInherited =
DynamicallyAccessedMemberTypes
.PublicConstructors | (
DynamicallyAccessedMemberTypes
) 0x100000;
48
public const
DynamicallyAccessedMemberTypes
PublicNestedTypesWithInherited =
DynamicallyAccessedMemberTypes
.PublicNestedTypes | (
DynamicallyAccessedMemberTypes
) 0x200000;
src\tools\illink\src\ILLink.Shared\TrimAnalysis\FlowAnnotations.cs (4)
22
internal partial MethodReturnValue GetMethodReturnValue (MethodProxy method, bool isNewObj,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes);
28
internal partial GenericParameterValue GetGenericParameterValue (GenericParameterProxy genericParameter,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes);
30
internal partial MethodParameterValue GetMethodThisParameterValue (MethodProxy method,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes);
34
internal partial MethodParameterValue GetMethodParameterValue (ParameterProxy param,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes);
src\tools\illink\src\ILLink.Shared\TrimAnalysis\HandleCallAction.cs (145)
86
Debug.Assert (requiresDataFlowAnalysis || annotatedMethodReturnValue.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.None);
223
var targetValue = _annotations.GetMethodThisParameterValue (calledMethod,
DynamicallyAccessedMemberTypes
.Interfaces);
239
DynamicallyAccessedMemberTypes
returnMemberTypes =
DynamicallyAccessedMemberTypes
.Interfaces;
243
&& valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.All)
244
returnMemberTypes =
DynamicallyAccessedMemberTypes
.All;
262
var targetValue = _annotations.GetMethodThisParameterValue (calledMethod,
DynamicallyAccessedMemberTypes
.Interfaces);
268
DynamicallyAccessedMemberTypes
returnMemberTypes =
DynamicallyAccessedMemberTypes
.Interfaces;
272
&& valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.All)
273
returnMemberTypes =
DynamicallyAccessedMemberTypes
.All;
324
&& (damAnnotatedHandle.UnderlyingTypeValue.DynamicallyAccessedMemberTypes &
DynamicallyAccessedMemberTypes
.NonPublicConstructors) != 0) {
352
DynamicallyAccessedMemberTypes
memberTypes;
355
IntrinsicId.Type_GetConstructors__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicConstructors |
DynamicallyAccessedMemberTypes
.NonPublicConstructors,
356
IntrinsicId.Type_GetMethods__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicMethods |
DynamicallyAccessedMemberTypes
.NonPublicMethods,
357
IntrinsicId.Type_GetEvents__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicEvents |
DynamicallyAccessedMemberTypes
.NonPublicEvents,
358
IntrinsicId.Type_GetFields__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields,
359
IntrinsicId.Type_GetProperties__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties,
360
IntrinsicId.Type_GetNestedTypes__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicNestedTypes |
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes,
361
IntrinsicId.Type_GetMembers__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicConstructors |
DynamicallyAccessedMemberTypes
.NonPublicConstructors |
362
DynamicallyAccessedMemberTypes
.PublicEvents |
DynamicallyAccessedMemberTypes
.NonPublicEvents |
363
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields |
364
DynamicallyAccessedMemberTypes
.PublicMethods |
DynamicallyAccessedMemberTypes
.NonPublicMethods |
365
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties |
366
DynamicallyAccessedMemberTypes
.PublicNestedTypes |
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes,
415
DynamicallyAccessedMemberTypes
memberTypes = intrinsicId switch {
474
DynamicallyAccessedMemberTypes
requiredMemberTypes;
476
requiredMemberTypes =
DynamicallyAccessedMemberTypes
.PublicConstructors |
DynamicallyAccessedMemberTypes
.NonPublicConstructors |
477
DynamicallyAccessedMemberTypes
.PublicEvents |
DynamicallyAccessedMemberTypes
.NonPublicEvents |
478
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields |
479
DynamicallyAccessedMemberTypes
.PublicMethods |
DynamicallyAccessedMemberTypes
.NonPublicMethods |
480
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties |
481
DynamicallyAccessedMemberTypes
.PublicNestedTypes |
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes;
563
const
DynamicallyAccessedMemberTypes
ImplicitNestedTypeAccessLevel =
565
DynamicallyAccessedMemberTypes
.PublicMethods | DynamicallyAccessedMemberTypesEx.NonPublicMethodsWithInherited |
566
DynamicallyAccessedMemberTypes
.PublicFields | DynamicallyAccessedMemberTypesEx.NonPublicFieldsWithInherited |
567
DynamicallyAccessedMemberTypes
.PublicProperties | DynamicallyAccessedMemberTypesEx.NonPublicPropertiesWithInherited |
568
DynamicallyAccessedMemberTypes
.PublicEvents | DynamicallyAccessedMemberTypesEx.NonPublicEventsWithInherited |
570
DynamicallyAccessedMemberTypes
.Interfaces;
610
if (value is ValueWithDynamicallyAccessedMembers { DynamicallyAccessedMemberTypes:
DynamicallyAccessedMemberTypes
.All })
611
AddReturnValue (_annotations.GetMethodReturnValue (calledMethod, _isNewObj,
DynamicallyAccessedMemberTypes
.All));
638
DynamicallyAccessedMemberTypes
requiredMemberTypes = intrinsicId switch {
639
IntrinsicId.RuntimeReflectionExtensions_GetRuntimeEvent =>
DynamicallyAccessedMemberTypes
.PublicEvents,
640
IntrinsicId.RuntimeReflectionExtensions_GetRuntimeField =>
DynamicallyAccessedMemberTypes
.PublicFields,
641
IntrinsicId.RuntimeReflectionExtensions_GetRuntimeMethod =>
DynamicallyAccessedMemberTypes
.PublicMethods,
642
IntrinsicId.RuntimeReflectionExtensions_GetRuntimeProperty =>
DynamicallyAccessedMemberTypes
.PublicProperties,
695
var targetValue = _annotations.GetMethodParameterValue (new (calledMethod, (ParameterIndex) 0),
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor);
731
_annotations.GetMethodParameterValue (new (calledMethod, (ParameterIndex) 1),
DynamicallyAccessedMemberTypes
.None).GetDiagnosticArgumentsForAnnotationMismatch ().ToArray ());
744
DynamicallyAccessedMemberTypes
memberTypes = intrinsicId == IntrinsicId.Expression_Property
745
?
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties
746
:
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields;
983
DynamicallyAccessedMemberTypes
propagatedMemberTypes =
DynamicallyAccessedMemberTypes
.None;
984
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.All)
985
propagatedMemberTypes =
DynamicallyAccessedMemberTypes
.All;
995
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.PublicEvents))
996
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicEvents;
1001
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.PublicFields))
1002
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicFields;
1007
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.PublicMethods))
1008
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicMethods;
1023
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.PublicProperties))
1024
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicProperties;
1029
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.Interfaces))
1030
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.Interfaces;
1089
var
requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors (bindingFlags);
1091
if (requiredMemberTypes ==
DynamicallyAccessedMemberTypes
.PublicConstructors && ctorParameterCount == 0)
1092
requiredMemberTypes =
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor;
1186
var
requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors (bindingFlags);
1189
if (ctorParameterCount == 0 && requiredMemberTypes.HasFlag (
DynamicallyAccessedMemberTypes
.PublicConstructors)) {
1190
requiredMemberTypes &= ~
DynamicallyAccessedMemberTypes
.PublicConstructors;
1191
requiredMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor;
1314
if (GetGenericParameterEffectiveMemberTypes (genericParameter) !=
DynamicallyAccessedMemberTypes
.None) {
1360
static
DynamicallyAccessedMemberTypes
GetGenericParameterEffectiveMemberTypes (GenericParameterValue genericParameter)
1362
DynamicallyAccessedMemberTypes
result = genericParameter.DynamicallyAccessedMemberTypes;
1364
result |=
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor;
1474
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForNestedTypes (BindingFlags? bindingFlags) =>
1475
(HasBindingFlag (bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicNestedTypes :
DynamicallyAccessedMemberTypes
.None) |
1476
(HasBindingFlag (bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes :
DynamicallyAccessedMemberTypes
.None) |
1477
(BindingFlagsAreUnsupported (bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicNestedTypes |
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes :
DynamicallyAccessedMemberTypes
.None);
1479
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors (BindingFlags? bindingFlags) =>
1480
(HasBindingFlag (bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicConstructors :
DynamicallyAccessedMemberTypes
.None) |
1481
(HasBindingFlag (bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicConstructors :
DynamicallyAccessedMemberTypes
.None) |
1482
(BindingFlagsAreUnsupported (bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicConstructors |
DynamicallyAccessedMemberTypes
.NonPublicConstructors :
DynamicallyAccessedMemberTypes
.None);
1484
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForMethods (BindingFlags? bindingFlags) =>
1485
(HasBindingFlag (bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicMethods :
DynamicallyAccessedMemberTypes
.None) |
1486
(HasBindingFlag (bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicMethods :
DynamicallyAccessedMemberTypes
.None) |
1487
(BindingFlagsAreUnsupported (bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicMethods |
DynamicallyAccessedMemberTypes
.NonPublicMethods :
DynamicallyAccessedMemberTypes
.None);
1489
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForFields (BindingFlags? bindingFlags) =>
1490
(HasBindingFlag (bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicFields :
DynamicallyAccessedMemberTypes
.None) |
1491
(HasBindingFlag (bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicFields :
DynamicallyAccessedMemberTypes
.None) |
1492
(BindingFlagsAreUnsupported (bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields :
DynamicallyAccessedMemberTypes
.None);
1494
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForProperties (BindingFlags? bindingFlags) =>
1495
(HasBindingFlag (bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicProperties :
DynamicallyAccessedMemberTypes
.None) |
1496
(HasBindingFlag (bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicProperties :
DynamicallyAccessedMemberTypes
.None) |
1497
(BindingFlagsAreUnsupported (bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties :
DynamicallyAccessedMemberTypes
.None);
1499
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForEvents (BindingFlags? bindingFlags) =>
1500
(HasBindingFlag (bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicEvents :
DynamicallyAccessedMemberTypes
.None) |
1501
(HasBindingFlag (bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicEvents :
DynamicallyAccessedMemberTypes
.None) |
1502
(BindingFlagsAreUnsupported (bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicEvents |
DynamicallyAccessedMemberTypes
.NonPublicEvents :
DynamicallyAccessedMemberTypes
.None);
1504
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForMembers (BindingFlags? bindingFlags) =>
src\tools\illink\src\ILLink.Shared\TrimAnalysis\NullableValueWithDynamicallyAccessedMembers.cs (1)
31
public override
DynamicallyAccessedMemberTypes
DynamicallyAccessedMemberTypes => UnderlyingTypeValue.DynamicallyAccessedMemberTypes;
src\tools\illink\src\ILLink.Shared\TrimAnalysis\RequireDynamicallyAccessedMembersAction.cs (5)
23
if (targetValue.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.None)
27
if (targetValue.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor
31
} else if (targetValue.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.PublicFields
39
var
availableMemberTypes = valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes;
74
private partial void MarkTypeForDynamicallyAccessedMembers (in TypeProxy type,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes);
src\tools\illink\src\ILLink.Shared\TrimAnalysis\ValueWithDynamicallyAccessedMembers.cs (1)
15
public abstract
DynamicallyAccessedMemberTypes
DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\FieldValue.cs (1)
23
public override
DynamicallyAccessedMemberTypes
DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\FlowAnnotations.cs (26)
27
if (GetMethodReturnValueAnnotation (method) !=
DynamicallyAccessedMemberTypes
.None)
31
if (GetMethodParameterAnnotation (param) !=
DynamicallyAccessedMemberTypes
.None)
48
if (GetMethodReturnValueAnnotation (method) ==
DynamicallyAccessedMemberTypes
.None) {
98
if (GetMethodParameterAnnotation (param) !=
DynamicallyAccessedMemberTypes
.None)
107
return GetFieldAnnotation (field) !=
DynamicallyAccessedMemberTypes
.None;
110
internal static
DynamicallyAccessedMemberTypes
GetFieldAnnotation (IFieldSymbol field)
113
return
DynamicallyAccessedMemberTypes
.None;
118
internal static
DynamicallyAccessedMemberTypes
GetTypeAnnotations (INamedTypeSymbol type)
120
DynamicallyAccessedMemberTypes
typeAnnotation = type.GetDynamicallyAccessedMemberTypes ();
137
internal static
DynamicallyAccessedMemberTypes
GetMethodParameterAnnotation (ParameterProxy param)
141
return
DynamicallyAccessedMemberTypes
.None;
148
return
DynamicallyAccessedMemberTypes
.None;
150
var
damt = parameter.GetDynamicallyAccessedMemberTypes ();
160
&& damt ==
DynamicallyAccessedMemberTypes
.None
170
public static
DynamicallyAccessedMemberTypes
GetMethodReturnValueAnnotation (IMethodSymbol method)
173
return
DynamicallyAccessedMemberTypes
.None;
175
var
returnDamt = method.GetDynamicallyAccessedMemberTypesOnReturnType ();
180
if (method.MethodKind is MethodKind.PropertyGet && returnDamt ==
DynamicallyAccessedMemberTypes
.None) {
189
public static
DynamicallyAccessedMemberTypes
GetTypeAnnotation(ITypeSymbol type)
191
var
typeAnnotation = type.GetDynamicallyAccessedMemberTypes ();
214
internal partial MethodReturnValue GetMethodReturnValue (MethodProxy method, bool isNewObj,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
220
internal partial GenericParameterValue GetGenericParameterValue (GenericParameterProxy genericParameter,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
226
internal partial MethodParameterValue GetMethodThisParameterValue (MethodProxy method,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
238
var
damt = GetMethodParameterAnnotation (param);
242
internal MethodParameterValue GetMethodParameterValue (MethodProxy method, ParameterIndex parameterIndex,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
248
internal partial MethodParameterValue GetMethodParameterValue (ParameterProxy param,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
TrimAnalysis\GenericArgumentDataFlow.cs (2)
46
if (genericParameterValue.DynamicallyAccessedMemberTypes !=
DynamicallyAccessedMemberTypes
.None) {
102
if (genericParameterValue.DynamicallyAccessedMemberTypes !=
DynamicallyAccessedMemberTypes
.None)
TrimAnalysis\GenericParameterValue.cs (2)
18
public GenericParameterValue (ITypeParameterSymbol typeParameterSymbol,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
29
public override
DynamicallyAccessedMemberTypes
DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\HandleCallAction.cs (4)
92
DynamicallyAccessedMemberTypes
annotation = default;
96
annotation =
DynamicallyAccessedMemberTypes
.PublicFields;
124
AddReturnValue (FlowAnnotations.Instance.GetMethodReturnValue (calledMethod, _isNewObj,
DynamicallyAccessedMemberTypes
.PublicFields));
126
var
annotation = FlowAnnotations.GetTypeAnnotation (staticType);
TrimAnalysis\MethodParameterValue.cs (3)
14
public MethodParameterValue (IMethodSymbol methodSymbol, ParameterIndex parameterIndex,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
20
public MethodParameterValue (ParameterProxy parameter,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
27
public override
DynamicallyAccessedMemberTypes
DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\MethodReturnValue.cs (2)
20
public MethodReturnValue (IMethodSymbol methodSymbol, bool isNewObj,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
30
public override
DynamicallyAccessedMemberTypes
DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\ReflectionAccessAnalyzer.cs (4)
27
internal void GetReflectionAccessDiagnostics (Location location, ITypeSymbol typeSymbol,
DynamicallyAccessedMemberTypes
requiredMemberTypes, bool declaredOnly = false)
154
if (methodSymbol.IsVirtual && FlowAnnotations.GetMethodReturnValueAnnotation (methodSymbol) !=
DynamicallyAccessedMemberTypes
.None) {
158
if (FlowAnnotations.GetMethodParameterAnnotation (parameter) !=
DynamicallyAccessedMemberTypes
.None) {
194
if (FlowAnnotations.GetFieldAnnotation (fieldSymbol) !=
DynamicallyAccessedMemberTypes
.None) {
TrimAnalysis\RequireDynamicallyAccessedMembersAction.cs (1)
37
private partial void MarkTypeForDynamicallyAccessedMembers (in TypeProxy type,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes) =>