319 references to DynamicallyAccessedMemberTypes
ILLink.RoslynAnalyzer (319)
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 (26)
184if (member is IFieldSymbol field && field.GetDynamicallyAccessedMemberTypes() != DynamicallyAccessedMemberTypes.None && !field.Type.IsTypeInterestingForDataflow(isByRef: field.RefKind is not RefKind.None)) 188if (method.GetDynamicallyAccessedMemberTypesOnReturnType() != DynamicallyAccessedMemberTypes.None && !method.ReturnType.IsTypeInterestingForDataflow(isByRef: method.ReturnsByRef)) 190if (method.GetDynamicallyAccessedMemberTypes() != DynamicallyAccessedMemberTypes.None && !method.ContainingType.IsTypeInterestingForDataflow(isByRef: false)) 194if (parameter.GetDynamicallyAccessedMemberTypes() != DynamicallyAccessedMemberTypes.None && !parameter.Type.IsTypeInterestingForDataflow(isByRef: parameter.RefKind is not RefKind.None)) 200if (property.GetDynamicallyAccessedMemberTypes() != DynamicallyAccessedMemberTypes.None && !property.Type.IsTypeInterestingForDataflow(isByRef: property.ReturnsByRef)) 202if (property.GetDynamicallyAccessedMemberTypes() != DynamicallyAccessedMemberTypes.None && property.ContainingType.ExtensionParameter != null) 218var overrideMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation(overrideMethod); 219var baseMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation(baseMethod); 223(IMethodSymbol attributableMethod, DynamicallyAccessedMemberTypes missingAttribute) = GetTargetAndRequirements(overrideMethod, 243var baseParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation(baseParam); 244var overrideParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation(overrideParam); 247(IMethodSymbol attributableMethod, DynamicallyAccessedMemberTypes missingAttribute) = GetTargetAndRequirements(overrideMethod, 268var methodTypeParameterAnnotation = overrideMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes(); 269var overriddenMethodTypeParameterAnnotation = baseMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes(); 273(IMethodSymbol attributableMethod, DynamicallyAccessedMemberTypes missingAttribute) = GetTargetAndRequirements(overrideMethod, baseMethod, methodTypeParameterAnnotation, overriddenMethodTypeParameterAnnotation); 295var overrideMethodThisAnnotation = FlowAnnotations.GetMethodParameterAnnotation(new ParameterProxy(new(overrideMethod), (ParameterIndex)0)); 296var 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) 357private static (IMethodSymbol Method, DynamicallyAccessedMemberTypes Requirements) GetTargetAndRequirements(IMethodSymbol method, IMethodSymbol overriddenMethod, DynamicallyAccessedMemberTypes methodAnnotation, DynamicallyAccessedMemberTypes overriddenMethodAnnotation) 359DynamicallyAccessedMemberTypes mismatchedArgument; 361if (methodAnnotation == DynamicallyAccessedMemberTypes.None) 374private static (Location[]?, Dictionary<string, string?>?) CreateArguments(Location attributableSymbolLocation, DynamicallyAccessedMemberTypes mismatchedArgument)
DynamicallyAccessedMembersTypeHierarchy.cs (7)
21var annotation = FlowAnnotations.GetTypeAnnotation(type); 29var baseAnnotation = FlowAnnotations.GetTypeAnnotation(baseType); 30var annotationToApplyToBase = Annotations.GetMissingMemberTypes(annotation, baseAnnotation); 40if (annotation.HasFlag(DynamicallyAccessedMemberTypes.Interfaces)) 42var 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;
RequiresUnreferencedCodeAnalyzer.cs (3)
114var parameterRequirements = typeParameter.GetDynamicallyAccessedMemberTypes(); 117parameterRequirements &= ~DynamicallyAccessedMemberTypes.PublicParameterlessConstructor; 122genericParameterValue.DynamicallyAccessedMemberTypes != 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; 678const DynamicallyAccessedMemberTypes ImplicitNestedTypeAccessLevel = 680DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypesEx.NonPublicMethodsWithInherited | 681DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypesEx.NonPublicFieldsWithInherited | 682DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypesEx.NonPublicPropertiesWithInherited | 683DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypesEx.NonPublicEventsWithInherited | 685DynamicallyAccessedMemberTypes.Interfaces; 738if (value is ValueWithDynamicallyAccessedMembers { DynamicallyAccessedMemberTypes: DynamicallyAccessedMemberTypes.All }) 739AddReturnValue(_annotations.GetMethodReturnValue(calledMethod, _isNewObj, DynamicallyAccessedMemberTypes.All)); 768DynamicallyAccessedMemberTypes requiredMemberTypes = intrinsicId switch 770IntrinsicId.RuntimeReflectionExtensions_GetRuntimeEvent => DynamicallyAccessedMemberTypes.PublicEvents, 771IntrinsicId.RuntimeReflectionExtensions_GetRuntimeField => DynamicallyAccessedMemberTypes.PublicFields, 772IntrinsicId.RuntimeReflectionExtensions_GetRuntimeMethod => DynamicallyAccessedMemberTypes.PublicMethods, 773IntrinsicId.RuntimeReflectionExtensions_GetRuntimeProperty => DynamicallyAccessedMemberTypes.PublicProperties, 840var targetValue = _annotations.GetMethodParameterValue(new(calledMethod, (ParameterIndex)0), DynamicallyAccessedMemberTypes.PublicParameterlessConstructor); 886_annotations.GetMethodParameterValue(new(calledMethod, (ParameterIndex)1), DynamicallyAccessedMemberTypes.None).GetDiagnosticArgumentsForAnnotationMismatch().ToArray()); 900DynamicallyAccessedMemberTypes memberTypes = intrinsicId == IntrinsicId.Expression_Property 901? DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties 902: DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields; 1204DynamicallyAccessedMemberTypes propagatedMemberTypes = DynamicallyAccessedMemberTypes.None; 1205if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.All) 1206propagatedMemberTypes = DynamicallyAccessedMemberTypes.All; 1217if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicEvents)) 1218propagatedMemberTypes |= DynamicallyAccessedMemberTypes.PublicEvents; 1223if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicFields)) 1224propagatedMemberTypes |= DynamicallyAccessedMemberTypes.PublicFields; 1229if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicMethods)) 1230propagatedMemberTypes |= DynamicallyAccessedMemberTypes.PublicMethods; 1245if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicProperties)) 1246propagatedMemberTypes |= DynamicallyAccessedMemberTypes.PublicProperties; 1251if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.Interfaces)) 1252propagatedMemberTypes |= DynamicallyAccessedMemberTypes.Interfaces; 1327var requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(bindingFlags); 1329if (requiredMemberTypes == DynamicallyAccessedMemberTypes.PublicConstructors && ctorParameterCount == 0) 1330requiredMemberTypes = DynamicallyAccessedMemberTypes.PublicParameterlessConstructor; 1447var requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(bindingFlags); 1450if (ctorParameterCount == 0 && requiredMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicConstructors)) 1452requiredMemberTypes &= ~DynamicallyAccessedMemberTypes.PublicConstructors; 1453requiredMemberTypes |= DynamicallyAccessedMemberTypes.PublicParameterlessConstructor; 1581if (GetGenericParameterEffectiveMemberTypes(genericParameter) != DynamicallyAccessedMemberTypes.None) 1636static DynamicallyAccessedMemberTypes GetGenericParameterEffectiveMemberTypes(GenericParameterValue genericParameter) 1638DynamicallyAccessedMemberTypes result = genericParameter.DynamicallyAccessedMemberTypes; 1640result |= DynamicallyAccessedMemberTypes.PublicParameterlessConstructor; 1765internal 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); 1770internal 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); 1775internal 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); 1780internal 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); 1785internal 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); 1790internal 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); 1795internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesFromBindingFlagsForMembers(BindingFlags? bindingFlags) =>
src\tools\illink\src\ILLink.Shared\TrimAnalysis\NullableUnwrappedGenericParameterValue.cs (1)
25public override DynamicallyAccessedMemberTypes DynamicallyAccessedMemberTypes => GenericParameter.DynamicallyAccessedMemberTypes;
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) 35if (targetValue.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.PublicParameterlessConstructor 41else if (targetValue.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.PublicFields 53var availableMemberTypes = valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes; 103private 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; 130internal static DynamicallyAccessedMemberTypes GetBackingFieldAnnotation(IPropertySymbol property) 133return DynamicallyAccessedMemberTypes.None; 138internal static DynamicallyAccessedMemberTypes GetTypeAnnotations(INamedTypeSymbol type) 140DynamicallyAccessedMemberTypes typeAnnotation = type.GetDynamicallyAccessedMemberTypes(); 159internal static DynamicallyAccessedMemberTypes GetMethodParameterAnnotation(ParameterProxy param) 164return DynamicallyAccessedMemberTypes.None; 171return DynamicallyAccessedMemberTypes.None; 173var damt = parameter.GetDynamicallyAccessedMemberTypes(); 182&& damt == DynamicallyAccessedMemberTypes.None 195public static DynamicallyAccessedMemberTypes GetMethodReturnValueAnnotation(IMethodSymbol method) 198return DynamicallyAccessedMemberTypes.None; 200var returnDamt = method.GetDynamicallyAccessedMemberTypesOnReturnType(); 206&& returnDamt == DynamicallyAccessedMemberTypes.None 218public static DynamicallyAccessedMemberTypes GetTypeAnnotation(ITypeSymbol type) 220var typeAnnotation = type.GetDynamicallyAccessedMemberTypes(); 245internal partial MethodReturnValue GetMethodReturnValue(MethodProxy method, bool isNewObj, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 251internal partial GenericParameterValue GetGenericParameterValue(GenericParameterProxy genericParameter, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 257internal partial MethodParameterValue GetMethodThisParameterValue(MethodProxy method, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 269var damt = GetMethodParameterAnnotation(param); 273internal MethodParameterValue GetMethodParameterValue(MethodProxy method, ParameterIndex parameterIndex, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 279internal partial MethodParameterValue GetMethodParameterValue(ParameterProxy param, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes)
TrimAnalysis\GenericArgumentDataFlow.cs (1)
147if (genericParameterValue.DynamicallyAccessedMemberTypes != DynamicallyAccessedMemberTypes.None)
TrimAnalysis\GenericParameterValue.cs (2)
18public GenericParameterValue(ITypeParameterSymbol typeParameterSymbol, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 29public override DynamicallyAccessedMemberTypes DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\HandleCallAction.cs (4)
144DynamicallyAccessedMemberTypes annotation = default; 150annotation = DynamicallyAccessedMemberTypes.PublicFields; 185AddReturnValue(FlowAnnotations.Instance.GetMethodReturnValue(calledMethod, _isNewObj, DynamicallyAccessedMemberTypes.PublicFields)); 189var annotation = FlowAnnotations.GetTypeAnnotation(staticType);
TrimAnalysis\MethodParameterValue.cs (2)
15public MethodParameterValue(ParameterProxy parameter, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 22public 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)
34internal void GetReflectionAccessDiagnostics(Location location, ITypeSymbol typeSymbol, DynamicallyAccessedMemberTypes requiredMemberTypes, bool declaredOnly = false) 170if (methodSymbol.IsVirtual && FlowAnnotations.GetMethodReturnValueAnnotation(methodSymbol) != DynamicallyAccessedMemberTypes.None) 178if (FlowAnnotations.GetMethodParameterAnnotation(parameter) != DynamicallyAccessedMemberTypes.None) 216if (FlowAnnotations.GetFieldAnnotation(fieldSymbol) != DynamicallyAccessedMemberTypes.None)
TrimAnalysis\RequireDynamicallyAccessedMembersAction.cs (1)
67private partial void MarkTypeForDynamicallyAccessedMembers(in TypeProxy type, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) =>