319 references to DynamicallyAccessedMemberTypes
ILLink.RoslynAnalyzer (319)
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)
33
if (memberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.NonPublicConstructors))
40
if (memberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicConstructors))
47
if (memberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor))
53
if (memberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.NonPublicMethods))
60
if (memberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicMethods))
66
if (memberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.NonPublicFields))
73
if (memberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicFields))
79
if (memberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes))
92
if (memberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicNestedTypes))
105
if (memberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.NonPublicProperties))
112
if (memberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicProperties))
118
if (memberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.NonPublicEvents))
125
if (memberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicEvents))
131
if (memberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.Interfaces))
DynamicallyAccessedMembersAnalyzer.cs (26)
181
if (member is IFieldSymbol field && field.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && !field.Type.IsTypeInterestingForDataflow(isByRef: field.RefKind is not RefKind.None))
185
if (method.GetDynamicallyAccessedMemberTypesOnReturnType() !=
DynamicallyAccessedMemberTypes
.None && !method.ReturnType.IsTypeInterestingForDataflow(isByRef: method.ReturnsByRef))
187
if (method.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && !method.ContainingType.IsTypeInterestingForDataflow(isByRef: false))
191
if (parameter.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && !parameter.Type.IsTypeInterestingForDataflow(isByRef: parameter.RefKind is not RefKind.None))
197
if (property.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && !property.Type.IsTypeInterestingForDataflow(isByRef: property.ReturnsByRef))
199
if (property.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && property.ContainingType.ExtensionParameter != null)
215
var
overrideMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation(overrideMethod);
216
var
baseMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation(baseMethod);
220
(IMethodSymbol attributableMethod,
DynamicallyAccessedMemberTypes
missingAttribute) = GetTargetAndRequirements(overrideMethod,
240
var
baseParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation(baseParam);
241
var
overrideParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation(overrideParam);
244
(IMethodSymbol attributableMethod,
DynamicallyAccessedMemberTypes
missingAttribute) = GetTargetAndRequirements(overrideMethod,
265
var
methodTypeParameterAnnotation = overrideMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes();
266
var
overriddenMethodTypeParameterAnnotation = baseMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes();
270
(IMethodSymbol attributableMethod,
DynamicallyAccessedMemberTypes
missingAttribute) = GetTargetAndRequirements(overrideMethod, baseMethod, methodTypeParameterAnnotation, overriddenMethodTypeParameterAnnotation);
292
var
overrideMethodThisAnnotation = FlowAnnotations.GetMethodParameterAnnotation(new ParameterProxy(new(overrideMethod), (ParameterIndex)0));
293
var
baseMethodThisAnnotation = FlowAnnotations.GetMethodParameterAnnotation(new ParameterProxy(new(baseMethod), (ParameterIndex)0));
329
|| propertySymbol.GetDynamicallyAccessedMemberTypes() ==
DynamicallyAccessedMemberTypes
.None)
339
&& methodSymbol.GetDynamicallyAccessedMemberTypesOnReturnType() !=
DynamicallyAccessedMemberTypes
.None
342
&& methodSymbol.Parameters[methodSymbol.Parameters.Length - 1].GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None)
354
private static (IMethodSymbol Method,
DynamicallyAccessedMemberTypes
Requirements) GetTargetAndRequirements(IMethodSymbol method, IMethodSymbol overriddenMethod,
DynamicallyAccessedMemberTypes
methodAnnotation,
DynamicallyAccessedMemberTypes
overriddenMethodAnnotation)
356
DynamicallyAccessedMemberTypes
mismatchedArgument;
358
if (methodAnnotation ==
DynamicallyAccessedMemberTypes
.None)
371
private static (Location[]?, Dictionary<string, string?>?) CreateArguments(Location attributableSymbolLocation,
DynamicallyAccessedMemberTypes
mismatchedArgument)
DynamicallyAccessedMembersTypeHierarchy.cs (7)
21
var
annotation = FlowAnnotations.GetTypeAnnotation(type);
29
var
baseAnnotation = FlowAnnotations.GetTypeAnnotation(baseType);
30
var
annotationToApplyToBase = Annotations.GetMissingMemberTypes(annotation, baseAnnotation);
40
if (annotation.HasFlag(
DynamicallyAccessedMemberTypes
.Interfaces))
42
var
annotationToApplyToInterfaces = annotation ==
DynamicallyAccessedMemberTypes
.All ? annotation :
DynamicallyAccessedMemberTypes
.Interfaces;
ISymbolExtensions.cs (8)
59
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypes(this ISymbol symbol)
62
return
DynamicallyAccessedMemberTypes
.None;
64
return (
DynamicallyAccessedMemberTypes
)dynamicallyAccessedMembers.ConstructorArguments[0].Value!;
67
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesOnReturnType(this IMethodSymbol methodSymbol)
79
return
DynamicallyAccessedMemberTypes
.None;
81
return (
DynamicallyAccessedMemberTypes
)dynamicallyAccessedMembers.ConstructorArguments[0].Value!;
110
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesOnAssociatedSymbol(this IMethodSymbol methodSymbol) =>
111
methodSymbol.AssociatedSymbol is ISymbol associatedSymbol ? GetDynamicallyAccessedMemberTypes(associatedSymbol) :
DynamicallyAccessedMemberTypes
.None;
RequiresUnreferencedCodeAnalyzer.cs (3)
114
var
parameterRequirements = typeParameter.GetDynamicallyAccessedMemberTypes();
117
parameterRequirements &= ~
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor;
122
genericParameterValue.DynamicallyAccessedMemberTypes !=
DynamicallyAccessedMemberTypes
.None)
src\runtime\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);
68
string mtName = mt ==
DynamicallyAccessedMemberTypes
.Interfaces
69
? nameof(
DynamicallyAccessedMemberTypes
.Interfaces)
72
return $"'{nameof(
DynamicallyAccessedMemberTypes
)}.{mtName}'";
76
private static readonly
DynamicallyAccessedMemberTypes
[] AllDynamicallyAccessedMemberTypes = GetAllDynamicallyAccessedMemberTypes();
78
private static
DynamicallyAccessedMemberTypes
[] GetAllDynamicallyAccessedMemberTypes()
80
var values = new HashSet<
DynamicallyAccessedMemberTypes
>(
81
Enum.GetValues(typeof(
DynamicallyAccessedMemberTypes
))
82
.Cast<
DynamicallyAccessedMemberTypes
>());
83
values.Add(
DynamicallyAccessedMemberTypes
.Interfaces);
src\runtime\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\runtime\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\runtime\src\tools\illink\src\ILLink.Shared\TrimAnalysis\HandleCallAction.cs (145)
95
Debug.Assert(requiresDataFlowAnalysis || annotatedMethodReturnValue.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.None);
269
var targetValue = _annotations.GetMethodThisParameterValue(calledMethod,
DynamicallyAccessedMemberTypes
.Interfaces);
292
DynamicallyAccessedMemberTypes
returnMemberTypes =
DynamicallyAccessedMemberTypes
.Interfaces;
296
&& valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.All)
297
returnMemberTypes =
DynamicallyAccessedMemberTypes
.All;
317
var targetValue = _annotations.GetMethodThisParameterValue(calledMethod,
DynamicallyAccessedMemberTypes
.Interfaces);
324
DynamicallyAccessedMemberTypes
returnMemberTypes =
DynamicallyAccessedMemberTypes
.Interfaces;
328
&& valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.All)
329
returnMemberTypes =
DynamicallyAccessedMemberTypes
.All;
392
&& (damAnnotatedHandle.UnderlyingTypeValue.DynamicallyAccessedMemberTypes &
DynamicallyAccessedMemberTypes
.NonPublicConstructors) != 0)
426
DynamicallyAccessedMemberTypes
memberTypes;
431
IntrinsicId.Type_GetConstructors__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicConstructors |
DynamicallyAccessedMemberTypes
.NonPublicConstructors,
432
IntrinsicId.Type_GetMethods__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicMethods |
DynamicallyAccessedMemberTypes
.NonPublicMethods,
433
IntrinsicId.Type_GetEvents__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicEvents |
DynamicallyAccessedMemberTypes
.NonPublicEvents,
434
IntrinsicId.Type_GetFields__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields,
435
IntrinsicId.Type_GetProperties__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties,
436
IntrinsicId.Type_GetNestedTypes__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicNestedTypes |
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes,
437
IntrinsicId.Type_GetMembers__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicConstructors |
DynamicallyAccessedMemberTypes
.NonPublicConstructors |
438
DynamicallyAccessedMemberTypes
.PublicEvents |
DynamicallyAccessedMemberTypes
.NonPublicEvents |
439
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields |
440
DynamicallyAccessedMemberTypes
.PublicMethods |
DynamicallyAccessedMemberTypes
.NonPublicMethods |
441
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties |
442
DynamicallyAccessedMemberTypes
.PublicNestedTypes |
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes,
496
DynamicallyAccessedMemberTypes
memberTypes = intrinsicId switch
571
DynamicallyAccessedMemberTypes
requiredMemberTypes;
574
requiredMemberTypes =
DynamicallyAccessedMemberTypes
.PublicConstructors |
DynamicallyAccessedMemberTypes
.NonPublicConstructors |
575
DynamicallyAccessedMemberTypes
.PublicEvents |
DynamicallyAccessedMemberTypes
.NonPublicEvents |
576
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields |
577
DynamicallyAccessedMemberTypes
.PublicMethods |
DynamicallyAccessedMemberTypes
.NonPublicMethods |
578
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties |
579
DynamicallyAccessedMemberTypes
.PublicNestedTypes |
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes;
700
const
DynamicallyAccessedMemberTypes
ImplicitNestedTypeAccessLevel =
702
DynamicallyAccessedMemberTypes
.PublicMethods | DynamicallyAccessedMemberTypesEx.NonPublicMethodsWithInherited |
703
DynamicallyAccessedMemberTypes
.PublicFields | DynamicallyAccessedMemberTypesEx.NonPublicFieldsWithInherited |
704
DynamicallyAccessedMemberTypes
.PublicProperties | DynamicallyAccessedMemberTypesEx.NonPublicPropertiesWithInherited |
705
DynamicallyAccessedMemberTypes
.PublicEvents | DynamicallyAccessedMemberTypesEx.NonPublicEventsWithInherited |
707
DynamicallyAccessedMemberTypes
.Interfaces;
760
if (value is ValueWithDynamicallyAccessedMembers { DynamicallyAccessedMemberTypes:
DynamicallyAccessedMemberTypes
.All })
761
AddReturnValue(_annotations.GetMethodReturnValue(calledMethod, _isNewObj,
DynamicallyAccessedMemberTypes
.All));
790
DynamicallyAccessedMemberTypes
requiredMemberTypes = intrinsicId switch
792
IntrinsicId.RuntimeReflectionExtensions_GetRuntimeEvent =>
DynamicallyAccessedMemberTypes
.PublicEvents,
793
IntrinsicId.RuntimeReflectionExtensions_GetRuntimeField =>
DynamicallyAccessedMemberTypes
.PublicFields,
794
IntrinsicId.RuntimeReflectionExtensions_GetRuntimeMethod =>
DynamicallyAccessedMemberTypes
.PublicMethods,
795
IntrinsicId.RuntimeReflectionExtensions_GetRuntimeProperty =>
DynamicallyAccessedMemberTypes
.PublicProperties,
862
var targetValue = _annotations.GetMethodParameterValue(new(calledMethod, (ParameterIndex)0),
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor);
908
_annotations.GetMethodParameterValue(new(calledMethod, (ParameterIndex)1),
DynamicallyAccessedMemberTypes
.None).GetDiagnosticArgumentsForAnnotationMismatch().ToArray());
922
DynamicallyAccessedMemberTypes
memberTypes = intrinsicId == IntrinsicId.Expression_Property
923
?
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties
924
:
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields;
1226
DynamicallyAccessedMemberTypes
propagatedMemberTypes =
DynamicallyAccessedMemberTypes
.None;
1227
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.All)
1228
propagatedMemberTypes =
DynamicallyAccessedMemberTypes
.All;
1239
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicEvents))
1240
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicEvents;
1245
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicFields))
1246
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicFields;
1251
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicMethods))
1252
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicMethods;
1267
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicProperties))
1268
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicProperties;
1273
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.Interfaces))
1274
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.Interfaces;
1349
var
requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(bindingFlags);
1351
if (requiredMemberTypes ==
DynamicallyAccessedMemberTypes
.PublicConstructors && ctorParameterCount == 0)
1352
requiredMemberTypes =
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor;
1469
var
requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(bindingFlags);
1472
if (ctorParameterCount == 0 && requiredMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicConstructors))
1474
requiredMemberTypes &= ~
DynamicallyAccessedMemberTypes
.PublicConstructors;
1475
requiredMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor;
1666
if (GetGenericParameterEffectiveMemberTypes(genericParameter) !=
DynamicallyAccessedMemberTypes
.None)
1721
static
DynamicallyAccessedMemberTypes
GetGenericParameterEffectiveMemberTypes(GenericParameterValue genericParameter)
1723
DynamicallyAccessedMemberTypes
result = genericParameter.DynamicallyAccessedMemberTypes;
1725
result |=
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor;
1850
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForNestedTypes(BindingFlags? bindingFlags) =>
1851
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicNestedTypes :
DynamicallyAccessedMemberTypes
.None) |
1852
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes :
DynamicallyAccessedMemberTypes
.None) |
1853
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicNestedTypes |
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes :
DynamicallyAccessedMemberTypes
.None);
1855
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(BindingFlags? bindingFlags) =>
1856
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicConstructors :
DynamicallyAccessedMemberTypes
.None) |
1857
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicConstructors :
DynamicallyAccessedMemberTypes
.None) |
1858
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicConstructors |
DynamicallyAccessedMemberTypes
.NonPublicConstructors :
DynamicallyAccessedMemberTypes
.None);
1860
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForMethods(BindingFlags? bindingFlags) =>
1861
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicMethods :
DynamicallyAccessedMemberTypes
.None) |
1862
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicMethods :
DynamicallyAccessedMemberTypes
.None) |
1863
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicMethods |
DynamicallyAccessedMemberTypes
.NonPublicMethods :
DynamicallyAccessedMemberTypes
.None);
1865
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForFields(BindingFlags? bindingFlags) =>
1866
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicFields :
DynamicallyAccessedMemberTypes
.None) |
1867
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicFields :
DynamicallyAccessedMemberTypes
.None) |
1868
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields :
DynamicallyAccessedMemberTypes
.None);
1870
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForProperties(BindingFlags? bindingFlags) =>
1871
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicProperties :
DynamicallyAccessedMemberTypes
.None) |
1872
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicProperties :
DynamicallyAccessedMemberTypes
.None) |
1873
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties :
DynamicallyAccessedMemberTypes
.None);
1875
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForEvents(BindingFlags? bindingFlags) =>
1876
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicEvents :
DynamicallyAccessedMemberTypes
.None) |
1877
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicEvents :
DynamicallyAccessedMemberTypes
.None) |
1878
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicEvents |
DynamicallyAccessedMemberTypes
.NonPublicEvents :
DynamicallyAccessedMemberTypes
.None);
1880
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForMembers(BindingFlags? bindingFlags) =>
src\runtime\src\tools\illink\src\ILLink.Shared\TrimAnalysis\NullableUnwrappedGenericParameterValue.cs (1)
25
public override
DynamicallyAccessedMemberTypes
DynamicallyAccessedMemberTypes => GenericParameter.DynamicallyAccessedMemberTypes;
src\runtime\src\tools\illink\src\ILLink.Shared\TrimAnalysis\NullableValueWithDynamicallyAccessedMembers.cs (1)
31
public override
DynamicallyAccessedMemberTypes
DynamicallyAccessedMemberTypes => UnderlyingTypeValue.DynamicallyAccessedMemberTypes;
src\runtime\src\tools\illink\src\ILLink.Shared\TrimAnalysis\RequireDynamicallyAccessedMembersAction.cs (5)
23
if (targetValue.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.None)
35
if (targetValue.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor
41
else if (targetValue.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.PublicFields
53
var
availableMemberTypes = valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes;
103
private partial void MarkTypeForDynamicallyAccessedMembers(in TypeProxy type,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes);
src\runtime\src\tools\illink\src\ILLink.Shared\TrimAnalysis\ValueWithDynamicallyAccessedMembers.cs (1)
15
public abstract
DynamicallyAccessedMemberTypes
DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\FieldValue.cs (2)
24
private FieldValue(ISymbol fieldSymbol, ITypeSymbol fieldType,
DynamicallyAccessedMemberTypes
annotations)
33
public override
DynamicallyAccessedMemberTypes
DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\FlowAnnotations.cs (28)
27
if (GetMethodReturnValueAnnotation(method) !=
DynamicallyAccessedMemberTypes
.None)
32
if (GetMethodParameterAnnotation(param) !=
DynamicallyAccessedMemberTypes
.None)
50
if (GetMethodReturnValueAnnotation(method) ==
DynamicallyAccessedMemberTypes
.None)
103
if (GetMethodParameterAnnotation(param) !=
DynamicallyAccessedMemberTypes
.None)
112
return GetFieldAnnotation(field) !=
DynamicallyAccessedMemberTypes
.None;
115
internal static
DynamicallyAccessedMemberTypes
GetFieldAnnotation(IFieldSymbol field)
118
return
DynamicallyAccessedMemberTypes
.None;
130
internal static
DynamicallyAccessedMemberTypes
GetBackingFieldAnnotation(IPropertySymbol property)
133
return
DynamicallyAccessedMemberTypes
.None;
138
internal static
DynamicallyAccessedMemberTypes
GetTypeAnnotations(INamedTypeSymbol type)
140
DynamicallyAccessedMemberTypes
typeAnnotation = type.GetDynamicallyAccessedMemberTypes();
159
internal static
DynamicallyAccessedMemberTypes
GetMethodParameterAnnotation(ParameterProxy param)
164
return
DynamicallyAccessedMemberTypes
.None;
171
return
DynamicallyAccessedMemberTypes
.None;
173
var
damt = parameter.GetDynamicallyAccessedMemberTypes();
182
&& damt ==
DynamicallyAccessedMemberTypes
.None
195
public static
DynamicallyAccessedMemberTypes
GetMethodReturnValueAnnotation(IMethodSymbol method)
198
return
DynamicallyAccessedMemberTypes
.None;
200
var
returnDamt = method.GetDynamicallyAccessedMemberTypesOnReturnType();
206
&& returnDamt ==
DynamicallyAccessedMemberTypes
.None
218
public static
DynamicallyAccessedMemberTypes
GetTypeAnnotation(ITypeSymbol type)
220
var
typeAnnotation = type.GetDynamicallyAccessedMemberTypes();
245
internal partial MethodReturnValue GetMethodReturnValue(MethodProxy method, bool isNewObj,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
251
internal partial GenericParameterValue GetGenericParameterValue(GenericParameterProxy genericParameter,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
257
internal partial MethodParameterValue GetMethodThisParameterValue(MethodProxy method,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
269
var
damt = GetMethodParameterAnnotation(param);
273
internal MethodParameterValue GetMethodParameterValue(MethodProxy method, ParameterIndex parameterIndex,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
279
internal partial MethodParameterValue GetMethodParameterValue(ParameterProxy param,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
TrimAnalysis\GenericArgumentDataFlow.cs (1)
147
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)
146
DynamicallyAccessedMemberTypes
annotation = default;
152
annotation =
DynamicallyAccessedMemberTypes
.PublicFields;
187
AddReturnValue(FlowAnnotations.Instance.GetMethodReturnValue(calledMethod, _isNewObj,
DynamicallyAccessedMemberTypes
.PublicFields));
191
var
annotation = FlowAnnotations.GetTypeAnnotation(staticType);
TrimAnalysis\MethodParameterValue.cs (2)
15
public MethodParameterValue(ParameterProxy parameter,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
22
public override
DynamicallyAccessedMemberTypes
DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\MethodReturnValue.cs (2)
21
public MethodReturnValue(IMethodSymbol methodSymbol, bool isNewObj,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
32
public override
DynamicallyAccessedMemberTypes
DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\ReflectionAccessAnalyzer.cs (4)
34
internal void GetReflectionAccessDiagnostics(Location location, ITypeSymbol typeSymbol,
DynamicallyAccessedMemberTypes
requiredMemberTypes, bool declaredOnly = false)
170
if (methodSymbol.IsVirtual && FlowAnnotations.GetMethodReturnValueAnnotation(methodSymbol) !=
DynamicallyAccessedMemberTypes
.None)
178
if (FlowAnnotations.GetMethodParameterAnnotation(parameter) !=
DynamicallyAccessedMemberTypes
.None)
216
if (FlowAnnotations.GetFieldAnnotation(fieldSymbol) !=
DynamicallyAccessedMemberTypes
.None)
TrimAnalysis\RequireDynamicallyAccessedMembersAction.cs (1)
67
private partial void MarkTypeForDynamicallyAccessedMembers(in TypeProxy type,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes) =>