313 references to DynamicallyAccessedMemberTypes
ILLink.RoslynAnalyzer (313)
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) { 32 if (memberTypes.HasFlag (DynamicallyAccessedMemberTypes.NonPublicConstructors)) { 38 if (memberTypes.HasFlag (DynamicallyAccessedMemberTypes.PublicConstructors)) { 44 if (memberTypes.HasFlag (DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)) { 49 if (memberTypes.HasFlag (DynamicallyAccessedMemberTypes.NonPublicMethods)) { 55 if (memberTypes.HasFlag (DynamicallyAccessedMemberTypes.PublicMethods)) { 60 if (memberTypes.HasFlag (DynamicallyAccessedMemberTypes.NonPublicFields)) { 66 if (memberTypes.HasFlag (DynamicallyAccessedMemberTypes.PublicFields)) { 71 if (memberTypes.HasFlag (DynamicallyAccessedMemberTypes.NonPublicNestedTypes)) { 82 if (memberTypes.HasFlag (DynamicallyAccessedMemberTypes.PublicNestedTypes)) { 93 if (memberTypes.HasFlag (DynamicallyAccessedMemberTypes.NonPublicProperties)) { 99 if (memberTypes.HasFlag (DynamicallyAccessedMemberTypes.PublicProperties)) { 104 if (memberTypes.HasFlag (DynamicallyAccessedMemberTypes.NonPublicEvents)) { 110 if (memberTypes.HasFlag (DynamicallyAccessedMemberTypes.PublicEvents)) { 115 if (memberTypes.HasFlag (DynamicallyAccessedMemberTypes.Interfaces)) {
DynamicallyAccessedMembersAnalyzer.cs (25)
153 if (member is IFieldSymbol field && field.GetDynamicallyAccessedMemberTypes () != DynamicallyAccessedMemberTypes.None && !field.Type.IsTypeInterestingForDataflow (isByRef: field.RefKind is not RefKind.None)) 156 if (method.GetDynamicallyAccessedMemberTypesOnReturnType () != DynamicallyAccessedMemberTypes.None && !method.ReturnType.IsTypeInterestingForDataflow (isByRef: method.ReturnsByRef)) 158 if (method.GetDynamicallyAccessedMemberTypes () != DynamicallyAccessedMemberTypes.None && !method.ContainingType.IsTypeInterestingForDataflow (isByRef: false)) 161 if (parameter.GetDynamicallyAccessedMemberTypes () != DynamicallyAccessedMemberTypes.None && !parameter.Type.IsTypeInterestingForDataflow (isByRef: parameter.RefKind is not RefKind.None)) 164 } else if (member is IPropertySymbol property && property.GetDynamicallyAccessedMemberTypes () != DynamicallyAccessedMemberTypes.None && !property.Type.IsTypeInterestingForDataflow (isByRef: property.ReturnsByRef)) { 179 var overrideMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation (overrideMethod); 180 var baseMethodReturnAnnotation = FlowAnnotations.GetMethodReturnValueAnnotation (baseMethod); 183 (IMethodSymbol attributableMethod, DynamicallyAccessedMemberTypes missingAttribute) = GetTargetAndRequirements (overrideMethod, 202 var baseParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation (baseParam); 203 var overrideParameterAnnotation = FlowAnnotations.GetMethodParameterAnnotation (overrideParam); 205 (IMethodSymbol attributableMethod, DynamicallyAccessedMemberTypes missingAttribute) = GetTargetAndRequirements (overrideMethod, 225 var methodTypeParameterAnnotation = overrideMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes (); 226 var overriddenMethodTypeParameterAnnotation = baseMethod.TypeParameters[i].GetDynamicallyAccessedMemberTypes (); 229 (IMethodSymbol attributableMethod, DynamicallyAccessedMemberTypes missingAttribute) = GetTargetAndRequirements (overrideMethod, baseMethod, methodTypeParameterAnnotation, overriddenMethodTypeParameterAnnotation); 250 var overrideMethodThisAnnotation = FlowAnnotations.GetMethodParameterAnnotation (new ParameterProxy (new (overrideMethod), (ParameterIndex) 0)); 251 var baseMethodThisAnnotation = FlowAnnotations.GetMethodParameterAnnotation (new ParameterProxy (new (baseMethod), (ParameterIndex) 0)); 284 || propertySymbol.GetDynamicallyAccessedMemberTypes () == DynamicallyAccessedMemberTypes.None) 289 && methodSymbol.GetDynamicallyAccessedMemberTypesOnReturnType () != DynamicallyAccessedMemberTypes.None 292 && methodSymbol.Parameters[methodSymbol.Parameters.Length - 1].GetDynamicallyAccessedMemberTypes () != DynamicallyAccessedMemberTypes.None) { 303 private static (IMethodSymbol Method, DynamicallyAccessedMemberTypes Requirements) GetTargetAndRequirements (IMethodSymbol method, IMethodSymbol overriddenMethod, DynamicallyAccessedMemberTypes methodAnnotation, DynamicallyAccessedMemberTypes overriddenMethodAnnotation) 305 DynamicallyAccessedMemberTypes mismatchedArgument; 307 if (methodAnnotation == DynamicallyAccessedMemberTypes.None) { 317 private static (Location[]?, Dictionary<string, string?>?) CreateArguments (Location attributableSymbolLocation, DynamicallyAccessedMemberTypes mismatchedArgument)
DynamicallyAccessedMembersTypeHierarchy.cs (7)
17 var annotation = FlowAnnotations.GetTypeAnnotation (type); 24 var baseAnnotation = FlowAnnotations.GetTypeAnnotation (baseType); 25 var annotationToApplyToBase = Annotations.GetMissingMemberTypes (annotation, baseAnnotation); 35 if (annotation.HasFlag (DynamicallyAccessedMemberTypes.Interfaces)) 37 var annotationToApplyToInterfaces = annotation == DynamicallyAccessedMemberTypes.All ? annotation : DynamicallyAccessedMemberTypes.Interfaces;
ISymbolExtensions.cs (8)
56 internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypes (this ISymbol symbol) 59 return DynamicallyAccessedMemberTypes.None; 61 return (DynamicallyAccessedMemberTypes) dynamicallyAccessedMembers!.ConstructorArguments[0].Value!; 64 internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesOnReturnType (this IMethodSymbol methodSymbol) 75 return DynamicallyAccessedMemberTypes.None; 77 return (DynamicallyAccessedMemberTypes) dynamicallyAccessedMembers.ConstructorArguments[0].Value!; 103 internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesOnAssociatedSymbol (this IMethodSymbol methodSymbol) => 104 methodSymbol.AssociatedSymbol is ISymbol associatedSymbol ? GetDynamicallyAccessedMemberTypes (associatedSymbol) : DynamicallyAccessedMemberTypes.None;
src\tools\illink\src\ILLink.Shared\Annotations.cs (31)
19 DynamicallyAccessedMemberTypes sourceMemberTypes, 20 DynamicallyAccessedMemberTypes targetMemberTypes, 25 var missingMemberTypes = GetMissingMemberTypes (targetMemberTypes, sourceMemberTypes); 26 if (missingMemberTypes == DynamicallyAccessedMemberTypes.None) 33 public static DynamicallyAccessedMemberTypes GetMissingMemberTypes (DynamicallyAccessedMemberTypes requiredMemberTypes, DynamicallyAccessedMemberTypes availableMemberTypes) 36 return DynamicallyAccessedMemberTypes.None; 38 if (requiredMemberTypes == DynamicallyAccessedMemberTypes.All) 39 return DynamicallyAccessedMemberTypes.All; 41 var missingMemberTypes = requiredMemberTypes & ~availableMemberTypes; 45 if (requiredMemberTypes.HasFlag (DynamicallyAccessedMemberTypes.PublicConstructors) && 46 !availableMemberTypes.HasFlag (DynamicallyAccessedMemberTypes.PublicConstructors)) 47 missingMemberTypes |= DynamicallyAccessedMemberTypes.PublicConstructors; 52 public static string GetMemberTypesString (DynamicallyAccessedMemberTypes memberTypes) 54 Debug.Assert (memberTypes != DynamicallyAccessedMemberTypes.None); 56 if (memberTypes == DynamicallyAccessedMemberTypes.All) 57 return $"'{nameof (DynamicallyAccessedMemberTypes)}.{nameof (DynamicallyAccessedMemberTypes.All)}'"; 60 .Where (damt => (memberTypes & damt) == damt && damt != DynamicallyAccessedMemberTypes.None) 63 if (memberTypes.HasFlag (DynamicallyAccessedMemberTypes.PublicConstructors)) 64 memberTypesList.Remove (DynamicallyAccessedMemberTypes.PublicParameterlessConstructor); 67 string mtName = mt == DynamicallyAccessedMemberTypes.Interfaces 68 ? nameof (DynamicallyAccessedMemberTypes.Interfaces) 71 return $"'{nameof (DynamicallyAccessedMemberTypes)}.{mtName}'"; 75 private static readonly DynamicallyAccessedMemberTypes[] AllDynamicallyAccessedMemberTypes = GetAllDynamicallyAccessedMemberTypes (); 77 private static DynamicallyAccessedMemberTypes[] GetAllDynamicallyAccessedMemberTypes () 79 var values = new HashSet<DynamicallyAccessedMemberTypes> ( 80 Enum.GetValues (typeof (DynamicallyAccessedMemberTypes)) 81 .Cast<DynamicallyAccessedMemberTypes> ()); 82 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)
86 Debug.Assert (requiresDataFlowAnalysis || annotatedMethodReturnValue.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.None); 223 var targetValue = _annotations.GetMethodThisParameterValue (calledMethod, DynamicallyAccessedMemberTypes.Interfaces); 239 DynamicallyAccessedMemberTypes returnMemberTypes = DynamicallyAccessedMemberTypes.Interfaces; 243 && valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.All) 244 returnMemberTypes = DynamicallyAccessedMemberTypes.All; 262 var targetValue = _annotations.GetMethodThisParameterValue (calledMethod, DynamicallyAccessedMemberTypes.Interfaces); 268 DynamicallyAccessedMemberTypes returnMemberTypes = DynamicallyAccessedMemberTypes.Interfaces; 272 && valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.All) 273 returnMemberTypes = DynamicallyAccessedMemberTypes.All; 324 && (damAnnotatedHandle.UnderlyingTypeValue.DynamicallyAccessedMemberTypes & DynamicallyAccessedMemberTypes.NonPublicConstructors) != 0) { 352 DynamicallyAccessedMemberTypes memberTypes; 355 IntrinsicId.Type_GetConstructors__BindingFlags => DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors, 356 IntrinsicId.Type_GetMethods__BindingFlags => DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods, 357 IntrinsicId.Type_GetEvents__BindingFlags => DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents, 358 IntrinsicId.Type_GetFields__BindingFlags => DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields, 359 IntrinsicId.Type_GetProperties__BindingFlags => DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, 360 IntrinsicId.Type_GetNestedTypes__BindingFlags => DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes, 361 IntrinsicId.Type_GetMembers__BindingFlags => DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors | 362 DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents | 363 DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | 364 DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods | 365 DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties | 366 DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes, 415 DynamicallyAccessedMemberTypes memberTypes = intrinsicId switch { 474 DynamicallyAccessedMemberTypes requiredMemberTypes; 476 requiredMemberTypes = DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors | 477 DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents | 478 DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | 479 DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods | 480 DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties | 481 DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes; 563 const DynamicallyAccessedMemberTypes ImplicitNestedTypeAccessLevel = 565 DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypesEx.NonPublicMethodsWithInherited | 566 DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypesEx.NonPublicFieldsWithInherited | 567 DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypesEx.NonPublicPropertiesWithInherited | 568 DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypesEx.NonPublicEventsWithInherited | 570 DynamicallyAccessedMemberTypes.Interfaces; 610 if (value is ValueWithDynamicallyAccessedMembers { DynamicallyAccessedMemberTypes: DynamicallyAccessedMemberTypes.All }) 611 AddReturnValue (_annotations.GetMethodReturnValue (calledMethod, _isNewObj, DynamicallyAccessedMemberTypes.All)); 638 DynamicallyAccessedMemberTypes requiredMemberTypes = intrinsicId switch { 639 IntrinsicId.RuntimeReflectionExtensions_GetRuntimeEvent => DynamicallyAccessedMemberTypes.PublicEvents, 640 IntrinsicId.RuntimeReflectionExtensions_GetRuntimeField => DynamicallyAccessedMemberTypes.PublicFields, 641 IntrinsicId.RuntimeReflectionExtensions_GetRuntimeMethod => DynamicallyAccessedMemberTypes.PublicMethods, 642 IntrinsicId.RuntimeReflectionExtensions_GetRuntimeProperty => DynamicallyAccessedMemberTypes.PublicProperties, 695 var targetValue = _annotations.GetMethodParameterValue (new (calledMethod, (ParameterIndex) 0), DynamicallyAccessedMemberTypes.PublicParameterlessConstructor); 731 _annotations.GetMethodParameterValue (new (calledMethod, (ParameterIndex) 1), DynamicallyAccessedMemberTypes.None).GetDiagnosticArgumentsForAnnotationMismatch ().ToArray ()); 744 DynamicallyAccessedMemberTypes memberTypes = intrinsicId == IntrinsicId.Expression_Property 745 ? DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties 746 : DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields; 983 DynamicallyAccessedMemberTypes propagatedMemberTypes = DynamicallyAccessedMemberTypes.None; 984 if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.All) 985 propagatedMemberTypes = DynamicallyAccessedMemberTypes.All; 995 if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag (DynamicallyAccessedMemberTypes.PublicEvents)) 996 propagatedMemberTypes |= DynamicallyAccessedMemberTypes.PublicEvents; 1001 if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag (DynamicallyAccessedMemberTypes.PublicFields)) 1002 propagatedMemberTypes |= DynamicallyAccessedMemberTypes.PublicFields; 1007 if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag (DynamicallyAccessedMemberTypes.PublicMethods)) 1008 propagatedMemberTypes |= DynamicallyAccessedMemberTypes.PublicMethods; 1023 if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag (DynamicallyAccessedMemberTypes.PublicProperties)) 1024 propagatedMemberTypes |= DynamicallyAccessedMemberTypes.PublicProperties; 1029 if (valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes.HasFlag (DynamicallyAccessedMemberTypes.Interfaces)) 1030 propagatedMemberTypes |= DynamicallyAccessedMemberTypes.Interfaces; 1089 var requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors (bindingFlags); 1091 if (requiredMemberTypes == DynamicallyAccessedMemberTypes.PublicConstructors && ctorParameterCount == 0) 1092 requiredMemberTypes = DynamicallyAccessedMemberTypes.PublicParameterlessConstructor; 1186 var requiredMemberTypes = GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors (bindingFlags); 1189 if (ctorParameterCount == 0 && requiredMemberTypes.HasFlag (DynamicallyAccessedMemberTypes.PublicConstructors)) { 1190 requiredMemberTypes &= ~DynamicallyAccessedMemberTypes.PublicConstructors; 1191 requiredMemberTypes |= DynamicallyAccessedMemberTypes.PublicParameterlessConstructor; 1314 if (GetGenericParameterEffectiveMemberTypes (genericParameter) != DynamicallyAccessedMemberTypes.None) { 1360 static DynamicallyAccessedMemberTypes GetGenericParameterEffectiveMemberTypes (GenericParameterValue genericParameter) 1362 DynamicallyAccessedMemberTypes result = genericParameter.DynamicallyAccessedMemberTypes; 1364 result |= DynamicallyAccessedMemberTypes.PublicParameterlessConstructor; 1474 internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesFromBindingFlagsForNestedTypes (BindingFlags? bindingFlags) => 1475 (HasBindingFlag (bindingFlags, BindingFlags.Public) ? DynamicallyAccessedMemberTypes.PublicNestedTypes : DynamicallyAccessedMemberTypes.None) | 1476 (HasBindingFlag (bindingFlags, BindingFlags.NonPublic) ? DynamicallyAccessedMemberTypes.NonPublicNestedTypes : DynamicallyAccessedMemberTypes.None) | 1477 (BindingFlagsAreUnsupported (bindingFlags) ? DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes : DynamicallyAccessedMemberTypes.None); 1479 internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesFromBindingFlagsForConstructors (BindingFlags? bindingFlags) => 1480 (HasBindingFlag (bindingFlags, BindingFlags.Public) ? DynamicallyAccessedMemberTypes.PublicConstructors : DynamicallyAccessedMemberTypes.None) | 1481 (HasBindingFlag (bindingFlags, BindingFlags.NonPublic) ? DynamicallyAccessedMemberTypes.NonPublicConstructors : DynamicallyAccessedMemberTypes.None) | 1482 (BindingFlagsAreUnsupported (bindingFlags) ? DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors : DynamicallyAccessedMemberTypes.None); 1484 internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesFromBindingFlagsForMethods (BindingFlags? bindingFlags) => 1485 (HasBindingFlag (bindingFlags, BindingFlags.Public) ? DynamicallyAccessedMemberTypes.PublicMethods : DynamicallyAccessedMemberTypes.None) | 1486 (HasBindingFlag (bindingFlags, BindingFlags.NonPublic) ? DynamicallyAccessedMemberTypes.NonPublicMethods : DynamicallyAccessedMemberTypes.None) | 1487 (BindingFlagsAreUnsupported (bindingFlags) ? DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods : DynamicallyAccessedMemberTypes.None); 1489 internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesFromBindingFlagsForFields (BindingFlags? bindingFlags) => 1490 (HasBindingFlag (bindingFlags, BindingFlags.Public) ? DynamicallyAccessedMemberTypes.PublicFields : DynamicallyAccessedMemberTypes.None) | 1491 (HasBindingFlag (bindingFlags, BindingFlags.NonPublic) ? DynamicallyAccessedMemberTypes.NonPublicFields : DynamicallyAccessedMemberTypes.None) | 1492 (BindingFlagsAreUnsupported (bindingFlags) ? DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields : DynamicallyAccessedMemberTypes.None); 1494 internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesFromBindingFlagsForProperties (BindingFlags? bindingFlags) => 1495 (HasBindingFlag (bindingFlags, BindingFlags.Public) ? DynamicallyAccessedMemberTypes.PublicProperties : DynamicallyAccessedMemberTypes.None) | 1496 (HasBindingFlag (bindingFlags, BindingFlags.NonPublic) ? DynamicallyAccessedMemberTypes.NonPublicProperties : DynamicallyAccessedMemberTypes.None) | 1497 (BindingFlagsAreUnsupported (bindingFlags) ? DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties : DynamicallyAccessedMemberTypes.None); 1499 internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesFromBindingFlagsForEvents (BindingFlags? bindingFlags) => 1500 (HasBindingFlag (bindingFlags, BindingFlags.Public) ? DynamicallyAccessedMemberTypes.PublicEvents : DynamicallyAccessedMemberTypes.None) | 1501 (HasBindingFlag (bindingFlags, BindingFlags.NonPublic) ? DynamicallyAccessedMemberTypes.NonPublicEvents : DynamicallyAccessedMemberTypes.None) | 1502 (BindingFlagsAreUnsupported (bindingFlags) ? DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents : DynamicallyAccessedMemberTypes.None); 1504 internal static DynamicallyAccessedMemberTypes GetDynamicallyAccessedMemberTypesFromBindingFlagsForMembers (BindingFlags? bindingFlags) =>
src\tools\illink\src\ILLink.Shared\TrimAnalysis\NullableValueWithDynamicallyAccessedMembers.cs (1)
31 public override DynamicallyAccessedMemberTypes DynamicallyAccessedMemberTypes => UnderlyingTypeValue.DynamicallyAccessedMemberTypes;
src\tools\illink\src\ILLink.Shared\TrimAnalysis\RequireDynamicallyAccessedMembersAction.cs (5)
23 if (targetValue.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.None) 27 if (targetValue.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.PublicParameterlessConstructor 31 } else if (targetValue.DynamicallyAccessedMemberTypes == DynamicallyAccessedMemberTypes.PublicFields 39 var availableMemberTypes = valueWithDynamicallyAccessedMembers.DynamicallyAccessedMemberTypes; 74 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 (1)
23 public override DynamicallyAccessedMemberTypes DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\FlowAnnotations.cs (26)
27 if (GetMethodReturnValueAnnotation (method) != DynamicallyAccessedMemberTypes.None) 31 if (GetMethodParameterAnnotation (param) != DynamicallyAccessedMemberTypes.None) 48 if (GetMethodReturnValueAnnotation (method) == DynamicallyAccessedMemberTypes.None) { 98 if (GetMethodParameterAnnotation (param) != DynamicallyAccessedMemberTypes.None) 107 return GetFieldAnnotation (field) != DynamicallyAccessedMemberTypes.None; 110 internal static DynamicallyAccessedMemberTypes GetFieldAnnotation (IFieldSymbol field) 113 return DynamicallyAccessedMemberTypes.None; 118 internal static DynamicallyAccessedMemberTypes GetTypeAnnotations (INamedTypeSymbol type) 120 DynamicallyAccessedMemberTypes typeAnnotation = type.GetDynamicallyAccessedMemberTypes (); 137 internal static DynamicallyAccessedMemberTypes GetMethodParameterAnnotation (ParameterProxy param) 141 return DynamicallyAccessedMemberTypes.None; 148 return DynamicallyAccessedMemberTypes.None; 150 var damt = parameter.GetDynamicallyAccessedMemberTypes (); 160 && damt == DynamicallyAccessedMemberTypes.None 170 public static DynamicallyAccessedMemberTypes GetMethodReturnValueAnnotation (IMethodSymbol method) 173 return DynamicallyAccessedMemberTypes.None; 175 var returnDamt = method.GetDynamicallyAccessedMemberTypesOnReturnType (); 180 if (method.MethodKind is MethodKind.PropertyGet && returnDamt == DynamicallyAccessedMemberTypes.None) { 189 public static DynamicallyAccessedMemberTypes GetTypeAnnotation(ITypeSymbol type) 191 var typeAnnotation = type.GetDynamicallyAccessedMemberTypes (); 214 internal partial MethodReturnValue GetMethodReturnValue (MethodProxy method, bool isNewObj, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 220 internal partial GenericParameterValue GetGenericParameterValue (GenericParameterProxy genericParameter, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 226 internal partial MethodParameterValue GetMethodThisParameterValue (MethodProxy method, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 238 var damt = GetMethodParameterAnnotation (param); 242 internal MethodParameterValue GetMethodParameterValue (MethodProxy method, ParameterIndex parameterIndex, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 248 internal partial MethodParameterValue GetMethodParameterValue (ParameterProxy param, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes)
TrimAnalysis\GenericArgumentDataFlow.cs (2)
46 if (genericParameterValue.DynamicallyAccessedMemberTypes != DynamicallyAccessedMemberTypes.None) { 102 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)
92 DynamicallyAccessedMemberTypes annotation = default; 96 annotation = DynamicallyAccessedMemberTypes.PublicFields; 124 AddReturnValue (FlowAnnotations.Instance.GetMethodReturnValue (calledMethod, _isNewObj, DynamicallyAccessedMemberTypes.PublicFields)); 126 var annotation = FlowAnnotations.GetTypeAnnotation (staticType);
TrimAnalysis\MethodParameterValue.cs (3)
14 public MethodParameterValue (IMethodSymbol methodSymbol, ParameterIndex parameterIndex, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 20 public MethodParameterValue (ParameterProxy parameter, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 27 public override DynamicallyAccessedMemberTypes DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\MethodReturnValue.cs (2)
20 public MethodReturnValue (IMethodSymbol methodSymbol, bool isNewObj, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) 30 public override DynamicallyAccessedMemberTypes DynamicallyAccessedMemberTypes { get; }
TrimAnalysis\ReflectionAccessAnalyzer.cs (4)
27 internal void GetReflectionAccessDiagnostics (Location location, ITypeSymbol typeSymbol, DynamicallyAccessedMemberTypes requiredMemberTypes, bool declaredOnly = false) 154 if (methodSymbol.IsVirtual && FlowAnnotations.GetMethodReturnValueAnnotation (methodSymbol) != DynamicallyAccessedMemberTypes.None) { 158 if (FlowAnnotations.GetMethodParameterAnnotation (parameter) != DynamicallyAccessedMemberTypes.None) { 194 if (FlowAnnotations.GetFieldAnnotation (fieldSymbol) != DynamicallyAccessedMemberTypes.None) {
TrimAnalysis\RequireDynamicallyAccessedMembersAction.cs (1)
37 private partial void MarkTypeForDynamicallyAccessedMembers (in TypeProxy type, DynamicallyAccessedMemberTypes dynamicallyAccessedMemberTypes) =>