316 references to DynamicallyAccessedMemberTypes
ILLink.RoslynAnalyzer (316)
DataFlow\DynamicallyAccessedMembersBinder.cs (17)
17public static IEnumerable<ISymbol> GetDynamicallyAccessedMembers(this ITypeSymbol typeDefinition, DynamicallyAccessedMemberTypes memberTypes, bool declaredOnly = false) 19if (memberTypes == DynamicallyAccessedMemberTypes.None) 22if (memberTypes == DynamicallyAccessedMemberTypes.All) 33if (memberTypes.HasFlag(DynamicallyAccessedMemberTypes.NonPublicConstructors)) 40if (memberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicConstructors)) 47if (memberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)) 53if (memberTypes.HasFlag(DynamicallyAccessedMemberTypes.NonPublicMethods)) 60if (memberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicMethods)) 66if (memberTypes.HasFlag(DynamicallyAccessedMemberTypes.NonPublicFields)) 73if (memberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicFields)) 79if (memberTypes.HasFlag(DynamicallyAccessedMemberTypes.NonPublicNestedTypes)) 92if (memberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicNestedTypes)) 105if (memberTypes.HasFlag(DynamicallyAccessedMemberTypes.NonPublicProperties)) 112if (memberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicProperties)) 118if (memberTypes.HasFlag(DynamicallyAccessedMemberTypes.NonPublicEvents)) 125if (memberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicEvents)) 131if (memberTypes.HasFlag(DynamicallyAccessedMemberTypes.Interfaces))
DynamicallyAccessedMembersAnalyzer.cs (25)
165if (member is IFieldSymbol field && field.GetDynamicallyAccessedMemberTypes() != DynamicallyAccessedMemberTypes.None && !field.Type.IsTypeInterestingForDataflow(isByRef: field.RefKind is not RefKind.None)) 169if (method.GetDynamicallyAccessedMemberTypesOnReturnType() != DynamicallyAccessedMemberTypes.None && !method.ReturnType.IsTypeInterestingForDataflow(isByRef: method.ReturnsByRef)) 171if (method.GetDynamicallyAccessedMemberTypes() != DynamicallyAccessedMemberTypes.None && !method.ContainingType.IsTypeInterestingForDataflow(isByRef: false)) 175if (parameter.GetDynamicallyAccessedMemberTypes() != DynamicallyAccessedMemberTypes.None && !parameter.Type.IsTypeInterestingForDataflow(isByRef: parameter.RefKind is not RefKind.None)) 179else if (member is IPropertySymbol property && property.GetDynamicallyAccessedMemberTypes() != DynamicallyAccessedMemberTypes.None && !property.Type.IsTypeInterestingForDataflow(isByRef: property.ReturnsByRef)) 196var overrideMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation(overrideMethod); 197var baseMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation(baseMethod); 201(IMethodSymbol attributableMethod, DynamicallyAccessedMemberTypes missingAttribute) = GetTargetAndRequirements(overrideMethod, 221var baseParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation(baseParam); 222var overrideParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation(overrideParam); 225(IMethodSymbol attributableMethod, DynamicallyAccessedMemberTypes missingAttribute) = GetTargetAndRequirements(overrideMethod, 246var methodTypeParameterAnnotation = overrideMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes(); 247var overriddenMethodTypeParameterAnnotation = baseMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes(); 251(IMethodSymbol attributableMethod, DynamicallyAccessedMemberTypes missingAttribute) = GetTargetAndRequirements(overrideMethod, baseMethod, methodTypeParameterAnnotation, overriddenMethodTypeParameterAnnotation); 273var overrideMethodThisAnnotation = FlowAnnotations.GetMethodParameterAnnotation(new ParameterProxy(new(overrideMethod), (ParameterIndex)0)); 274var 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) 330private static (IMethodSymbol Method, DynamicallyAccessedMemberTypes Requirements) GetTargetAndRequirements(IMethodSymbol method, IMethodSymbol overriddenMethod, DynamicallyAccessedMemberTypes methodAnnotation, DynamicallyAccessedMemberTypes overriddenMethodAnnotation) 332DynamicallyAccessedMemberTypes mismatchedArgument; 334if (methodAnnotation == DynamicallyAccessedMemberTypes.None) 347private static (Location[]?, Dictionary<string, string?>?) CreateArguments(Location attributableSymbolLocation, DynamicallyAccessedMemberTypes mismatchedArgument)
DynamicallyAccessedMembersTypeHierarchy.cs (7)
17var annotation = FlowAnnotations.GetTypeAnnotation(type); 25var baseAnnotation = FlowAnnotations.GetTypeAnnotation(baseType); 26var annotationToApplyToBase = Annotations.GetMissingMemberTypes(annotation, baseAnnotation); 36if (annotation.HasFlag(DynamicallyAccessedMemberTypes.Interfaces)) 38var annotationToApplyToInterfaces = annotation == DynamicallyAccessedMemberTypes.All ? annotation : DynamicallyAccessedMemberTypes.Interfaces;
ISymbolExtensions.cs (8)
59internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypes(this ISymbol symbol) 62return DynamicallyAccessedMemberTypes.None; 64return (DynamicallyAccessedMemberTypes)dynamicallyAccessedMembers!.ConstructorArguments[0].Value!; 67internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesOnReturnType(this IMethodSymbol methodSymbol) 79return DynamicallyAccessedMemberTypes.None; 81return (DynamicallyAccessedMemberTypes)dynamicallyAccessedMembers.ConstructorArguments[0].Value!; 110internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesOnAssociatedSymbol(this IMethodSymbol methodSymbol) => 111methodSymbol.AssociatedSymbol is ISymbol associatedSymbol ? GetDynamicallyAccessedMemberTypes(associatedSymbol) : DynamicallyAccessedMemberTypes.None;
src\tools\illink\src\ILLink.Shared\Annotations.cs (31)
19DynamicallyAccessedMemberTypes sourceMemberTypes, 20DynamicallyAccessedMemberTypes targetMemberTypes, 25var missingMemberTypes = GetMissingMemberTypes(targetMemberTypes, sourceMemberTypes); 26if (missingMemberTypes == DynamicallyAccessedMemberTypes.None) 33public static DynamicallyAccessedMemberTypes GetMissingMemberTypes(DynamicallyAccessedMemberTypes requiredMemberTypes, DynamicallyAccessedMemberTypes availableMemberTypes) 36return DynamicallyAccessedMemberTypes.None; 38if (requiredMemberTypes == DynamicallyAccessedMemberTypes.All) 39return DynamicallyAccessedMemberTypes.All; 41var missingMemberTypes = requiredMemberTypes & ~availableMemberTypes; 45if (requiredMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicConstructors) && 46!availableMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicConstructors)) 47missingMemberTypes |= DynamicallyAccessedMemberTypes.PublicConstructors; 52public static string GetMemberTypesString(DynamicallyAccessedMemberTypes memberTypes) 54Debug.Assert(memberTypes != DynamicallyAccessedMemberTypes.None); 56if (memberTypes == DynamicallyAccessedMemberTypes.All) 57return $"'{nameof(DynamicallyAccessedMemberTypes)}.{nameof(DynamicallyAccessedMemberTypes.All)}'"; 60.Where(damt => (memberTypes & damt) == damt && damt != DynamicallyAccessedMemberTypes.None) 63if (memberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicConstructors)) 64memberTypesList.Remove(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor); 68string mtName = mt == DynamicallyAccessedMemberTypes.Interfaces 69? nameof(DynamicallyAccessedMemberTypes.Interfaces) 72return $"'{nameof(DynamicallyAccessedMemberTypes)}.{mtName}'"; 76private static readonly DynamicallyAccessedMemberTypes[] AllDynamicallyAccessedMemberTypes = GetAllDynamicallyAccessedMemberTypes(); 78private static DynamicallyAccessedMemberTypes[] GetAllDynamicallyAccessedMemberTypes() 80var values = new HashSet<DynamicallyAccessedMemberTypes>( 81Enum.GetValues(typeof(DynamicallyAccessedMemberTypes)) 82.Cast<DynamicallyAccessedMemberTypes>()); 83values.Add(DynamicallyAccessedMemberTypes.Interfaces);
src\tools\illink\src\ILLink.Shared\DynamicallyAccessedMemberTypesEx.cs (24)
13public const DynamicallyAccessedMemberTypes NonPublicConstructorsWithInherited = DynamicallyAccessedMemberTypes.NonPublicConstructors | (DynamicallyAccessedMemberTypes)0x4000; 18public const DynamicallyAccessedMemberTypes NonPublicMethodsWithInherited = DynamicallyAccessedMemberTypes.NonPublicMethods | (DynamicallyAccessedMemberTypes)0x8000; 23public const DynamicallyAccessedMemberTypes NonPublicFieldsWithInherited = DynamicallyAccessedMemberTypes.NonPublicFields | (DynamicallyAccessedMemberTypes)0x10000; 28public const DynamicallyAccessedMemberTypes NonPublicNestedTypesWithInherited = DynamicallyAccessedMemberTypes.NonPublicNestedTypes | (DynamicallyAccessedMemberTypes)0x20000; 33public const DynamicallyAccessedMemberTypes NonPublicPropertiesWithInherited = DynamicallyAccessedMemberTypes.NonPublicProperties | (DynamicallyAccessedMemberTypes)0x40000; 38public const DynamicallyAccessedMemberTypes NonPublicEventsWithInherited = DynamicallyAccessedMemberTypes.NonPublicEvents | (DynamicallyAccessedMemberTypes)0x80000; 43public const DynamicallyAccessedMemberTypes PublicConstructorsWithInherited = DynamicallyAccessedMemberTypes.PublicConstructors | (DynamicallyAccessedMemberTypes)0x100000; 48public const DynamicallyAccessedMemberTypes PublicNestedTypesWithInherited = DynamicallyAccessedMemberTypes.PublicNestedTypes | (DynamicallyAccessedMemberTypes)0x200000;
src\tools\illink\src\ILLink.Shared\TrimAnalysis\FlowAnnotations.cs (4)
22internal partial MethodReturnValue GetMethodReturnValue(MethodProxy method, bool isNewObj, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes); 28internal partial GenericParameterValue GetGenericParameterValue(GenericParameterProxy genericParameter, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes); 30internal partial MethodParameterValue GetMethodThisParameterValue(MethodProxy method, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes); 34internal partial MethodParameterValue GetMethodParameterValue(ParameterProxy param, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes);
src\tools\illink\src\ILLink.Shared\TrimAnalysis\HandleCallAction.cs (145)
95Debug.Assert(requiresDataFlowAnalysis || annotatedMethodReturnValue.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.None); 247var targetValue = _annotations.GetMethodThisParameterValue(calledMethod, DynamicallyAccessedMemberTypes.Interfaces); 270DynamicallyAccessedMemberTypes returnMemberTypes = DynamicallyAccessedMemberTypes.Interfaces; 274&& valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.All) 275returnMemberTypes = DynamicallyAccessedMemberTypes.All; 295var targetValue = _annotations.GetMethodThisParameterValue(calledMethod, DynamicallyAccessedMemberTypes.Interfaces); 302DynamicallyAccessedMemberTypes returnMemberTypes = DynamicallyAccessedMemberTypes.Interfaces; 306&& valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.All) 307returnMemberTypes = DynamicallyAccessedMemberTypes.All; 370&& (damAnnotatedHandle.UnderlyingTypeValue.DynamicallyAccessedMemberTypes & DynamicallyAccessedMemberTypes.NonPublicConstructors) != 0) 404DynamicallyAccessedMemberTypes memberTypes; 409IntrinsicId.Type_GetConstructors__BindingFlags => DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors, 410IntrinsicId.Type_GetMethods__BindingFlags => DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods, 411IntrinsicId.Type_GetEvents__BindingFlags => DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents, 412IntrinsicId.Type_GetFields__BindingFlags => DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields, 413IntrinsicId.Type_GetProperties__BindingFlags => DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, 414IntrinsicId.Type_GetNestedTypes__BindingFlags => DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes, 415IntrinsicId.Type_GetMembers__BindingFlags => DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors | 416DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents | 417DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | 418DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods | 419DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties | 420DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes, 474DynamicallyAccessedMemberTypes memberTypes = intrinsicId switch 549DynamicallyAccessedMemberTypes requiredMemberTypes; 552requiredMemberTypes = DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors | 553DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents | 554DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | 555DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods | 556DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties | 557DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes; 677const DynamicallyAccessedMemberTypes ImplicitNestedTypeAccessLevel = 679DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypesEx.NonPublicMethodsWithInherited | 680DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypesEx.NonPublicFieldsWithInherited | 681DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypesEx.NonPublicPropertiesWithInherited | 682DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypesEx.NonPublicEventsWithInherited | 684DynamicallyAccessedMemberTypes.Interfaces; 737if (value is ValueWithDynamicallyAccessedMembers { DynamicallyAccessedMemberTypes: DynamicallyAccessedMemberTypes.All }) 738AddReturnValue(_annotations.GetMethodReturnValue(calledMethod, _isNewObj, DynamicallyAccessedMemberTypes.All)); 767DynamicallyAccessedMemberTypes requiredMemberTypes = intrinsicId switch 769IntrinsicId.RuntimeReflectionExtensions_GetRuntimeEvent => DynamicallyAccessedMemberTypes.PublicEvents, 770IntrinsicId.RuntimeReflectionExtensions_GetRuntimeField => DynamicallyAccessedMemberTypes.PublicFields, 771IntrinsicId.RuntimeReflectionExtensions_GetRuntimeMethod => DynamicallyAccessedMemberTypes.PublicMethods, 772IntrinsicId.RuntimeReflectionExtensions_GetRuntimeProperty => DynamicallyAccessedMemberTypes.PublicProperties, 839var targetValue = _annotations.GetMethodParameterValue(new(calledMethod, (ParameterIndex)0), DynamicallyAccessedMemberTypes.PublicParameterlessConstructor); 885_annotations.GetMethodParameterValue(new(calledMethod, (ParameterIndex)1), DynamicallyAccessedMemberTypes.None).GetDiagnosticArgumentsForAnnotationMismatch().ToArray()); 899DynamicallyAccessedMemberTypes memberTypes = intrinsicId == IntrinsicId.Expression_Property 900? DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties 901: DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields; 1202DynamicallyAccessedMemberTypes propagatedMemberTypes = DynamicallyAccessedMemberTypes.None; 1203if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.All) 1204propagatedMemberTypes = DynamicallyAccessedMemberTypes.All; 1215if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicEvents)) 1216propagatedMemberTypes |= DynamicallyAccessedMemberTypes.PublicEvents; 1221if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicFields)) 1222propagatedMemberTypes |= DynamicallyAccessedMemberTypes.PublicFields; 1227if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicMethods)) 1228propagatedMemberTypes |= DynamicallyAccessedMemberTypes.PublicMethods; 1243if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicProperties)) 1244propagatedMemberTypes |= DynamicallyAccessedMemberTypes.PublicProperties; 1249if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.Interfaces)) 1250propagatedMemberTypes |= DynamicallyAccessedMemberTypes.Interfaces; 1325var requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(bindingFlags); 1327if (requiredMemberTypes == DynamicallyAccessedMemberTypes.PublicConstructors && ctorParameterCount == 0) 1328requiredMemberTypes = DynamicallyAccessedMemberTypes.PublicParameterlessConstructor; 1445var requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(bindingFlags); 1448if (ctorParameterCount == 0 && requiredMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicConstructors)) 1450requiredMemberTypes &= ~DynamicallyAccessedMemberTypes.PublicConstructors; 1451requiredMemberTypes |= DynamicallyAccessedMemberTypes.PublicParameterlessConstructor; 1579if (GetGenericParameterEffectiveMemberTypes(genericParameter) != DynamicallyAccessedMemberTypes.None) 1634static DynamicallyAccessedMemberTypes GetGenericParameterEffectiveMemberTypes(GenericParameterValue genericParameter) 1636DynamicallyAccessedMemberTypes result = genericParameter.DynamicallyAccessedMemberTypes; 1638result |= DynamicallyAccessedMemberTypes.PublicParameterlessConstructor; 1763internal 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); 1768internal 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); 1773internal 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); 1778internal 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); 1783internal 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); 1788internal 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); 1793internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesFromBindingFlagsForMembers(BindingFlags? bindingFlags) =>
src\tools\illink\src\ILLink.Shared\TrimAnalysis\NullableValueWithDynamicallyAccessedMembers.cs (1)
31public override DynamicallyAccessedMemberTypes DynamicallyAccessedMemberTypes => UnderlyingTypeValue.DynamicallyAccessedMemberTypes;
src\tools\illink\src\ILLink.Shared\TrimAnalysis\RequireDynamicallyAccessedMembersAction.cs (5)
23if (targetValue.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.None) 28if (targetValue.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.PublicParameterlessConstructor 34else if (targetValue.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.PublicFields 46var availableMemberTypes = valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes; 96private partial void MarkTypeForDynamicallyAccessedMembers(in TypeProxy type, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes);
src\tools\illink\src\ILLink.Shared\TrimAnalysis\ValueWithDynamicallyAccessedMembers.cs (1)
15public abstract DynamicallyAccessedMemberTypes DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\FieldValue.cs (2)
24private FieldValue(ISymbol fieldSymbol, ITypeSymbol fieldType, DynamicallyAccessedMemberTypes annotations) 33public override DynamicallyAccessedMemberTypes DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\FlowAnnotations.cs (28)
27if (GetMethodReturnValueAnnotation(method) != DynamicallyAccessedMemberTypes.None) 32if (GetMethodParameterAnnotation(param) != DynamicallyAccessedMemberTypes.None) 50if (GetMethodReturnValueAnnotation(method) == DynamicallyAccessedMemberTypes.None) 103if (GetMethodParameterAnnotation(param) != DynamicallyAccessedMemberTypes.None) 112return GetFieldAnnotation(field) != DynamicallyAccessedMemberTypes.None; 115internal static DynamicallyAccessedMemberTypes GetFieldAnnotation(IFieldSymbol field) 118return DynamicallyAccessedMemberTypes.None; 123internal static DynamicallyAccessedMemberTypes GetBackingFieldAnnotation(IPropertySymbol property) 126return DynamicallyAccessedMemberTypes.None; 131internal static DynamicallyAccessedMemberTypes GetTypeAnnotations(INamedTypeSymbol type) 133DynamicallyAccessedMemberTypes typeAnnotation = type.GetDynamicallyAccessedMemberTypes(); 152internal static DynamicallyAccessedMemberTypes GetMethodParameterAnnotation(ParameterProxy param) 157return DynamicallyAccessedMemberTypes.None; 164return DynamicallyAccessedMemberTypes.None; 166var damt = parameter.GetDynamicallyAccessedMemberTypes(); 176&& damt == DynamicallyAccessedMemberTypes.None 187public static DynamicallyAccessedMemberTypes GetMethodReturnValueAnnotation(IMethodSymbol method) 190return DynamicallyAccessedMemberTypes.None; 192var returnDamt = method.GetDynamicallyAccessedMemberTypesOnReturnType(); 197if (method.MethodKind is MethodKind.PropertyGet && returnDamt == DynamicallyAccessedMemberTypes.None) 207public static DynamicallyAccessedMemberTypes GetTypeAnnotation(ITypeSymbol type) 209var typeAnnotation = type.GetDynamicallyAccessedMemberTypes(); 234internal partial MethodReturnValue GetMethodReturnValue(MethodProxy method, bool isNewObj, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 240internal partial GenericParameterValue GetGenericParameterValue(GenericParameterProxy genericParameter, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 246internal partial MethodParameterValue GetMethodThisParameterValue(MethodProxy method, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 258var damt = GetMethodParameterAnnotation(param); 262internal MethodParameterValue GetMethodParameterValue(MethodProxy method, ParameterIndex parameterIndex, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 268internal partial MethodParameterValue GetMethodParameterValue(ParameterProxy param, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes)
TrimAnalysis\GenericArgumentDataFlow.cs (2)
53if (genericParameterValue.DynamicallyAccessedMemberTypes != DynamicallyAccessedMemberTypes.None) 120if (genericParameterValue.DynamicallyAccessedMemberTypes != DynamicallyAccessedMemberTypes.None)
TrimAnalysis\GenericParameterValue.cs (2)
18public GenericParameterValue(ITypeParameterSymbol typeParameterSymbol, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 29public override DynamicallyAccessedMemberTypes DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\HandleCallAction.cs (4)
141DynamicallyAccessedMemberTypes annotation = default; 147annotation = DynamicallyAccessedMemberTypes.PublicFields; 182AddReturnValue(FlowAnnotations.Instance.GetMethodReturnValue(calledMethod, _isNewObj, DynamicallyAccessedMemberTypes.PublicFields)); 186var annotation = FlowAnnotations.GetTypeAnnotation(staticType);
TrimAnalysis\MethodParameterValue.cs (3)
14public MethodParameterValue(IMethodSymbol methodSymbol, ParameterIndex parameterIndex, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 20public MethodParameterValue(ParameterProxy parameter, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 27public override DynamicallyAccessedMemberTypes DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\MethodReturnValue.cs (2)
21public MethodReturnValue(IMethodSymbol methodSymbol, bool isNewObj, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 32public override DynamicallyAccessedMemberTypes DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\ReflectionAccessAnalyzer.cs (4)
27internal void GetReflectionAccessDiagnostics(Location location, ITypeSymbol typeSymbol, DynamicallyAccessedMemberTypes requiredMemberTypes, bool declaredOnly = false) 163if (methodSymbol.IsVirtual && FlowAnnotations.GetMethodReturnValueAnnotation(methodSymbol) != DynamicallyAccessedMemberTypes.None) 171if (FlowAnnotations.GetMethodParameterAnnotation(parameter) != DynamicallyAccessedMemberTypes.None) 209if (FlowAnnotations.GetFieldAnnotation(fieldSymbol) != DynamicallyAccessedMemberTypes.None)
TrimAnalysis\RequireDynamicallyAccessedMembersAction.cs (1)
37private partial void MarkTypeForDynamicallyAccessedMembers(in TypeProxy type, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) =>