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)
184
if (member is IFieldSymbol field && field.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && !field.Type.IsTypeInterestingForDataflow(isByRef: field.RefKind is not RefKind.None))
188
if (method.GetDynamicallyAccessedMemberTypesOnReturnType() !=
DynamicallyAccessedMemberTypes
.None && !method.ReturnType.IsTypeInterestingForDataflow(isByRef: method.ReturnsByRef))
190
if (method.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && !method.ContainingType.IsTypeInterestingForDataflow(isByRef: false))
194
if (parameter.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && !parameter.Type.IsTypeInterestingForDataflow(isByRef: parameter.RefKind is not RefKind.None))
200
if (property.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && !property.Type.IsTypeInterestingForDataflow(isByRef: property.ReturnsByRef))
202
if (property.GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None && property.ContainingType.ExtensionParameter != null)
218
var
overrideMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation(overrideMethod);
219
var
baseMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation(baseMethod);
223
(IMethodSymbol attributableMethod,
DynamicallyAccessedMemberTypes
missingAttribute) = GetTargetAndRequirements(overrideMethod,
243
var
baseParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation(baseParam);
244
var
overrideParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation(overrideParam);
247
(IMethodSymbol attributableMethod,
DynamicallyAccessedMemberTypes
missingAttribute) = GetTargetAndRequirements(overrideMethod,
268
var
methodTypeParameterAnnotation = overrideMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes();
269
var
overriddenMethodTypeParameterAnnotation = baseMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes();
273
(IMethodSymbol attributableMethod,
DynamicallyAccessedMemberTypes
missingAttribute) = GetTargetAndRequirements(overrideMethod, baseMethod, methodTypeParameterAnnotation, overriddenMethodTypeParameterAnnotation);
295
var
overrideMethodThisAnnotation = FlowAnnotations.GetMethodParameterAnnotation(new ParameterProxy(new(overrideMethod), (ParameterIndex)0));
296
var
baseMethodThisAnnotation = FlowAnnotations.GetMethodParameterAnnotation(new ParameterProxy(new(baseMethod), (ParameterIndex)0));
332
|| propertySymbol.GetDynamicallyAccessedMemberTypes() ==
DynamicallyAccessedMemberTypes
.None)
342
&& methodSymbol.GetDynamicallyAccessedMemberTypesOnReturnType() !=
DynamicallyAccessedMemberTypes
.None
345
&& methodSymbol.Parameters[methodSymbol.Parameters.Length - 1].GetDynamicallyAccessedMemberTypes() !=
DynamicallyAccessedMemberTypes
.None)
357
private static (IMethodSymbol Method,
DynamicallyAccessedMemberTypes
Requirements) GetTargetAndRequirements(IMethodSymbol method, IMethodSymbol overriddenMethod,
DynamicallyAccessedMemberTypes
methodAnnotation,
DynamicallyAccessedMemberTypes
overriddenMethodAnnotation)
359
DynamicallyAccessedMemberTypes
mismatchedArgument;
361
if (methodAnnotation ==
DynamicallyAccessedMemberTypes
.None)
374
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\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;
1204
DynamicallyAccessedMemberTypes
propagatedMemberTypes =
DynamicallyAccessedMemberTypes
.None;
1205
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes ==
DynamicallyAccessedMemberTypes
.All)
1206
propagatedMemberTypes =
DynamicallyAccessedMemberTypes
.All;
1217
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicEvents))
1218
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicEvents;
1223
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicFields))
1224
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicFields;
1229
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicMethods))
1230
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicMethods;
1245
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicProperties))
1246
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicProperties;
1251
if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.Interfaces))
1252
propagatedMemberTypes |=
DynamicallyAccessedMemberTypes
.Interfaces;
1327
var
requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(bindingFlags);
1329
if (requiredMemberTypes ==
DynamicallyAccessedMemberTypes
.PublicConstructors && ctorParameterCount == 0)
1330
requiredMemberTypes =
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor;
1447
var
requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(bindingFlags);
1450
if (ctorParameterCount == 0 && requiredMemberTypes.HasFlag(
DynamicallyAccessedMemberTypes
.PublicConstructors))
1452
requiredMemberTypes &= ~
DynamicallyAccessedMemberTypes
.PublicConstructors;
1453
requiredMemberTypes |=
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor;
1581
if (GetGenericParameterEffectiveMemberTypes(genericParameter) !=
DynamicallyAccessedMemberTypes
.None)
1636
static
DynamicallyAccessedMemberTypes
GetGenericParameterEffectiveMemberTypes(GenericParameterValue genericParameter)
1638
DynamicallyAccessedMemberTypes
result = genericParameter.DynamicallyAccessedMemberTypes;
1640
result |=
DynamicallyAccessedMemberTypes
.PublicParameterlessConstructor;
1765
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForNestedTypes(BindingFlags? bindingFlags) =>
1766
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicNestedTypes :
DynamicallyAccessedMemberTypes
.None) |
1767
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes :
DynamicallyAccessedMemberTypes
.None) |
1768
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicNestedTypes |
DynamicallyAccessedMemberTypes
.NonPublicNestedTypes :
DynamicallyAccessedMemberTypes
.None);
1770
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(BindingFlags? bindingFlags) =>
1771
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicConstructors :
DynamicallyAccessedMemberTypes
.None) |
1772
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicConstructors :
DynamicallyAccessedMemberTypes
.None) |
1773
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicConstructors |
DynamicallyAccessedMemberTypes
.NonPublicConstructors :
DynamicallyAccessedMemberTypes
.None);
1775
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForMethods(BindingFlags? bindingFlags) =>
1776
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicMethods :
DynamicallyAccessedMemberTypes
.None) |
1777
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicMethods :
DynamicallyAccessedMemberTypes
.None) |
1778
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicMethods |
DynamicallyAccessedMemberTypes
.NonPublicMethods :
DynamicallyAccessedMemberTypes
.None);
1780
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForFields(BindingFlags? bindingFlags) =>
1781
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicFields :
DynamicallyAccessedMemberTypes
.None) |
1782
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicFields :
DynamicallyAccessedMemberTypes
.None) |
1783
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicFields |
DynamicallyAccessedMemberTypes
.NonPublicFields :
DynamicallyAccessedMemberTypes
.None);
1785
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForProperties(BindingFlags? bindingFlags) =>
1786
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicProperties :
DynamicallyAccessedMemberTypes
.None) |
1787
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicProperties :
DynamicallyAccessedMemberTypes
.None) |
1788
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicProperties |
DynamicallyAccessedMemberTypes
.NonPublicProperties :
DynamicallyAccessedMemberTypes
.None);
1790
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForEvents(BindingFlags? bindingFlags) =>
1791
(HasBindingFlag(bindingFlags, BindingFlags.Public) ?
DynamicallyAccessedMemberTypes
.PublicEvents :
DynamicallyAccessedMemberTypes
.None) |
1792
(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ?
DynamicallyAccessedMemberTypes
.NonPublicEvents :
DynamicallyAccessedMemberTypes
.None) |
1793
(BindingFlagsAreUnsupported(bindingFlags) ?
DynamicallyAccessedMemberTypes
.PublicEvents |
DynamicallyAccessedMemberTypes
.NonPublicEvents :
DynamicallyAccessedMemberTypes
.None);
1795
internal static
DynamicallyAccessedMemberTypes
GetDynamicallyAccessedMemberTypesFromBindingFlagsForMembers(BindingFlags? bindingFlags) =>
src\tools\illink\src\ILLink.Shared\TrimAnalysis\NullableUnwrappedGenericParameterValue.cs (1)
25
public override
DynamicallyAccessedMemberTypes
DynamicallyAccessedMemberTypes => GenericParameter.DynamicallyAccessedMemberTypes;
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)
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\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)
144
DynamicallyAccessedMemberTypes
annotation = default;
150
annotation =
DynamicallyAccessedMemberTypes
.PublicFields;
185
AddReturnValue(FlowAnnotations.Instance.GetMethodReturnValue(calledMethod, _isNewObj,
DynamicallyAccessedMemberTypes
.PublicFields));
189
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) =>