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)
177
if (member is IFieldSymbol field && field.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && !field.Type.IsTypeInterestingForDataflow(isByRef: field.RefKind is not RefKind.None))
181
if (method.GetDynamicallyAccessedMemberTypesOnReturnType() !=
DynamicallyAccessedMemberTypes
.None && !method.ReturnType.IsTypeInterestingForDataflow(isByRef: method.ReturnsByRef))
183
if (method.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && !method.ContainingType.IsTypeInterestingForDataflow(isByRef: false))
187
if (parameter.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && !parameter.Type.IsTypeInterestingForDataflow(isByRef: parameter.RefKind is not RefKind.None))
191
else if (member is IPropertySymbol property && property.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && !property.Type.IsTypeInterestingForDataflow(isByRef: property.ReturnsByRef))
208
var
overrideMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation(overrideMethod);
209
var
baseMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation(baseMethod);
213
(IMethodSymbol attributableMethod,
DynamicallyAccessedMemberTypes
missingAttribute) = GetTargetAndRequirements(overrideMethod,
233
var
baseParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation(baseParam);
234
var
overrideParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation(overrideParam);
237
(IMethodSymbol attributableMethod,
DynamicallyAccessedMemberTypes
missingAttribute) = GetTargetAndRequirements(overrideMethod,
258
var
methodTypeParameterAnnotation = overrideMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes();
259
var
overriddenMethodTypeParameterAnnotation = baseMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes();
263
(IMethodSymbol attributableMethod,
DynamicallyAccessedMemberTypes
missingAttribute) = GetTargetAndRequirements(overrideMethod, baseMethod, methodTypeParameterAnnotation, overriddenMethodTypeParameterAnnotation);
285
var
overrideMethodThisAnnotation = FlowAnnotations.GetMethodParameterAnnotation(new ParameterProxy(new(overrideMethod), (ParameterIndex)0));
286
var
baseMethodThisAnnotation = FlowAnnotations.GetMethodParameterAnnotation(new ParameterProxy(new(baseMethod), (ParameterIndex)0));
322
|| propertySymbol.GetDynamicallyAccessedMemberTypes() ==
DynamicallyAccessedMemberTypes
.None)
327
&& methodSymbol.GetDynamicallyAccessedMemberTypesOnReturnType() !=
DynamicallyAccessedMemberTypes
.None
330
&& methodSymbol.Parameters[methodSymbol.Parameters.Length - 1].GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None)
342
private static (IMethodSymbol Method,
DynamicallyAccessedMemberTypes
Requirements) GetTargetAndRequirements(IMethodSymbol method, IMethodSymbol overriddenMethod,
DynamicallyAccessedMemberTypes
methodAnnotation,
DynamicallyAccessedMemberTypes
overriddenMethodAnnotation)
344
DynamicallyAccessedMemberTypes
mismatchedArgument;
346
if (methodAnnotation ==
DynamicallyAccessedMemberTypes
.None)
359
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;
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;
678
const
DynamicallyAccessedMemberTypes
ImplicitNestedTypeAccessLevel =
680
DynamicallyAccessedMemberTypes
.PublicMethods | DynamicallyAccessedMemberTypesEx.NonPublicMethodsWithInherited |
681
DynamicallyAccessedMemberTypes
.PublicFields | DynamicallyAccessedMemberTypesEx.NonPublicFieldsWithInherited |
682
DynamicallyAccessedMemberTypes
.PublicProperties | DynamicallyAccessedMemberTypesEx.NonPublicPropertiesWithInherited |
683
DynamicallyAccessedMemberTypes
.PublicEvents | DynamicallyAccessedMemberTypesEx.NonPublicEventsWithInherited |
685
DynamicallyAccessedMemberTypes
.Interfaces;
738
if (value is ValueWithDynamicallyAccessedMembers { DynamicallyAccessedMemberTypes:
DynamicallyAccessedMemberTypes
.All })
739
AddReturnValue(_annotations.GetMethodReturnValue(calledMethod, _isNewObj,
DynamicallyAccessedMemberTypes
.All));
768
DynamicallyAccessedMemberTypes
requiredMemberTypes = intrinsicId switch
770
IntrinsicId.RuntimeReflectionExtensions_GetRuntimeEvent =>
DynamicallyAccessedMemberTypes
.PublicEvents,
771
IntrinsicId.RuntimeReflectionExtensions_GetRuntimeField =>
DynamicallyAccessedMemberTypes
.PublicFields,
772
IntrinsicId.RuntimeReflectionExtensions_GetRuntimeMethod =>
DynamicallyAccessedMemberTypes
.PublicMethods,
773
IntrinsicId.RuntimeReflectionExtensions_GetRuntimeProperty =>
DynamicallyAccessedMemberTypes
.PublicProperties,
840
var targetValue = _annotations.GetMethodParameterValue(new(calledMethod, (ParameterIndex)0),
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor);
886
_annotations.GetMethodParameterValue(new(calledMethod, (ParameterIndex)1),
DynamicallyAccessedMemberTypes
.None).GetDiagnosticArgumentsForAnnotationMismatch().ToArray());
900
DynamicallyAccessedMemberTypes
memberTypes = intrinsicId == IntrinsicId.Expression_Property
901
?
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties
902
:
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields;
1203
DynamicallyAccessedMemberTypes
propagatedMemberTypes =
DynamicallyAccessedMemberTypes
.None;
1204
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.All)
1205
propagatedMemberTypes =
DynamicallyAccessedMemberTypes
.All;
1216
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicEvents))
1217
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicEvents;
1222
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicFields))
1223
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicFields;
1228
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicMethods))
1229
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicMethods;
1244
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicProperties))
1245
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicProperties;
1250
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.Interfaces))
1251
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.Interfaces;
1326
var
requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(bindingFlags);
1328
if (requiredMemberTypes ==
DynamicallyAccessedMemberTypes
.PublicConstructors && ctorParameterCount == 0)
1329
requiredMemberTypes =
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor;
1446
var
requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(bindingFlags);
1449
if (ctorParameterCount == 0 && requiredMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicConstructors))
1451
requiredMemberTypes &= ~
DynamicallyAccessedMemberTypes
.PublicConstructors;
1452
requiredMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor;
1580
if (GetGenericParameterEffectiveMemberTypes(genericParameter) !=
DynamicallyAccessedMemberTypes
.None)
1635
static
DynamicallyAccessedMemberTypes
GetGenericParameterEffectiveMemberTypes(GenericParameterValue genericParameter)
1637
DynamicallyAccessedMemberTypes
result = genericParameter.DynamicallyAccessedMemberTypes;
1639
result |=
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor;
1764
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForNestedTypes(BindingFlags? bindingFlags) =>
1765
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicNestedTypes :
DynamicallyAccessedMemberTypes
.None) |
1766
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes :
DynamicallyAccessedMemberTypes
.None) |
1767
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicNestedTypes |
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes :
DynamicallyAccessedMemberTypes
.None);
1769
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(BindingFlags? bindingFlags) =>
1770
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicConstructors :
DynamicallyAccessedMemberTypes
.None) |
1771
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicConstructors :
DynamicallyAccessedMemberTypes
.None) |
1772
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicConstructors |
DynamicallyAccessedMemberTypes
.NonPublicConstructors :
DynamicallyAccessedMemberTypes
.None);
1774
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForMethods(BindingFlags? bindingFlags) =>
1775
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicMethods :
DynamicallyAccessedMemberTypes
.None) |
1776
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicMethods :
DynamicallyAccessedMemberTypes
.None) |
1777
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicMethods |
DynamicallyAccessedMemberTypes
.NonPublicMethods :
DynamicallyAccessedMemberTypes
.None);
1779
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForFields(BindingFlags? bindingFlags) =>
1780
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicFields :
DynamicallyAccessedMemberTypes
.None) |
1781
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicFields :
DynamicallyAccessedMemberTypes
.None) |
1782
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields :
DynamicallyAccessedMemberTypes
.None);
1784
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForProperties(BindingFlags? bindingFlags) =>
1785
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicProperties :
DynamicallyAccessedMemberTypes
.None) |
1786
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicProperties :
DynamicallyAccessedMemberTypes
.None) |
1787
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties :
DynamicallyAccessedMemberTypes
.None);
1789
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForEvents(BindingFlags? bindingFlags) =>
1790
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicEvents :
DynamicallyAccessedMemberTypes
.None) |
1791
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicEvents :
DynamicallyAccessedMemberTypes
.None) |
1792
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicEvents |
DynamicallyAccessedMemberTypes
.NonPublicEvents :
DynamicallyAccessedMemberTypes
.None);
1794
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)
54
if (genericParameterValue.DynamicallyAccessedMemberTypes !=
DynamicallyAccessedMemberTypes
.None)
121
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)
142
DynamicallyAccessedMemberTypes
annotation = default;
148
annotation =
DynamicallyAccessedMemberTypes
.PublicFields;
183
AddReturnValue(FlowAnnotations.Instance.GetMethodReturnValue(calledMethod, _isNewObj,
DynamicallyAccessedMemberTypes
.PublicFields));
187
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)
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)
53
private partial void MarkTypeForDynamicallyAccessedMembers(in TypeProxy type,
DynamicallyAccessedMemberTypes
dynamicallyAccessedMemberTypes) =>