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)
181if (member is IFieldSymbol field && field.GetDynamicallyAccessedMemberTypes() != DynamicallyAccessedMemberTypes.None && !field.Type.IsTypeInterestingForDataflow(isByRef: field.RefKind is not RefKind.None)) 185if (method.GetDynamicallyAccessedMemberTypesOnReturnType() != DynamicallyAccessedMemberTypes.None && !method.ReturnType.IsTypeInterestingForDataflow(isByRef: method.ReturnsByRef)) 187if (method.GetDynamicallyAccessedMemberTypes() != DynamicallyAccessedMemberTypes.None && !method.ContainingType.IsTypeInterestingForDataflow(isByRef: false)) 191if (parameter.GetDynamicallyAccessedMemberTypes() != DynamicallyAccessedMemberTypes.None && !parameter.Type.IsTypeInterestingForDataflow(isByRef: parameter.RefKind is not RefKind.None)) 197if (property.GetDynamicallyAccessedMemberTypes() != DynamicallyAccessedMemberTypes.None && !property.Type.IsTypeInterestingForDataflow(isByRef: property.ReturnsByRef)) 199if (property.GetDynamicallyAccessedMemberTypes() != DynamicallyAccessedMemberTypes.None && property.ContainingType.ExtensionParameter != null) 215var overrideMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation(overrideMethod); 216var baseMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation(baseMethod); 220(IMethodSymbol attributableMethod, DynamicallyAccessedMemberTypes missingAttribute) = GetTargetAndRequirements(overrideMethod, 240var baseParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation(baseParam); 241var overrideParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation(overrideParam); 244(IMethodSymbol attributableMethod, DynamicallyAccessedMemberTypes missingAttribute) = GetTargetAndRequirements(overrideMethod, 265var methodTypeParameterAnnotation = overrideMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes(); 266var overriddenMethodTypeParameterAnnotation = baseMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes(); 270(IMethodSymbol attributableMethod, DynamicallyAccessedMemberTypes missingAttribute) = GetTargetAndRequirements(overrideMethod, baseMethod, methodTypeParameterAnnotation, overriddenMethodTypeParameterAnnotation); 292var overrideMethodThisAnnotation = FlowAnnotations.GetMethodParameterAnnotation(new ParameterProxy(new(overrideMethod), (ParameterIndex)0)); 293var baseMethodThisAnnotation = FlowAnnotations.GetMethodParameterAnnotation(new ParameterProxy(new(baseMethod), (ParameterIndex)0)); 329|| propertySymbol.GetDynamicallyAccessedMemberTypes() == DynamicallyAccessedMemberTypes.None) 339&& methodSymbol.GetDynamicallyAccessedMemberTypesOnReturnType() != DynamicallyAccessedMemberTypes.None 342&& methodSymbol.Parameters[methodSymbol.Parameters.Length - 1].GetDynamicallyAccessedMemberTypes() != DynamicallyAccessedMemberTypes.None) 354private static (IMethodSymbol Method, DynamicallyAccessedMemberTypes Requirements) GetTargetAndRequirements(IMethodSymbol method, IMethodSymbol overriddenMethod, DynamicallyAccessedMemberTypes methodAnnotation, DynamicallyAccessedMemberTypes overriddenMethodAnnotation) 356DynamicallyAccessedMemberTypes mismatchedArgument; 358if (methodAnnotation == DynamicallyAccessedMemberTypes.None) 371private 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\runtime\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\runtime\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\runtime\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\runtime\src\tools\illink\src\ILLink.Shared\TrimAnalysis\HandleCallAction.cs (145)
95Debug.Assert(requiresDataFlowAnalysis || annotatedMethodReturnValue.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.None); 269var targetValue = _annotations.GetMethodThisParameterValue(calledMethod, DynamicallyAccessedMemberTypes.Interfaces); 292DynamicallyAccessedMemberTypes returnMemberTypes = DynamicallyAccessedMemberTypes.Interfaces; 296&& valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.All) 297returnMemberTypes = DynamicallyAccessedMemberTypes.All; 317var targetValue = _annotations.GetMethodThisParameterValue(calledMethod, DynamicallyAccessedMemberTypes.Interfaces); 324DynamicallyAccessedMemberTypes returnMemberTypes = DynamicallyAccessedMemberTypes.Interfaces; 328&& valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.All) 329returnMemberTypes = DynamicallyAccessedMemberTypes.All; 392&& (damAnnotatedHandle.UnderlyingTypeValue.DynamicallyAccessedMemberTypes & DynamicallyAccessedMemberTypes.NonPublicConstructors) != 0) 426DynamicallyAccessedMemberTypes memberTypes; 431IntrinsicId.Type_GetConstructors__BindingFlags => DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors, 432IntrinsicId.Type_GetMethods__BindingFlags => DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods, 433IntrinsicId.Type_GetEvents__BindingFlags => DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents, 434IntrinsicId.Type_GetFields__BindingFlags => DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields, 435IntrinsicId.Type_GetProperties__BindingFlags => DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, 436IntrinsicId.Type_GetNestedTypes__BindingFlags => DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes, 437IntrinsicId.Type_GetMembers__BindingFlags => DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors | 438DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents | 439DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | 440DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods | 441DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties | 442DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes, 496DynamicallyAccessedMemberTypes memberTypes = intrinsicId switch 571DynamicallyAccessedMemberTypes requiredMemberTypes; 574requiredMemberTypes = DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors | 575DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents | 576DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | 577DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods | 578DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties | 579DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes; 700const DynamicallyAccessedMemberTypes ImplicitNestedTypeAccessLevel = 702DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypesEx.NonPublicMethodsWithInherited | 703DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypesEx.NonPublicFieldsWithInherited | 704DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypesEx.NonPublicPropertiesWithInherited | 705DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypesEx.NonPublicEventsWithInherited | 707DynamicallyAccessedMemberTypes.Interfaces; 760if (value is ValueWithDynamicallyAccessedMembers { DynamicallyAccessedMemberTypes: DynamicallyAccessedMemberTypes.All }) 761AddReturnValue(_annotations.GetMethodReturnValue(calledMethod, _isNewObj, DynamicallyAccessedMemberTypes.All)); 790DynamicallyAccessedMemberTypes requiredMemberTypes = intrinsicId switch 792IntrinsicId.RuntimeReflectionExtensions_GetRuntimeEvent => DynamicallyAccessedMemberTypes.PublicEvents, 793IntrinsicId.RuntimeReflectionExtensions_GetRuntimeField => DynamicallyAccessedMemberTypes.PublicFields, 794IntrinsicId.RuntimeReflectionExtensions_GetRuntimeMethod => DynamicallyAccessedMemberTypes.PublicMethods, 795IntrinsicId.RuntimeReflectionExtensions_GetRuntimeProperty => DynamicallyAccessedMemberTypes.PublicProperties, 862var targetValue = _annotations.GetMethodParameterValue(new(calledMethod, (ParameterIndex)0), DynamicallyAccessedMemberTypes.PublicParameterlessConstructor); 908_annotations.GetMethodParameterValue(new(calledMethod, (ParameterIndex)1), DynamicallyAccessedMemberTypes.None).GetDiagnosticArgumentsForAnnotationMismatch().ToArray()); 922DynamicallyAccessedMemberTypes memberTypes = intrinsicId == IntrinsicId.Expression_Property 923? DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties 924: DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields; 1226DynamicallyAccessedMemberTypes propagatedMemberTypes = DynamicallyAccessedMemberTypes.None; 1227if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.All) 1228propagatedMemberTypes = DynamicallyAccessedMemberTypes.All; 1239if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicEvents)) 1240propagatedMemberTypes |= DynamicallyAccessedMemberTypes.PublicEvents; 1245if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicFields)) 1246propagatedMemberTypes |= DynamicallyAccessedMemberTypes.PublicFields; 1251if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicMethods)) 1252propagatedMemberTypes |= DynamicallyAccessedMemberTypes.PublicMethods; 1267if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicProperties)) 1268propagatedMemberTypes |= DynamicallyAccessedMemberTypes.PublicProperties; 1273if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.Interfaces)) 1274propagatedMemberTypes |= DynamicallyAccessedMemberTypes.Interfaces; 1349var requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(bindingFlags); 1351if (requiredMemberTypes == DynamicallyAccessedMemberTypes.PublicConstructors && ctorParameterCount == 0) 1352requiredMemberTypes = DynamicallyAccessedMemberTypes.PublicParameterlessConstructor; 1469var requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(bindingFlags); 1472if (ctorParameterCount == 0 && requiredMemberTypes.HasFlag(DynamicallyAccessedMemberTypes.PublicConstructors)) 1474requiredMemberTypes &= ~DynamicallyAccessedMemberTypes.PublicConstructors; 1475requiredMemberTypes |= DynamicallyAccessedMemberTypes.PublicParameterlessConstructor; 1666if (GetGenericParameterEffectiveMemberTypes(genericParameter) != DynamicallyAccessedMemberTypes.None) 1721static DynamicallyAccessedMemberTypes GetGenericParameterEffectiveMemberTypes(GenericParameterValue genericParameter) 1723DynamicallyAccessedMemberTypes result = genericParameter.DynamicallyAccessedMemberTypes; 1725result |= DynamicallyAccessedMemberTypes.PublicParameterlessConstructor; 1850internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesFromBindingFlagsForNestedTypes(BindingFlags? bindingFlags) => 1851(HasBindingFlag(bindingFlags, BindingFlags.Public) ? DynamicallyAccessedMemberTypes.PublicNestedTypes : DynamicallyAccessedMemberTypes.None) | 1852(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ? DynamicallyAccessedMemberTypes.NonPublicNestedTypes : DynamicallyAccessedMemberTypes.None) | 1853(BindingFlagsAreUnsupported(bindingFlags) ? DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes : DynamicallyAccessedMemberTypes.None); 1855internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors(BindingFlags? bindingFlags) => 1856(HasBindingFlag(bindingFlags, BindingFlags.Public) ? DynamicallyAccessedMemberTypes.PublicConstructors : DynamicallyAccessedMemberTypes.None) | 1857(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ? DynamicallyAccessedMemberTypes.NonPublicConstructors : DynamicallyAccessedMemberTypes.None) | 1858(BindingFlagsAreUnsupported(bindingFlags) ? DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors : DynamicallyAccessedMemberTypes.None); 1860internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesFromBindingFlagsForMethods(BindingFlags? bindingFlags) => 1861(HasBindingFlag(bindingFlags, BindingFlags.Public) ? DynamicallyAccessedMemberTypes.PublicMethods : DynamicallyAccessedMemberTypes.None) | 1862(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ? DynamicallyAccessedMemberTypes.NonPublicMethods : DynamicallyAccessedMemberTypes.None) | 1863(BindingFlagsAreUnsupported(bindingFlags) ? DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods : DynamicallyAccessedMemberTypes.None); 1865internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesFromBindingFlagsForFields(BindingFlags? bindingFlags) => 1866(HasBindingFlag(bindingFlags, BindingFlags.Public) ? DynamicallyAccessedMemberTypes.PublicFields : DynamicallyAccessedMemberTypes.None) | 1867(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ? DynamicallyAccessedMemberTypes.NonPublicFields : DynamicallyAccessedMemberTypes.None) | 1868(BindingFlagsAreUnsupported(bindingFlags) ? DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields : DynamicallyAccessedMemberTypes.None); 1870internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesFromBindingFlagsForProperties(BindingFlags? bindingFlags) => 1871(HasBindingFlag(bindingFlags, BindingFlags.Public) ? DynamicallyAccessedMemberTypes.PublicProperties : DynamicallyAccessedMemberTypes.None) | 1872(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ? DynamicallyAccessedMemberTypes.NonPublicProperties : DynamicallyAccessedMemberTypes.None) | 1873(BindingFlagsAreUnsupported(bindingFlags) ? DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties : DynamicallyAccessedMemberTypes.None); 1875internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesFromBindingFlagsForEvents(BindingFlags? bindingFlags) => 1876(HasBindingFlag(bindingFlags, BindingFlags.Public) ? DynamicallyAccessedMemberTypes.PublicEvents : DynamicallyAccessedMemberTypes.None) | 1877(HasBindingFlag(bindingFlags, BindingFlags.NonPublic) ? DynamicallyAccessedMemberTypes.NonPublicEvents : DynamicallyAccessedMemberTypes.None) | 1878(BindingFlagsAreUnsupported(bindingFlags) ? DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents : DynamicallyAccessedMemberTypes.None); 1880internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesFromBindingFlagsForMembers(BindingFlags? bindingFlags) =>
src\runtime\src\tools\illink\src\ILLink.Shared\TrimAnalysis\NullableUnwrappedGenericParameterValue.cs (1)
25public override DynamicallyAccessedMemberTypes DynamicallyAccessedMemberTypes => GenericParameter.DynamicallyAccessedMemberTypes;
src\runtime\src\tools\illink\src\ILLink.Shared\TrimAnalysis\NullableValueWithDynamicallyAccessedMembers.cs (1)
31public override DynamicallyAccessedMemberTypes DynamicallyAccessedMemberTypes => UnderlyingTypeValue.DynamicallyAccessedMemberTypes;
src\runtime\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\runtime\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)
146DynamicallyAccessedMemberTypes annotation = default; 152annotation = DynamicallyAccessedMemberTypes.PublicFields; 187AddReturnValue(FlowAnnotations.Instance.GetMethodReturnValue(calledMethod, _isNewObj, DynamicallyAccessedMemberTypes.PublicFields)); 191var 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) =>