316 references to DynamicallyAccessedMemberTypes
ILLink.RoslynAnalyzer (316)
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 (25)
165
if (member is IFieldSymbol field && field.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && !field.Type.IsTypeInterestingForDataflow(isByRef: field.RefKind is not RefKind.None))
169
if (method.GetDynamicallyAccessedMemberTypesOnReturnType() !=
DynamicallyAccessedMemberTypes
.None && !method.ReturnType.IsTypeInterestingForDataflow(isByRef: method.ReturnsByRef))
171
if (method.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && !method.ContainingType.IsTypeInterestingForDataflow(isByRef: false))
175
if (parameter.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && !parameter.Type.IsTypeInterestingForDataflow(isByRef: parameter.RefKind is not RefKind.None))
179
else if (member is IPropertySymbol property && property.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && !property.Type.IsTypeInterestingForDataflow(isByRef: property.ReturnsByRef))
196
var
overrideMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation(overrideMethod);
197
var
baseMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation(baseMethod);
201
(IMethodSymbol attributableMethod,
DynamicallyAccessedMemberTypes
missingAttribute) = GetTargetAndRequirements(overrideMethod,
221
var
baseParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation(baseParam);
222
var
overrideParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation(overrideParam);
225
(IMethodSymbol attributableMethod,
DynamicallyAccessedMemberTypes
missingAttribute) = GetTargetAndRequirements(overrideMethod,
246
var
methodTypeParameterAnnotation = overrideMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes();
247
var
overriddenMethodTypeParameterAnnotation = baseMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes();
251
(IMethodSymbol attributableMethod,
DynamicallyAccessedMemberTypes
missingAttribute) = GetTargetAndRequirements(overrideMethod, baseMethod, methodTypeParameterAnnotation, overriddenMethodTypeParameterAnnotation);
273
var
overrideMethodThisAnnotation = FlowAnnotations.GetMethodParameterAnnotation(new ParameterProxy(new(overrideMethod), (ParameterIndex)0));
274
var
baseMethodThisAnnotation = FlowAnnotations.GetMethodParameterAnnotation(new ParameterProxy(new(baseMethod), (ParameterIndex)0));
310
|| propertySymbol.GetDynamicallyAccessedMemberTypes() ==
DynamicallyAccessedMemberTypes
.None)
315
&& methodSymbol.GetDynamicallyAccessedMemberTypesOnReturnType() !=
DynamicallyAccessedMemberTypes
.None
318
&& methodSymbol.Parameters[methodSymbol.Parameters.Length - 1].GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None)
330
private static (IMethodSymbol Method,
DynamicallyAccessedMemberTypes
Requirements) GetTargetAndRequirements(IMethodSymbol method, IMethodSymbol overriddenMethod,
DynamicallyAccessedMemberTypes
methodAnnotation,
DynamicallyAccessedMemberTypes
overriddenMethodAnnotation)
332
DynamicallyAccessedMemberTypes
mismatchedArgument;
334
if (methodAnnotation ==
DynamicallyAccessedMemberTypes
.None)
347
private static (Location[]?, Dictionary<string, string?>?) CreateArguments(Location attributableSymbolLocation,
DynamicallyAccessedMemberTypes
mismatchedArgument)
DynamicallyAccessedMembersTypeHierarchy.cs (7)
17
var
annotation = FlowAnnotations.GetTypeAnnotation(type);
25
var
baseAnnotation = FlowAnnotations.GetTypeAnnotation(baseType);
26
var
annotationToApplyToBase = Annotations.GetMissingMemberTypes(annotation, baseAnnotation);
36
if (annotation.HasFlag(
DynamicallyAccessedMemberTypes
.Interfaces))
38
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;
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\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)
95
Debug.Assert(requiresDataFlowAnalysis || annotatedMethodReturnValue.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.None);
247
var targetValue = _annotations.GetMethodThisParameterValue(calledMethod,
DynamicallyAccessedMemberTypes
.Interfaces);
270
DynamicallyAccessedMemberTypes
returnMemberTypes =
DynamicallyAccessedMemberTypes
.Interfaces;
274
&& valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.All)
275
returnMemberTypes =
DynamicallyAccessedMemberTypes
.All;
295
var targetValue = _annotations.GetMethodThisParameterValue(calledMethod,
DynamicallyAccessedMemberTypes
.Interfaces);
302
DynamicallyAccessedMemberTypes
returnMemberTypes =
DynamicallyAccessedMemberTypes
.Interfaces;
306
&& valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.All)
307
returnMemberTypes =
DynamicallyAccessedMemberTypes
.All;
370
&& (damAnnotatedHandle.UnderlyingTypeValue.DynamicallyAccessedMemberTypes &
DynamicallyAccessedMemberTypes
.NonPublicConstructors) != 0)
404
DynamicallyAccessedMemberTypes
memberTypes;
409
IntrinsicId.Type_GetConstructors__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicConstructors |
DynamicallyAccessedMemberTypes
.NonPublicConstructors,
410
IntrinsicId.Type_GetMethods__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicMethods |
DynamicallyAccessedMemberTypes
.NonPublicMethods,
411
IntrinsicId.Type_GetEvents__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicEvents |
DynamicallyAccessedMemberTypes
.NonPublicEvents,
412
IntrinsicId.Type_GetFields__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields,
413
IntrinsicId.Type_GetProperties__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties,
414
IntrinsicId.Type_GetNestedTypes__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicNestedTypes |
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes,
415
IntrinsicId.Type_GetMembers__BindingFlags =>
DynamicallyAccessedMemberTypes
.PublicConstructors |
DynamicallyAccessedMemberTypes
.NonPublicConstructors |
416
DynamicallyAccessedMemberTypes
.PublicEvents |
DynamicallyAccessedMemberTypes
.NonPublicEvents |
417
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields |
418
DynamicallyAccessedMemberTypes
.PublicMethods |
DynamicallyAccessedMemberTypes
.NonPublicMethods |
419
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties |
420
DynamicallyAccessedMemberTypes
.PublicNestedTypes |
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes,
474
DynamicallyAccessedMemberTypes
memberTypes = intrinsicId switch
549
DynamicallyAccessedMemberTypes
requiredMemberTypes;
552
requiredMemberTypes =
DynamicallyAccessedMemberTypes
.PublicConstructors |
DynamicallyAccessedMemberTypes
.NonPublicConstructors |
553
DynamicallyAccessedMemberTypes
.PublicEvents |
DynamicallyAccessedMemberTypes
.NonPublicEvents |
554
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields |
555
DynamicallyAccessedMemberTypes
.PublicMethods |
DynamicallyAccessedMemberTypes
.NonPublicMethods |
556
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties |
557
DynamicallyAccessedMemberTypes
.PublicNestedTypes |
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes;
677
const
DynamicallyAccessedMemberTypes
ImplicitNestedTypeAccessLevel =
679
DynamicallyAccessedMemberTypes
.PublicMethods | DynamicallyAccessedMemberTypesEx.NonPublicMethodsWithInherited |
680
DynamicallyAccessedMemberTypes
.PublicFields | DynamicallyAccessedMemberTypesEx.NonPublicFieldsWithInherited |
681
DynamicallyAccessedMemberTypes
.PublicProperties | DynamicallyAccessedMemberTypesEx.NonPublicPropertiesWithInherited |
682
DynamicallyAccessedMemberTypes
.PublicEvents | DynamicallyAccessedMemberTypesEx.NonPublicEventsWithInherited |
684
DynamicallyAccessedMemberTypes
.Interfaces;
737
if (value is ValueWithDynamicallyAccessedMembers { DynamicallyAccessedMemberTypes:
DynamicallyAccessedMemberTypes
.All })
738
AddReturnValue(_annotations.GetMethodReturnValue(calledMethod, _isNewObj,
DynamicallyAccessedMemberTypes
.All));
767
DynamicallyAccessedMemberTypes
requiredMemberTypes = intrinsicId switch
769
IntrinsicId.RuntimeReflectionExtensions_GetRuntimeEvent =>
DynamicallyAccessedMemberTypes
.PublicEvents,
770
IntrinsicId.RuntimeReflectionExtensions_GetRuntimeField =>
DynamicallyAccessedMemberTypes
.PublicFields,
771
IntrinsicId.RuntimeReflectionExtensions_GetRuntimeMethod =>
DynamicallyAccessedMemberTypes
.PublicMethods,
772
IntrinsicId.RuntimeReflectionExtensions_GetRuntimeProperty =>
DynamicallyAccessedMemberTypes
.PublicProperties,
839
var targetValue = _annotations.GetMethodParameterValue(new(calledMethod, (ParameterIndex)0),
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor);
885
_annotations.GetMethodParameterValue(new(calledMethod, (ParameterIndex)1),
DynamicallyAccessedMemberTypes
.None).GetDiagnosticArgumentsForAnnotationMismatch().ToArray());
899
DynamicallyAccessedMemberTypes
memberTypes = intrinsicId == IntrinsicId.Expression_Property
900
?
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties
901
:
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields;
1202
DynamicallyAccessedMemberTypes
propagatedMemberTypes =
DynamicallyAccessedMemberTypes
.None;
1203
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.All)
1204
propagatedMemberTypes =
DynamicallyAccessedMemberTypes
.All;
1215
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicEvents))
1216
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicEvents;
1221
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicFields))
1222
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicFields;
1227
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicMethods))
1228
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicMethods;
1243
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicProperties))
1244
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicProperties;
1249
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.Interfaces))
1250
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.Interfaces;
1325
var
requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(bindingFlags);
1327
if (requiredMemberTypes ==
DynamicallyAccessedMemberTypes
.PublicConstructors && ctorParameterCount == 0)
1328
requiredMemberTypes =
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor;
1445
var
requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(bindingFlags);
1448
if (ctorParameterCount == 0 && requiredMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicConstructors))
1450
requiredMemberTypes &= ~
DynamicallyAccessedMemberTypes
.PublicConstructors;
1451
requiredMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor;
1579
if (GetGenericParameterEffectiveMemberTypes(genericParameter) !=
DynamicallyAccessedMemberTypes
.None)
1634
static
DynamicallyAccessedMemberTypes
GetGenericParameterEffectiveMemberTypes(GenericParameterValue genericParameter)
1636
DynamicallyAccessedMemberTypes
result = genericParameter.DynamicallyAccessedMemberTypes;
1638
result |=
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor;
1763
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForNestedTypes(BindingFlags? bindingFlags) =>
1764
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicNestedTypes :
DynamicallyAccessedMemberTypes
.None) |
1765
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes :
DynamicallyAccessedMemberTypes
.None) |
1766
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicNestedTypes |
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes :
DynamicallyAccessedMemberTypes
.None);
1768
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(BindingFlags? bindingFlags) =>
1769
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicConstructors :
DynamicallyAccessedMemberTypes
.None) |
1770
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicConstructors :
DynamicallyAccessedMemberTypes
.None) |
1771
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicConstructors |
DynamicallyAccessedMemberTypes
.NonPublicConstructors :
DynamicallyAccessedMemberTypes
.None);
1773
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForMethods(BindingFlags? bindingFlags) =>
1774
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicMethods :
DynamicallyAccessedMemberTypes
.None) |
1775
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicMethods :
DynamicallyAccessedMemberTypes
.None) |
1776
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicMethods |
DynamicallyAccessedMemberTypes
.NonPublicMethods :
DynamicallyAccessedMemberTypes
.None);
1778
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForFields(BindingFlags? bindingFlags) =>
1779
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicFields :
DynamicallyAccessedMemberTypes
.None) |
1780
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicFields :
DynamicallyAccessedMemberTypes
.None) |
1781
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields :
DynamicallyAccessedMemberTypes
.None);
1783
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForProperties(BindingFlags? bindingFlags) =>
1784
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicProperties :
DynamicallyAccessedMemberTypes
.None) |
1785
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicProperties :
DynamicallyAccessedMemberTypes
.None) |
1786
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties :
DynamicallyAccessedMemberTypes
.None);
1788
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForEvents(BindingFlags? bindingFlags) =>
1789
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicEvents :
DynamicallyAccessedMemberTypes
.None) |
1790
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicEvents :
DynamicallyAccessedMemberTypes
.None) |
1791
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicEvents |
DynamicallyAccessedMemberTypes
.NonPublicEvents :
DynamicallyAccessedMemberTypes
.None);
1793
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)
28
if (targetValue.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor
34
else if (targetValue.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.PublicFields
46
var
availableMemberTypes = valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes;
96
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 (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;
123
internal static
DynamicallyAccessedMemberTypes
GetBackingFieldAnnotation(IPropertySymbol property)
126
return
DynamicallyAccessedMemberTypes
.None;
131
internal static
DynamicallyAccessedMemberTypes
GetTypeAnnotations(INamedTypeSymbol type)
133
DynamicallyAccessedMemberTypes
typeAnnotation = type.GetDynamicallyAccessedMemberTypes();
152
internal static
DynamicallyAccessedMemberTypes
GetMethodParameterAnnotation(ParameterProxy param)
157
return
DynamicallyAccessedMemberTypes
.None;
164
return
DynamicallyAccessedMemberTypes
.None;
166
var
damt = parameter.GetDynamicallyAccessedMemberTypes();
176
&& damt ==
DynamicallyAccessedMemberTypes
.None
187
public static
DynamicallyAccessedMemberTypes
GetMethodReturnValueAnnotation(IMethodSymbol method)
190
return
DynamicallyAccessedMemberTypes
.None;
192
var
returnDamt = method.GetDynamicallyAccessedMemberTypesOnReturnType();
197
if (method.MethodKind is MethodKind.PropertyGet && returnDamt ==
DynamicallyAccessedMemberTypes
.None)
207
public static
DynamicallyAccessedMemberTypes
GetTypeAnnotation(ITypeSymbol type)
209
var
typeAnnotation = type.GetDynamicallyAccessedMemberTypes();
234
internal partial MethodReturnValue GetMethodReturnValue(MethodProxy method, bool isNewObj,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
240
internal partial GenericParameterValue GetGenericParameterValue(GenericParameterProxy genericParameter,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
246
internal partial MethodParameterValue GetMethodThisParameterValue(MethodProxy method,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
258
var
damt = GetMethodParameterAnnotation(param);
262
internal MethodParameterValue GetMethodParameterValue(MethodProxy method, ParameterIndex parameterIndex,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
268
internal partial MethodParameterValue GetMethodParameterValue(ParameterProxy param,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
TrimAnalysis\GenericArgumentDataFlow.cs (2)
53
if (genericParameterValue.DynamicallyAccessedMemberTypes !=
DynamicallyAccessedMemberTypes
.None)
120
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)
141
DynamicallyAccessedMemberTypes
annotation = default;
147
annotation =
DynamicallyAccessedMemberTypes
.PublicFields;
182
AddReturnValue(FlowAnnotations.Instance.GetMethodReturnValue(calledMethod, _isNewObj,
DynamicallyAccessedMemberTypes
.PublicFields));
186
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)
21
public MethodReturnValue(IMethodSymbol methodSymbol, bool isNewObj,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes)
32
public override
DynamicallyAccessedMemberTypes
DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\ReflectionAccessAnalyzer.cs (4)
27
internal void GetReflectionAccessDiagnostics(Location location, ITypeSymbol typeSymbol,
DynamicallyAccessedMemberTypes
requiredMemberTypes, bool declaredOnly = false)
163
if (methodSymbol.IsVirtual && FlowAnnotations.GetMethodReturnValueAnnotation(methodSymbol) !=
DynamicallyAccessedMemberTypes
.None)
171
if (FlowAnnotations.GetMethodParameterAnnotation(parameter) !=
DynamicallyAccessedMemberTypes
.None)
209
if (FlowAnnotations.GetFieldAnnotation(fieldSymbol) !=
DynamicallyAccessedMemberTypes
.None)
TrimAnalysis\RequireDynamicallyAccessedMembersAction.cs (1)
37
private partial void MarkTypeForDynamicallyAccessedMembers(in TypeProxy type,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes) =>