389 references to DependencyKind
illink (389)
Linker.Dataflow\DynamicallyAccessedMembersTypeHierarchy.cs (3)
237
_reflectionMarker.MarkTypeForDynamicallyAccessedMembers(origin, baseType, annotationToApplyToBase,
DependencyKind
.DynamicallyAccessedMemberOnType, declaredOnly: false);
261
_reflectionMarker.MarkTypeForDynamicallyAccessedMembers(origin, interfaceType, annotationToApplyToInterfaces,
DependencyKind
.DynamicallyAccessedMemberOnType, declaredOnly: false);
269
_reflectionMarker.MarkTypeForDynamicallyAccessedMembers(origin, type, annotation,
DependencyKind
.DynamicallyAccessedMemberOnType, declaredOnly: true);
Linker.Dataflow\ReflectionMarker.cs (16)
27
internal void MarkTypeForDynamicallyAccessedMembers(in MessageOrigin origin, TypeReference type, DynamicallyAccessedMemberTypes requiredMemberTypes,
DependencyKind
dependencyKind, bool declaredOnly = false)
101
_markStep.MarkTypeVisibleToReflection(typeReference, new DependencyInfo(
DependencyKind
.AccessedViaReflection, origin.Provider), origin);
104
Context.MarkingHelpers.MarkMatchingExportedType(typeResolutionRecord.ResolvedType, typeResolutionRecord.ReferringAssembly, new DependencyInfo(
DependencyKind
.DynamicallyAccessedMember, typeReference), origin);
109
internal void MarkType(in MessageOrigin origin, TypeReference typeRef,
DependencyKind
dependencyKind =
DependencyKind
.AccessedViaReflection)
120
internal void MarkMethod(in MessageOrigin origin, MethodReference methodRef,
DependencyKind
dependencyKind =
DependencyKind
.AccessedViaReflection)
131
void MarkField(in MessageOrigin origin, FieldDefinition field,
DependencyKind
dependencyKind =
DependencyKind
.AccessedViaReflection)
139
internal void MarkProperty(in MessageOrigin origin, PropertyDefinition property,
DependencyKind
dependencyKind =
DependencyKind
.AccessedViaReflection)
147
void MarkEvent(in MessageOrigin origin, EventDefinition @event,
DependencyKind
dependencyKind =
DependencyKind
.AccessedViaReflection)
155
void MarkInterfaceImplementation(in MessageOrigin origin, InterfaceImplementation interfaceImplementation,
DependencyKind
dependencyKind =
DependencyKind
.AccessedViaReflection)
219
_markStep.MarkStaticConstructorVisibleToReflection(type, new DependencyInfo(
DependencyKind
.AccessedViaReflection, origin.Provider), origin);
Linker.Dataflow\RequireDynamicallyAccessedMembersAction.cs (1)
47
_reflectionMarker.MarkTypeForDynamicallyAccessedMembers(_diagnosticContext.Origin, type.Type, dynamicallyAccessedMemberTypes,
DependencyKind
.DynamicallyAccessedMember);
Linker.Steps\DescriptorMarker.cs (8)
63
_context.MarkingHelpers.MarkExportedType(exportedType, assembly.MainModule, new DependencyInfo(
DependencyKind
.XmlDescriptor, assembly.MainModule), GetMessageOriginForPosition(nav));
99
_context.Annotations.Mark(type, new DependencyInfo(
DependencyKind
.XmlDescriptor, _xmlDocumentLocation), GetMessageOriginForPosition(nav));
111
_context.MarkingHelpers.MarkExportedType(exported, assembly.MainModule, new DependencyInfo(
DependencyKind
.XmlDescriptor, _xmlDocumentLocation), GetMessageOriginForPosition(nav));
121
_context.MarkingHelpers.MarkExportedType(currentType, assembly.MainModule, new DependencyInfo(
DependencyKind
.DeclaringType, currentType), GetMessageOriginForPosition(nav));
157
_context.Annotations.Mark(type, new DependencyInfo(
DependencyKind
.XmlDescriptor, _xmlDocumentLocation), GetMessageOriginForPosition(nav));
165
_context.Annotations.Mark(parent, new DependencyInfo(
DependencyKind
.DeclaringType, currentType), GetMessageOriginForPosition(nav));
187
_context.Annotations.Mark(field, new DependencyInfo(
DependencyKind
.XmlDescriptor, _xmlDocumentLocation), GetMessageOriginForPosition(nav));
204
_context.Annotations.Mark(method, new DependencyInfo(
DependencyKind
.XmlDescriptor, _xmlDocumentLocation), GetMessageOriginForPosition(nav));
Linker.Steps\DiscoverCustomOperatorsHandler.cs (1)
90
Context.Annotations.Mark(method, new DependencyInfo(
DependencyKind
.PreservedOperator, method.DeclaringType), new MessageOrigin(method.DeclaringType));
Linker.Steps\MarkExportedTypesTargetStep.cs (1)
37
context.Annotations.Mark(type, new DependencyInfo(
DependencyKind
.ExportedType, exportedType), new MessageOrigin(assembly));
Linker.Steps\MarkStep.cs (316)
104
static readonly
DependencyKind
[] _entireTypeReasons = new
DependencyKind
[] {
105
DependencyKind
.AccessedViaReflection,
106
DependencyKind
.BaseType,
107
DependencyKind
.PreservedDependency,
108
DependencyKind
.NestedType,
109
DependencyKind
.TypeInAssembly,
110
DependencyKind
.Unspecified,
113
static readonly
DependencyKind
[] _fieldReasons = new
DependencyKind
[] {
114
DependencyKind
.Unspecified,
115
DependencyKind
.AccessedViaReflection,
116
DependencyKind
.AlreadyMarked,
117
DependencyKind
.Custom,
118
DependencyKind
.CustomAttributeField,
119
DependencyKind
.DynamicallyAccessedMember,
120
DependencyKind
.DynamicallyAccessedMemberOnType,
121
DependencyKind
.EventSourceProviderField,
122
DependencyKind
.FieldAccess,
123
DependencyKind
.FieldOnGenericInstance,
124
DependencyKind
.InteropMethodDependency,
125
DependencyKind
.Ldtoken,
126
DependencyKind
.MemberOfType,
127
DependencyKind
.DynamicDependency,
128
DependencyKind
.ReferencedBySpecialAttribute,
129
DependencyKind
.TypePreserve,
130
DependencyKind
.XmlDescriptor,
131
DependencyKind
.UnsafeAccessorTarget,
134
static readonly
DependencyKind
[] _typeReasons = new
DependencyKind
[] {
135
DependencyKind
.Unspecified,
136
DependencyKind
.AccessedViaReflection,
137
DependencyKind
.AlreadyMarked,
138
DependencyKind
.AttributeType,
139
DependencyKind
.BaseType,
140
DependencyKind
.CatchType,
141
DependencyKind
.Custom,
142
DependencyKind
.CustomAttributeArgumentType,
143
DependencyKind
.CustomAttributeArgumentValue,
144
DependencyKind
.DeclaringType,
145
DependencyKind
.DeclaringTypeOfCalledMethod,
146
DependencyKind
.DynamicallyAccessedMember,
147
DependencyKind
.DynamicallyAccessedMemberOnType,
148
DependencyKind
.DynamicDependency,
149
DependencyKind
.ElementType,
150
DependencyKind
.FieldType,
151
DependencyKind
.GenericArgumentType,
152
DependencyKind
.GenericParameterConstraintType,
153
DependencyKind
.InterfaceImplementationInterfaceType,
154
DependencyKind
.Ldtoken,
155
DependencyKind
.ModifierType,
156
DependencyKind
.NestedType,
157
DependencyKind
.InstructionTypeRef,
158
DependencyKind
.ParameterType,
159
DependencyKind
.ReferencedBySpecialAttribute,
160
DependencyKind
.ReturnType,
161
DependencyKind
.TypeInAssembly,
162
DependencyKind
.UnreachableBodyRequirement,
163
DependencyKind
.VariableType,
164
DependencyKind
.ParameterMarshalSpec,
165
DependencyKind
.FieldMarshalSpec,
166
DependencyKind
.ReturnTypeMarshalSpec,
167
DependencyKind
.DynamicInterfaceCastableImplementation,
168
DependencyKind
.XmlDescriptor,
171
static readonly
DependencyKind
[] _methodReasons = new
DependencyKind
[] {
172
DependencyKind
.Unspecified,
173
DependencyKind
.AccessedViaReflection,
174
DependencyKind
.AlreadyMarked,
175
DependencyKind
.AttributeConstructor,
176
DependencyKind
.AttributeProperty,
177
DependencyKind
.BaseDefaultCtorForStubbedMethod,
178
DependencyKind
.BaseMethod,
179
DependencyKind
.CctorForType,
180
DependencyKind
.CctorForField,
181
DependencyKind
.Custom,
182
DependencyKind
.DefaultCtorForNewConstrainedGenericArgument,
183
DependencyKind
.DirectCall,
184
DependencyKind
.DynamicallyAccessedMember,
185
DependencyKind
.DynamicallyAccessedMemberOnType,
186
DependencyKind
.DynamicDependency,
187
DependencyKind
.ElementMethod,
188
DependencyKind
.EventMethod,
189
DependencyKind
.EventOfEventMethod,
190
DependencyKind
.InteropMethodDependency,
191
DependencyKind
.KeptForSpecialAttribute,
192
DependencyKind
.Ldftn,
193
DependencyKind
.Ldtoken,
194
DependencyKind
.Ldvirtftn,
195
DependencyKind
.MemberOfType,
196
DependencyKind
.MethodForInstantiatedType,
197
DependencyKind
.MethodForSpecialType,
198
DependencyKind
.MethodImplOverride,
199
DependencyKind
.MethodOnGenericInstance,
200
DependencyKind
.Newobj,
201
DependencyKind
.Override,
202
DependencyKind
.OverrideOnInstantiatedType,
203
DependencyKind
.DynamicDependency,
204
DependencyKind
.PreservedMethod,
205
DependencyKind
.ReferencedBySpecialAttribute,
206
DependencyKind
.SerializationMethodForType,
207
DependencyKind
.TriggersCctorForCalledMethod,
208
DependencyKind
.TriggersCctorThroughFieldAccess,
209
DependencyKind
.TypePreserve,
210
DependencyKind
.UnreachableBodyRequirement,
211
DependencyKind
.VirtualCall,
212
DependencyKind
.VirtualNeededDueToPreservedScope,
213
DependencyKind
.ParameterMarshalSpec,
214
DependencyKind
.FieldMarshalSpec,
215
DependencyKind
.ReturnTypeMarshalSpec,
216
DependencyKind
.XmlDescriptor,
217
DependencyKind
.UnsafeAccessorTarget,
340
MarkEntireType(nested, new DependencyInfo(
DependencyKind
.NestedType, type), origin);
353
MarkFieldsVisibleToReflection(type, new DependencyInfo(
DependencyKind
.MemberOfType, type), origin);
354
MarkMethodsVisibleToReflection(type, new DependencyInfo(
DependencyKind
.MemberOfType, type), origin);
360
MarkPropertyVisibleToReflection(property, new DependencyInfo(
DependencyKind
.MemberOfType, type), origin);
368
MarkEventVisibleToReflection(ev, new DependencyInfo(
DependencyKind
.MemberOfType, type), origin);
430
MarkAssembly(assembly, new DependencyInfo(
DependencyKind
.AssemblyAction, null), emptyOrigin);
644
MarkType(type, new DependencyInfo(
DependencyKind
.DynamicInterfaceCastableImplementation, iface.InterfaceType), new MessageOrigin(Context.TryResolve(iface.InterfaceType)));
687
MarkMethod(dimInfo.Override, new DependencyInfo(
DependencyKind
.Override, dimInfo.Base), origin);
697
MarkMethod(ov.Override, new DependencyInfo(
DependencyKind
.Override, ov.Base), origin);
742
MarkMethod(overrideInformation.Override, new DependencyInfo(
DependencyKind
.OverrideOnInstantiatedType, overrideInformation.Override.DeclaringType), origin);
748
MarkMethod(overrideInformation.Override, new DependencyInfo(
DependencyKind
.Override, overrideInformation.Base), origin);
949
MarkingHelpers.MarkMatchingExportedType(type, assembly, new DependencyInfo(
DependencyKind
.DynamicDependency, type), origin);
991
MarkMembersVisibleToReflection(members, new DependencyInfo(
DependencyKind
.DynamicDependency, context), origin);
1062
MarkingHelpers.MarkMatchingExportedType(td, assemblyDef, new DependencyInfo(
DependencyKind
.PreservedDependency, ca), origin);
1090
MarkEntireType(td, new DependencyInfo(
DependencyKind
.PreservedDependency, ca), origin);
1096
if (MarkDependencyMethod(td, member, signature, new DependencyInfo(
DependencyKind
.PreservedDependency, ca), origin))
1099
if (MarkNamedField(td, member, new DependencyInfo(
DependencyKind
.PreservedDependency, ca), origin))
1173
MarkMethod(ca.Constructor, new DependencyInfo(
DependencyKind
.AttributeConstructor, ca), origin);
1297
MarkType(security_type, new DependencyInfo(
DependencyKind
.AttributeType, sa), origin);
1308
MarkCustomAttributeProperty(named_argument, attribute, ca, new DependencyInfo(
DependencyKind
.AttributeProperty, ca), origin);
1354
MarkField(field, new DependencyInfo(
DependencyKind
.CustomAttributeField, ca), origin);
1419
MarkType(et, new DependencyInfo(
DependencyKind
.CustomAttributeArgumentType, ca), origin);
1436
MarkType(argument.Type, new DependencyInfo(
DependencyKind
.CustomAttributeArgumentType, ca), origin);
1437
MarkType((TypeReference)argument.Value, new DependencyInfo(
DependencyKind
.CustomAttributeArgumentValue, ca), origin);
1442
MarkType(boxed_value.Type, new DependencyInfo(
DependencyKind
.CustomAttributeArgumentType, ca), origin);
1493
MarkSecurityDeclarations(assembly, new DependencyInfo(
DependencyKind
.AssemblyOrModuleAttribute, assembly), assemblyOrigin);
1505
MarkCustomAttributes(assembly, new DependencyInfo(
DependencyKind
.AssemblyOrModuleAttribute, assembly), origin);
1506
MarkCustomAttributes(module, new DependencyInfo(
DependencyKind
.AssemblyOrModuleAttribute, module), origin);
1509
MarkEntireType(type, new DependencyInfo(
DependencyKind
.TypeInAssembly, assembly), origin);
1538
markingHelpers.MarkExportedType(exportedType, assembly.MainModule, new DependencyInfo(
DependencyKind
.ExportedType, assembly), new MessageOrigin(assembly));
1574
MarkType(moduleType, new DependencyInfo(
DependencyKind
.TypeInAssembly, assembly), origin);
1616
MarkCustomAttribute(customAttribute, new DependencyInfo(
DependencyKind
.AssemblyOrModuleAttribute, assemblyLevelAttribute.Provider), assemblyOrigin);
1687
Debug.Assert(reason.Kind ==
DependencyKind
.FieldAccess || reason.Kind ==
DependencyKind
.Ldtoken);
1690
MarkType(reference.DeclaringType, new DependencyInfo(
DependencyKind
.DeclaringType, reference), origin);
1693
reason = new DependencyInfo(
DependencyKind
.FieldOnGenericInstance, reference);
1706
void ReportWarningsForReflectionAccess(in MessageOrigin origin, MethodDefinition method,
DependencyKind
dependencyKind)
1717
case
DependencyKind
.AttributeProperty:
1724
case
DependencyKind
.Ldftn:
1725
case
DependencyKind
.Ldvirtftn:
1726
case
DependencyKind
.Ldtoken:
1734
case
DependencyKind
.AttributeConstructor:
1765
case
DependencyKind
.AttributeConstructor:
1766
case
DependencyKind
.AttributeProperty:
1827
if (reason.Kind ==
DependencyKind
.AlreadyMarked)
1842
MarkType(field.DeclaringType, new DependencyInfo(
DependencyKind
.DeclaringType, field), origin);
1845
MarkType(field.FieldType, new DependencyInfo(
DependencyKind
.FieldType, field), fieldOrigin);
1846
MarkCustomAttributes(field, new DependencyInfo(
DependencyKind
.CustomAttribute, field), fieldOrigin);
1847
MarkMarshalSpec(field, new DependencyInfo(
DependencyKind
.FieldMarshalSpec, field), fieldOrigin);
1876
DependencyKind
.FieldAccess => new DependencyInfo(
DependencyKind
.TriggersCctorThroughFieldAccess, reason.Source),
1877
_ => new DependencyInfo(
DependencyKind
.CctorForField, field)
1883
void ProcessAnalysisAnnotationsForField(FieldDefinition field,
DependencyKind
dependencyKind, in MessageOrigin origin)
1888
case
DependencyKind
.AlreadyMarked:
1889
case
DependencyKind
.TypePreserve:
1890
case
DependencyKind
.PreservedMethod:
1891
case
DependencyKind
.MemberOfType:
1894
case
DependencyKind
.DynamicallyAccessedMemberOnType:
1910
case
DependencyKind
.AccessedViaReflection:
1911
case
DependencyKind
.DynamicDependency:
1912
case
DependencyKind
.DynamicallyAccessedMember:
1913
case
DependencyKind
.InteropMethodDependency:
1914
case
DependencyKind
.Ldtoken:
1915
case
DependencyKind
.UnsafeAccessorTarget:
1934
if (reason.Kind ==
DependencyKind
.AlreadyMarked)
1944
MarkAssembly(module.Assembly, new DependencyInfo(
DependencyKind
.AssemblyOfModule, module), origin);
1957
MarkDefaultConstructor(type, new DependencyInfo(
DependencyKind
.SerializationMethodForType, type), origin);
1958
MarkMethodsIf(type.Methods, IsSpecialSerializationConstructor, new DependencyInfo(
DependencyKind
.SerializationMethodForType, type), origin);
1961
MarkMethodsIf(type.Methods, HasOnSerializeOrDeserializeAttribute, new DependencyInfo(
DependencyKind
.SerializationMethodForType, type), origin);
2114
case
DependencyKind
.AlreadyMarked:
2123
if (type.HasMethods && ShouldMarkTypeStaticConstructor(type) && reason.Kind ==
DependencyKind
.DeclaringTypeOfCalledMethod)
2124
MarkStaticConstructor(type, new DependencyInfo(
DependencyKind
.TriggersCctorForCalledMethod, reason.Source), origin);
2134
reason.Kind is not
DependencyKind
.TypeInAssembly)
2146
MarkModule(module, new DependencyInfo(
DependencyKind
.ScopeOfType, type), origin);
2153
MarkType(type.BaseType, new DependencyInfo(
DependencyKind
.BaseType, type), typeOrigin);
2162
MarkType(type.DeclaringType, new DependencyInfo(
DependencyKind
.DeclaringType, type), typeOrigin);
2163
MarkCustomAttributes(type, new DependencyInfo(
DependencyKind
.CustomAttribute, type), typeOrigin);
2164
MarkSecurityDeclarations(type, new DependencyInfo(
DependencyKind
.CustomAttribute, type), typeOrigin);
2172
MarkMethodIf(type.Methods, static m => m.Name == "Finalize", new DependencyInfo(
DependencyKind
.MethodForSpecialType, type), typeOrigin);
2233
MarkMethod(method, new DependencyInfo(
DependencyKind
.VirtualNeededDueToPreservedScope, type), typeOrigin);
2236
if (ShouldMarkTypeStaticConstructor(type) && reason.Kind !=
DependencyKind
.TriggersCctorForCalledMethod)
2238
MarkStaticConstructor(type, new DependencyInfo(
DependencyKind
.CctorForType, type), typeOrigin);
2332
if (MarkMethodsIf(type.Methods, MethodDefinitionExtensions.IsPublicInstancePropertyMethod, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, type), origin))
2333
Tracer.AddDirectDependency(attribute, new DependencyInfo(
DependencyKind
.CustomAttribute, type), marked: false);
2359
Tracer.AddDirectDependency(attribute, new DependencyInfo(
DependencyKind
.CustomAttribute, type), marked: false);
2360
MarkNamedMethod(type, name, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2376
Tracer.AddDirectDependency(attribute, new DependencyInfo(
DependencyKind
.CustomAttribute, type), marked: false);
2423
MarkMethodVisibleToReflection(method, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2432
MarkFieldVisibleToReflection(field, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2439
MarkPropertyVisibleToReflection(property, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2448
MarkMethodsVisibleToReflection(type, new DependencyInfo(
DependencyKind
.KeptForSpecialAttribute, attribute), origin);
2449
MarkFieldsVisibleToReflection(type, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2477
Tracer.AddDirectDependency(attribute, new DependencyInfo(
DependencyKind
.CustomAttribute, type), marked: false);
2478
MarkType(proxyTypeReference, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2482
MarkMethodsVisibleToReflection(proxyType, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2483
MarkFieldsVisibleToReflection(proxyType, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2523
MarkNamedField(method.DeclaringType, member_name, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2524
MarkNamedProperty(method.DeclaringType, member_name, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2608
MarkCustomAttributes(parameter, new DependencyInfo(
DependencyKind
.GenericParameterCustomAttribute, parameter.Owner), origin);
2614
MarkCustomAttributes(constraint, new DependencyInfo(
DependencyKind
.GenericParameterConstraintCustomAttribute, parameter.Owner), origin);
2615
MarkType(constraint.ConstraintType, new DependencyInfo(
DependencyKind
.GenericParameterConstraintType, parameter.Owner), origin);
2860
MarkStaticFields(nestedType, new DependencyInfo(
DependencyKind
.EventSourceProviderField, td), origin);
2866
MarkMethodsIf(type.Methods, m => m.Name == ".ctor" || m.Name == "Invoke", new DependencyInfo(
DependencyKind
.MethodForSpecialType, type), origin);
2885
MarkType(fnptr.ReturnType, new DependencyInfo(
DependencyKind
.ReturnType, fnptr), origin);
2892
(type, reason) = (specification.ElementType, new DependencyInfo(
DependencyKind
.ElementType, specification));
2905
MarkType(fnptr.Parameters[i].ParameterType, new DependencyInfo(
DependencyKind
.ParameterType, fnptr), origin);
2911
MarkType(mod.ModifierType, new DependencyInfo(
DependencyKind
.ModifierType, mod), origin);
2926
var argumentTypeDef = MarkType(argument, new DependencyInfo(
DependencyKind
.GenericArgumentType, instance), origin);
2933
MarkDefaultConstructor(argumentTypeDef, new DependencyInfo(
DependencyKind
.DefaultCtorForNewConstrainedGenericArgument, instance), origin);
2957
var di = new DependencyInfo(
DependencyKind
.TypePreserve, type);
2979
var di = new DependencyInfo(
DependencyKind
.TypePreserve, type);
3055
MarkMethodCollection(list, new DependencyInfo(
DependencyKind
.PreservedMethod, type), origin);
3065
MarkMethodCollection(list, new DependencyInfo(
DependencyKind
.PreservedMethod, method), origin);
3135
MarkType(reference.DeclaringType, new DependencyInfo(
DependencyKind
.DeclaringType, reference), origin);
3148
MarkType(reference.DeclaringType, new DependencyInfo(
DependencyKind
.DeclaringType, reference), origin);
3150
reason = new DependencyInfo(
DependencyKind
.MethodOnGenericInstance, reference);
3178
case
DependencyKind
.AlreadyMarked:
3187
reason.Kind ==
DependencyKind
.DirectCall ||
3188
reason.Kind ==
DependencyKind
.VirtualCall ||
3189
reason.Kind ==
DependencyKind
.Newobj;
3197
MarkType(method.DeclaringType, new DependencyInfo(
DependencyKind
.DeclaringTypeOfCalledMethod, method), new MessageOrigin(reason.Source as IMemberDefinition ?? method));
3201
&& reason.Kind !=
DependencyKind
.EventMethod)
3203
var
kind = PropagateDependencyKindToAccessors(reason.Kind,
DependencyKind
.EventOfEventMethod);
3230
void ProcessAnalysisAnnotationsForMethod(MethodDefinition method,
DependencyKind
dependencyKind, in MessageOrigin origin)
3239
case
DependencyKind
.DirectCall:
3240
case
DependencyKind
.VirtualCall:
3241
case
DependencyKind
.Newobj:
3244
case
DependencyKind
.MethodForSpecialType:
3247
case
DependencyKind
.AlreadyMarked:
3248
case
DependencyKind
.TypePreserve:
3249
case
DependencyKind
.PreservedMethod:
3256
case
DependencyKind
.BaseMethod:
3257
case
DependencyKind
.MethodImplOverride:
3258
case
DependencyKind
.Override:
3259
case
DependencyKind
.OverrideOnInstantiatedType:
3265
case
DependencyKind
.MethodForInstantiatedType:
3266
case
DependencyKind
.VirtualNeededDueToPreservedScope:
3274
case
DependencyKind
.MemberOfType:
3275
case
DependencyKind
.EventMethod:
3279
case
DependencyKind
.CctorForType:
3280
case
DependencyKind
.CctorForField:
3281
case
DependencyKind
.TriggersCctorThroughFieldAccess:
3282
case
DependencyKind
.TriggersCctorForCalledMethod:
3285
case
DependencyKind
.UnreachableBodyRequirement:
3287
case
DependencyKind
.Custom:
3288
case
DependencyKind
.Unspecified:
3292
case
DependencyKind
.KeptForSpecialAttribute:
3295
case
DependencyKind
.DynamicallyAccessedMemberOnType:
3327
(method, reason) = (specification.ElementMethod, new DependencyInfo(
DependencyKind
.ElementMethod, specification));
3343
reason.Kind ==
DependencyKind
.DirectCall ||
3344
reason.Kind ==
DependencyKind
.VirtualCall ||
3345
reason.Kind ==
DependencyKind
.Newobj;
3351
MarkType(method.DeclaringType, new DependencyInfo(
DependencyKind
.DeclaringType, method), methodOrigin);
3352
MarkCustomAttributes(method, new DependencyInfo(
DependencyKind
.CustomAttribute, method), methodOrigin);
3353
MarkSecurityDeclarations(method, new DependencyInfo(
DependencyKind
.CustomAttribute, method), methodOrigin);
3360
Tracer.AddDirectDependency(method.DeclaringType, new DependencyInfo(
DependencyKind
.InstantiatedByCtor, method), marked: false);
3373
MarkProperty(property, new DependencyInfo(PropagateDependencyKindToAccessors(reason.Kind,
DependencyKind
.PropertyOfPropertyMethod), method));
3380
MarkType(pd.ParameterType, new DependencyInfo(
DependencyKind
.ParameterType, method), methodOrigin);
3381
MarkCustomAttributes(pd, new DependencyInfo(
DependencyKind
.ParameterAttribute, method), methodOrigin);
3382
MarkMarshalSpec(pd, new DependencyInfo(
DependencyKind
.ParameterMarshalSpec, method), methodOrigin);
3405
MarkMethod(@base, new DependencyInfo(
DependencyKind
.MethodImplOverride, method), methodOrigin);
3428
MarkType(method.ReturnType, new DependencyInfo(
DependencyKind
.ReturnType, method), methodOrigin);
3429
MarkCustomAttributes(method.MethodReturnType, new DependencyInfo(
DependencyKind
.ReturnTypeAttribute, method), methodOrigin);
3430
MarkMarshalSpec(method.MethodReturnType, new DependencyInfo(
DependencyKind
.ReturnTypeMarshalSpec, method), methodOrigin);
3456
MarkMethodIf(declaringType.Methods, m => m.Name == methodPair, new DependencyInfo(
DependencyKind
.MethodForSpecialType, declaringType), methodOrigin);
3470
static
DependencyKind
PropagateDependencyKindToAccessors(
DependencyKind
parentDependencyKind,
DependencyKind
kind)
3475
case
DependencyKind
.AlreadyMarked:
3476
case
DependencyKind
.TypePreserve:
3477
case
DependencyKind
.PreservedMethod:
3478
case
DependencyKind
.DynamicallyAccessedMemberOnType:
3493
MarkFields(type, includeStatic: type.IsEnum, reason: new DependencyInfo(
DependencyKind
.MemberOfType, type), origin);
3566
if (!MarkDefaultConstructor(baseType, new DependencyInfo(
DependencyKind
.BaseDefaultCtorForStubbedMethod, method), origin))
3572
MarkAndCacheConvertToThrowExceptionCtor(new DependencyInfo(
DependencyKind
.UnreachableBodyRequirement, method), origin);
3615
var ctor = MarkMethodIf(disablePrivateReflection.Methods, MethodDefinitionExtensions.IsDefaultConstructor, new DependencyInfo(
DependencyKind
.DisablePrivateReflectionRequirement, disablePrivateReflection), emptyOrigin);
3640
MarkMethod(ov.Base, new DependencyInfo(
DependencyKind
.BaseMethod, method), origin);
3650
Annotations.MarkProcessed(pii.Module, new DependencyInfo(
DependencyKind
.InteropMethodDependency, method));
3670
MarkDefaultConstructor(returnTypeDefinition, new DependencyInfo(
DependencyKind
.InteropMethodDependency, method), origin);
3671
MarkFields(returnTypeDefinition, includeStaticFields, new DependencyInfo(
DependencyKind
.InteropMethodDependency, method), origin);
3678
MarkFields(method.DeclaringType, includeStaticFields, new DependencyInfo(
DependencyKind
.InteropMethodDependency, method), origin);
3695
MarkFields(paramTypeDefinition, includeStaticFields, new DependencyInfo(
DependencyKind
.InteropMethodDependency, method), origin);
3698
MarkDefaultConstructor(paramTypeDefinition, new DependencyInfo(
DependencyKind
.InteropMethodDependency, method), origin);
3748
MarkCustomAttributes(prop, new DependencyInfo(
DependencyKind
.CustomAttribute, prop), propertyOrigin);
3755
DependencyKind
dependencyKind =
DependencyKind
.EventMethod;
3765
MarkCustomAttributes(evt, new DependencyInfo(
DependencyKind
.CustomAttribute, evt), eventOrigin);
3783
MarkAndCacheConvertToThrowExceptionCtor(new DependencyInfo(
DependencyKind
.UnreachableBodyRequirement, body.Method), origin);
3875
MarkType(var.VariableType, new DependencyInfo(
DependencyKind
.VariableType, methodIL.Method), origin);
3879
MarkType(eh.CatchType, new DependencyInfo(
DependencyKind
.CatchType, methodIL.Method), origin);
3959
MarkField((FieldReference)instruction.Operand, new DependencyInfo(
DependencyKind
.FieldAccess, method), origin);
3964
(
DependencyKind
dependencyKind, bool markForReflectionAccess) = instruction.OpCode.Code switch
3966
Code.Jmp => (
DependencyKind
.DirectCall, false),
3967
Code.Call => (
DependencyKind
.DirectCall, false),
3968
Code.Callvirt => (
DependencyKind
.VirtualCall, false),
3969
Code.Newobj => (
DependencyKind
.Newobj, false),
3970
Code.Ldvirtftn => (
DependencyKind
.Ldvirtftn, true),
3971
Code.Ldftn => (
DependencyKind
.Ldftn, true),
3996
var reason = new DependencyInfo(
DependencyKind
.Ldtoken, method);
4056
MarkType(operand, new DependencyInfo(
DependencyKind
.InstructionTypeRef, method), origin);
4073
Annotations.MarkProcessed(iface, reason ?? new DependencyInfo(
DependencyKind
.InterfaceImplementationOnType, origin.Provider));
4077
MarkCustomAttributes(iface, new DependencyInfo(
DependencyKind
.CustomAttribute, iface), origin);
4079
MarkType(iface.InterfaceType, reason ?? new DependencyInfo(
DependencyKind
.InterfaceImplementationInterfaceType, iface), origin);
Linker.Steps\ProcessReferencesStep.cs (1)
50
Annotations.Mark(assembly.MainModule, new DependencyInfo(
DependencyKind
.AssemblyAction, assembly), new MessageOrigin(assembly));
Linker.Steps\ReflectionBlockedStep.cs (1)
83
Annotations.Mark(ca, new DependencyInfo(
DependencyKind
.DisablePrivateReflection, ca));
Linker.Steps\RootAssemblyInputStep.cs (5)
27
var di = new DependencyInfo(
DependencyKind
.RootAssembly, assembly);
145
Annotations.Mark(type, new DependencyInfo(
DependencyKind
.RootAssembly, type.Module.Assembly), new MessageOrigin(type.Module.Assembly));
162
Annotations.Mark(type, new DependencyInfo(
DependencyKind
.RootAssembly, type.Module.Assembly), new MessageOrigin(type.Module.Assembly));
176
var di = new DependencyInfo(
DependencyKind
.RootAssembly, assembly);
199
Context.Annotations.Mark(attribute, new DependencyInfo(
DependencyKind
.RootAssembly, assembly));
Linker.Steps\UnsafeAccessorMarker.cs (5)
97
_context.MarkingHelpers.MarkMatchingExportedType(typeResolutionRecord.ResolvedType, typeResolutionRecord.ReferringAssembly, new DependencyInfo(
DependencyKind
.AccessedViaReflection, method), new MessageOrigin(method));
114
_context.MarkingHelpers.MarkMatchingExportedType(typeResolutionRecord.ResolvedType, typeResolutionRecord.ReferringAssembly, new DependencyInfo(
DependencyKind
.AccessedViaReflection, method), new MessageOrigin(method));
164
_markStep.MarkMethodVisibleToReflection(targetMethod, new DependencyInfo(
DependencyKind
.UnsafeAccessorTarget, method), new MessageOrigin(method));
189
_markStep.MarkMethodVisibleToReflection(targetMethod, new DependencyInfo(
DependencyKind
.UnsafeAccessorTarget, method), new MessageOrigin(method));
217
_markStep.MarkFieldVisibleToReflection(targetField, new DependencyInfo(
DependencyKind
.UnsafeAccessorTarget, method), new MessageOrigin(method));
Linker\Annotations.cs (3)
163
Debug.Assert(!(reason.Kind ==
DependencyKind
.AlreadyMarked));
177
Debug.Assert(!(reason.Kind ==
DependencyKind
.AlreadyMarked));
506
Mark(method, new DependencyInfo(
DependencyKind
.PreservedMethod, definition), new MessageOrigin(definition));
Linker\DependencyInfo.cs (5)
155
public
DependencyKind
Kind { get; }
157
public DependencyInfo(
DependencyKind
kind, object? source) => (Kind, Source) = (kind, source);
158
public static readonly DependencyInfo Unspecified = new DependencyInfo(
DependencyKind
.Unspecified, null);
159
public static readonly DependencyInfo AlreadyMarked = new DependencyInfo(
DependencyKind
.AlreadyMarked, null);
160
public static readonly DependencyInfo DisablePrivateReflectionRequirement = new DependencyInfo(
DependencyKind
.DisablePrivateReflectionRequirement, null);
Linker\DgmlDependencyRecorder.cs (1)
118
if (reason.Kind ==
DependencyKind
.Unspecified)
Linker\MarkingHelpers.cs (1)
45
MarkExportedType(exportedType, assembly.MainModule, new DependencyInfo(
DependencyKind
.ExportedType, typeReference), origin);
Linker\SerializationMarker.cs (12)
87
static
DependencyKind
ToDependencyKind(SerializerKind serializerKind) => serializerKind switch
89
SerializerKind.DataContractSerializer =>
DependencyKind
.DataContractSerialized,
90
SerializerKind.XmlSerializer =>
DependencyKind
.XmlSerialized,
188
MarkRecursiveMembersInternal(argType, new DependencyInfo(
DependencyKind
.GenericArgumentType, typeRef));
191
typeReason = new DependencyInfo(
DependencyKind
.ElementType, typeRef);
209
MarkRecursiveMembersInternal(type.BaseType, new DependencyInfo(
DependencyKind
.SerializedRecursiveType, type));
219
MarkRecursiveMembersInternal(field.FieldType, new DependencyInfo(
DependencyKind
.SerializedRecursiveType, type));
220
_context.Annotations.Mark(field, new DependencyInfo(
DependencyKind
.SerializedMember, type), new MessageOrigin(type));
235
MarkRecursiveMembersInternal(property.PropertyType, new DependencyInfo(
DependencyKind
.SerializedRecursiveType, type));
237
_context.Annotations.Mark(get, new DependencyInfo(
DependencyKind
.SerializedMember, type), new MessageOrigin(type));
239
_context.Annotations.Mark(set, new DependencyInfo(
DependencyKind
.SerializedMember, type), new MessageOrigin(type));
252
_context.Annotations.Mark(method, new DependencyInfo(
DependencyKind
.SerializedMember, type), new MessageOrigin(type));
Linker\TypeMapHandler.cs (8)
70
MarkTypeMapAttribute(entry, new DependencyInfo(
DependencyKind
.TypeMapEntry, callingMethod));
77
var info = new DependencyInfo(
DependencyKind
.TypeMapAssemblyTarget, callingMethod);
91
MarkTypeMapAttribute(entry, new DependencyInfo(
DependencyKind
.TypeMapEntry, callingMethod));
98
var info = new DependencyInfo(
DependencyKind
.TypeMapAssemblyTarget, callingMethod);
135
MarkTypeMapAttribute(attr, new DependencyInfo(
DependencyKind
.TypeMapEntry, targetType));
191
_markStep.MarkCustomAttribute(attr.Attribute, new DependencyInfo(
DependencyKind
.TypeMapEntry, null), new MessageOrigin(attr.Origin));
208
MarkTypeMapAttribute(attr, new DependencyInfo(
DependencyKind
.TypeMapEntry, null));
228
MarkTypeMapAttribute(attr, new DependencyInfo(
DependencyKind
.TypeMapEntry, dependencySource));
Linker\XmlDependencyRecorder.cs (1)
102
if (reason.Kind ==
DependencyKind
.Unspecified)