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,
351
MarkEntireType(nested, new DependencyInfo(
DependencyKind
.NestedType, type), origin);
364
MarkFieldsVisibleToReflection(type, new DependencyInfo(
DependencyKind
.MemberOfType, type), origin);
365
MarkMethodsVisibleToReflection(type, new DependencyInfo(
DependencyKind
.MemberOfType, type), origin);
371
MarkPropertyVisibleToReflection(property, new DependencyInfo(
DependencyKind
.MemberOfType, type), origin);
379
MarkEventVisibleToReflection(ev, new DependencyInfo(
DependencyKind
.MemberOfType, type), origin);
441
MarkAssembly(assembly, new DependencyInfo(
DependencyKind
.AssemblyAction, null), emptyOrigin);
655
MarkType(type, new DependencyInfo(
DependencyKind
.DynamicInterfaceCastableImplementation, iface.InterfaceType), new MessageOrigin(Context.TryResolve(iface.InterfaceType)));
698
MarkMethod(dimInfo.Override, new DependencyInfo(
DependencyKind
.Override, dimInfo.Base), origin);
708
MarkMethod(ov.Override, new DependencyInfo(
DependencyKind
.Override, ov.Base), origin);
753
MarkMethod(overrideInformation.Override, new DependencyInfo(
DependencyKind
.OverrideOnInstantiatedType, overrideInformation.Override.DeclaringType), origin);
759
MarkMethod(overrideInformation.Override, new DependencyInfo(
DependencyKind
.Override, overrideInformation.Base), origin);
960
MarkingHelpers.MarkMatchingExportedType(type, assembly, new DependencyInfo(
DependencyKind
.DynamicDependency, type), origin);
1002
MarkMembersVisibleToReflection(members, new DependencyInfo(
DependencyKind
.DynamicDependency, context), origin);
1073
MarkingHelpers.MarkMatchingExportedType(td, assemblyDef, new DependencyInfo(
DependencyKind
.PreservedDependency, ca), origin);
1101
MarkEntireType(td, new DependencyInfo(
DependencyKind
.PreservedDependency, ca), origin);
1107
if (MarkDependencyMethod(td, member, signature, new DependencyInfo(
DependencyKind
.PreservedDependency, ca), origin))
1110
if (MarkNamedField(td, member, new DependencyInfo(
DependencyKind
.PreservedDependency, ca), origin))
1184
MarkMethod(ca.Constructor, new DependencyInfo(
DependencyKind
.AttributeConstructor, ca), origin);
1308
MarkType(security_type, new DependencyInfo(
DependencyKind
.AttributeType, sa), origin);
1319
MarkCustomAttributeProperty(named_argument, attribute, ca, new DependencyInfo(
DependencyKind
.AttributeProperty, ca), origin);
1365
MarkField(field, new DependencyInfo(
DependencyKind
.CustomAttributeField, ca), origin);
1430
MarkType(et, new DependencyInfo(
DependencyKind
.CustomAttributeArgumentType, ca), origin);
1447
MarkType(argument.Type, new DependencyInfo(
DependencyKind
.CustomAttributeArgumentType, ca), origin);
1448
MarkType((TypeReference)argument.Value, new DependencyInfo(
DependencyKind
.CustomAttributeArgumentValue, ca), origin);
1453
MarkType(boxed_value.Type, new DependencyInfo(
DependencyKind
.CustomAttributeArgumentType, ca), origin);
1504
MarkSecurityDeclarations(assembly, new DependencyInfo(
DependencyKind
.AssemblyOrModuleAttribute, assembly), assemblyOrigin);
1516
MarkCustomAttributes(assembly, new DependencyInfo(
DependencyKind
.AssemblyOrModuleAttribute, assembly), origin);
1517
MarkCustomAttributes(module, new DependencyInfo(
DependencyKind
.AssemblyOrModuleAttribute, module), origin);
1520
MarkEntireType(type, new DependencyInfo(
DependencyKind
.TypeInAssembly, assembly), origin);
1549
markingHelpers.MarkExportedType(exportedType, assembly.MainModule, new DependencyInfo(
DependencyKind
.ExportedType, assembly), new MessageOrigin(assembly));
1585
MarkType(moduleType, new DependencyInfo(
DependencyKind
.TypeInAssembly, assembly), origin);
1627
MarkCustomAttribute(customAttribute, new DependencyInfo(
DependencyKind
.AssemblyOrModuleAttribute, assemblyLevelAttribute.Provider), assemblyOrigin);
1698
Debug.Assert(reason.Kind ==
DependencyKind
.FieldAccess || reason.Kind ==
DependencyKind
.Ldtoken);
1701
MarkType(reference.DeclaringType, new DependencyInfo(
DependencyKind
.DeclaringType, reference), origin);
1704
reason = new DependencyInfo(
DependencyKind
.FieldOnGenericInstance, reference);
1717
void ReportWarningsForReflectionAccess(in MessageOrigin origin, MethodDefinition method,
DependencyKind
dependencyKind)
1728
case
DependencyKind
.AttributeProperty:
1735
case
DependencyKind
.Ldftn:
1736
case
DependencyKind
.Ldvirtftn:
1737
case
DependencyKind
.Ldtoken:
1745
case
DependencyKind
.AttributeConstructor:
1776
case
DependencyKind
.AttributeConstructor:
1777
case
DependencyKind
.AttributeProperty:
1838
if (reason.Kind ==
DependencyKind
.AlreadyMarked)
1853
MarkType(field.DeclaringType, new DependencyInfo(
DependencyKind
.DeclaringType, field), origin);
1856
MarkType(field.FieldType, new DependencyInfo(
DependencyKind
.FieldType, field), fieldOrigin);
1857
MarkCustomAttributes(field, new DependencyInfo(
DependencyKind
.CustomAttribute, field), fieldOrigin);
1858
MarkMarshalSpec(field, new DependencyInfo(
DependencyKind
.FieldMarshalSpec, field), fieldOrigin);
1887
DependencyKind
.FieldAccess => new DependencyInfo(
DependencyKind
.TriggersCctorThroughFieldAccess, reason.Source),
1888
_ => new DependencyInfo(
DependencyKind
.CctorForField, field)
1894
void ProcessAnalysisAnnotationsForField(FieldDefinition field,
DependencyKind
dependencyKind, in MessageOrigin origin)
1899
case
DependencyKind
.AlreadyMarked:
1900
case
DependencyKind
.TypePreserve:
1901
case
DependencyKind
.PreservedMethod:
1902
case
DependencyKind
.MemberOfType:
1905
case
DependencyKind
.DynamicallyAccessedMemberOnType:
1921
case
DependencyKind
.AccessedViaReflection:
1922
case
DependencyKind
.DynamicDependency:
1923
case
DependencyKind
.DynamicallyAccessedMember:
1924
case
DependencyKind
.InteropMethodDependency:
1925
case
DependencyKind
.Ldtoken:
1926
case
DependencyKind
.UnsafeAccessorTarget:
1945
if (reason.Kind ==
DependencyKind
.AlreadyMarked)
1955
MarkAssembly(module.Assembly, new DependencyInfo(
DependencyKind
.AssemblyOfModule, module), origin);
1968
MarkDefaultConstructor(type, new DependencyInfo(
DependencyKind
.SerializationMethodForType, type), origin);
1969
MarkMethodsIf(type.Methods, IsSpecialSerializationConstructor, new DependencyInfo(
DependencyKind
.SerializationMethodForType, type), origin);
1972
MarkMethodsIf(type.Methods, HasOnSerializeOrDeserializeAttribute, new DependencyInfo(
DependencyKind
.SerializationMethodForType, type), origin);
2125
case
DependencyKind
.AlreadyMarked:
2134
if (type.HasMethods && ShouldMarkTypeStaticConstructor(type) && reason.Kind ==
DependencyKind
.DeclaringTypeOfCalledMethod)
2135
MarkStaticConstructor(type, new DependencyInfo(
DependencyKind
.TriggersCctorForCalledMethod, reason.Source), origin);
2145
reason.Kind is not
DependencyKind
.TypeInAssembly)
2157
MarkModule(module, new DependencyInfo(
DependencyKind
.ScopeOfType, type), origin);
2164
MarkType(type.BaseType, new DependencyInfo(
DependencyKind
.BaseType, type), typeOrigin);
2173
MarkType(type.DeclaringType, new DependencyInfo(
DependencyKind
.DeclaringType, type), typeOrigin);
2174
MarkCustomAttributes(type, new DependencyInfo(
DependencyKind
.CustomAttribute, type), typeOrigin);
2175
MarkSecurityDeclarations(type, new DependencyInfo(
DependencyKind
.CustomAttribute, type), typeOrigin);
2183
MarkMethodIf(type.Methods, static m => m.Name == "Finalize", new DependencyInfo(
DependencyKind
.MethodForSpecialType, type), typeOrigin);
2244
MarkMethod(method, new DependencyInfo(
DependencyKind
.VirtualNeededDueToPreservedScope, type), typeOrigin);
2247
if (ShouldMarkTypeStaticConstructor(type) && reason.Kind !=
DependencyKind
.TriggersCctorForCalledMethod)
2249
MarkStaticConstructor(type, new DependencyInfo(
DependencyKind
.CctorForType, type), typeOrigin);
2343
if (MarkMethodsIf(type.Methods, MethodDefinitionExtensions.IsPublicInstancePropertyMethod, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, type), origin))
2344
Tracer.AddDirectDependency(attribute, new DependencyInfo(
DependencyKind
.CustomAttribute, type), marked: false);
2370
Tracer.AddDirectDependency(attribute, new DependencyInfo(
DependencyKind
.CustomAttribute, type), marked: false);
2371
MarkNamedMethod(type, name, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2387
Tracer.AddDirectDependency(attribute, new DependencyInfo(
DependencyKind
.CustomAttribute, type), marked: false);
2434
MarkMethodVisibleToReflection(method, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2443
MarkFieldVisibleToReflection(field, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2450
MarkPropertyVisibleToReflection(property, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2459
MarkMethodsVisibleToReflection(type, new DependencyInfo(
DependencyKind
.KeptForSpecialAttribute, attribute), origin);
2460
MarkFieldsVisibleToReflection(type, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2488
Tracer.AddDirectDependency(attribute, new DependencyInfo(
DependencyKind
.CustomAttribute, type), marked: false);
2489
MarkType(proxyTypeReference, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2493
MarkMethodsVisibleToReflection(proxyType, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2494
MarkFieldsVisibleToReflection(proxyType, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2534
MarkNamedField(method.DeclaringType, member_name, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2535
MarkNamedProperty(method.DeclaringType, member_name, new DependencyInfo(
DependencyKind
.ReferencedBySpecialAttribute, attribute), origin);
2619
MarkCustomAttributes(parameter, new DependencyInfo(
DependencyKind
.GenericParameterCustomAttribute, parameter.Owner), origin);
2625
MarkCustomAttributes(constraint, new DependencyInfo(
DependencyKind
.GenericParameterConstraintCustomAttribute, parameter.Owner), origin);
2626
MarkType(constraint.ConstraintType, new DependencyInfo(
DependencyKind
.GenericParameterConstraintType, parameter.Owner), origin);
2871
MarkStaticFields(nestedType, new DependencyInfo(
DependencyKind
.EventSourceProviderField, td), origin);
2877
MarkMethodsIf(type.Methods, m => m.Name == ".ctor" || m.Name == "Invoke", new DependencyInfo(
DependencyKind
.MethodForSpecialType, type), origin);
2896
MarkType(fnptr.ReturnType, new DependencyInfo(
DependencyKind
.ReturnType, fnptr), origin);
2903
(type, reason) = (specification.ElementType, new DependencyInfo(
DependencyKind
.ElementType, specification));
2916
MarkType(fnptr.Parameters[i].ParameterType, new DependencyInfo(
DependencyKind
.ParameterType, fnptr), origin);
2922
MarkType(mod.ModifierType, new DependencyInfo(
DependencyKind
.ModifierType, mod), origin);
2937
var argumentTypeDef = MarkType(argument, new DependencyInfo(
DependencyKind
.GenericArgumentType, instance), origin);
2944
MarkDefaultConstructor(argumentTypeDef, new DependencyInfo(
DependencyKind
.DefaultCtorForNewConstrainedGenericArgument, instance), origin);
2968
var di = new DependencyInfo(
DependencyKind
.TypePreserve, type);
2990
var di = new DependencyInfo(
DependencyKind
.TypePreserve, type);
3066
MarkMethodCollection(list, new DependencyInfo(
DependencyKind
.PreservedMethod, type), origin);
3076
MarkMethodCollection(list, new DependencyInfo(
DependencyKind
.PreservedMethod, method), origin);
3146
MarkType(reference.DeclaringType, new DependencyInfo(
DependencyKind
.DeclaringType, reference), origin);
3159
MarkType(reference.DeclaringType, new DependencyInfo(
DependencyKind
.DeclaringType, reference), origin);
3161
reason = new DependencyInfo(
DependencyKind
.MethodOnGenericInstance, reference);
3189
case
DependencyKind
.AlreadyMarked:
3198
reason.Kind ==
DependencyKind
.DirectCall ||
3199
reason.Kind ==
DependencyKind
.VirtualCall ||
3200
reason.Kind ==
DependencyKind
.Newobj;
3208
MarkType(method.DeclaringType, new DependencyInfo(
DependencyKind
.DeclaringTypeOfCalledMethod, method), new MessageOrigin(reason.Source as IMemberDefinition ?? method));
3212
&& reason.Kind !=
DependencyKind
.EventMethod)
3214
var
kind = PropagateDependencyKindToAccessors(reason.Kind,
DependencyKind
.EventOfEventMethod);
3241
void ProcessAnalysisAnnotationsForMethod(MethodDefinition method,
DependencyKind
dependencyKind, in MessageOrigin origin)
3250
case
DependencyKind
.DirectCall:
3251
case
DependencyKind
.VirtualCall:
3252
case
DependencyKind
.Newobj:
3255
case
DependencyKind
.MethodForSpecialType:
3258
case
DependencyKind
.AlreadyMarked:
3259
case
DependencyKind
.TypePreserve:
3260
case
DependencyKind
.PreservedMethod:
3267
case
DependencyKind
.BaseMethod:
3268
case
DependencyKind
.MethodImplOverride:
3269
case
DependencyKind
.Override:
3270
case
DependencyKind
.OverrideOnInstantiatedType:
3276
case
DependencyKind
.MethodForInstantiatedType:
3277
case
DependencyKind
.VirtualNeededDueToPreservedScope:
3285
case
DependencyKind
.MemberOfType:
3286
case
DependencyKind
.EventMethod:
3290
case
DependencyKind
.CctorForType:
3291
case
DependencyKind
.CctorForField:
3292
case
DependencyKind
.TriggersCctorThroughFieldAccess:
3293
case
DependencyKind
.TriggersCctorForCalledMethod:
3296
case
DependencyKind
.UnreachableBodyRequirement:
3298
case
DependencyKind
.Custom:
3299
case
DependencyKind
.Unspecified:
3303
case
DependencyKind
.KeptForSpecialAttribute:
3306
case
DependencyKind
.DynamicallyAccessedMemberOnType:
3338
(method, reason) = (specification.ElementMethod, new DependencyInfo(
DependencyKind
.ElementMethod, specification));
3354
reason.Kind ==
DependencyKind
.DirectCall ||
3355
reason.Kind ==
DependencyKind
.VirtualCall ||
3356
reason.Kind ==
DependencyKind
.Newobj;
3362
MarkType(method.DeclaringType, new DependencyInfo(
DependencyKind
.DeclaringType, method), methodOrigin);
3363
MarkCustomAttributes(method, new DependencyInfo(
DependencyKind
.CustomAttribute, method), methodOrigin);
3364
MarkSecurityDeclarations(method, new DependencyInfo(
DependencyKind
.CustomAttribute, method), methodOrigin);
3371
Tracer.AddDirectDependency(method.DeclaringType, new DependencyInfo(
DependencyKind
.InstantiatedByCtor, method), marked: false);
3384
MarkProperty(property, new DependencyInfo(PropagateDependencyKindToAccessors(reason.Kind,
DependencyKind
.PropertyOfPropertyMethod), method));
3391
MarkType(pd.ParameterType, new DependencyInfo(
DependencyKind
.ParameterType, method), methodOrigin);
3392
MarkCustomAttributes(pd, new DependencyInfo(
DependencyKind
.ParameterAttribute, method), methodOrigin);
3393
MarkMarshalSpec(pd, new DependencyInfo(
DependencyKind
.ParameterMarshalSpec, method), methodOrigin);
3416
MarkMethod(@base, new DependencyInfo(
DependencyKind
.MethodImplOverride, method), methodOrigin);
3439
MarkType(method.ReturnType, new DependencyInfo(
DependencyKind
.ReturnType, method), methodOrigin);
3440
MarkCustomAttributes(method.MethodReturnType, new DependencyInfo(
DependencyKind
.ReturnTypeAttribute, method), methodOrigin);
3441
MarkMarshalSpec(method.MethodReturnType, new DependencyInfo(
DependencyKind
.ReturnTypeMarshalSpec, method), methodOrigin);
3467
MarkMethodIf(declaringType.Methods, m => m.Name == methodPair, new DependencyInfo(
DependencyKind
.MethodForSpecialType, declaringType), methodOrigin);
3481
static
DependencyKind
PropagateDependencyKindToAccessors(
DependencyKind
parentDependencyKind,
DependencyKind
kind)
3486
case
DependencyKind
.AlreadyMarked:
3487
case
DependencyKind
.TypePreserve:
3488
case
DependencyKind
.PreservedMethod:
3489
case
DependencyKind
.DynamicallyAccessedMemberOnType:
3504
MarkFields(type, includeStatic: type.IsEnum, reason: new DependencyInfo(
DependencyKind
.MemberOfType, type), origin);
3577
if (!MarkDefaultConstructor(baseType, new DependencyInfo(
DependencyKind
.BaseDefaultCtorForStubbedMethod, method), origin))
3583
MarkAndCacheConvertToThrowExceptionCtor(new DependencyInfo(
DependencyKind
.UnreachableBodyRequirement, method), origin);
3626
var ctor = MarkMethodIf(disablePrivateReflection.Methods, MethodDefinitionExtensions.IsDefaultConstructor, new DependencyInfo(
DependencyKind
.DisablePrivateReflectionRequirement, disablePrivateReflection), emptyOrigin);
3651
MarkMethod(ov.Base, new DependencyInfo(
DependencyKind
.BaseMethod, method), origin);
3661
Annotations.MarkProcessed(pii.Module, new DependencyInfo(
DependencyKind
.InteropMethodDependency, method));
3681
MarkDefaultConstructor(returnTypeDefinition, new DependencyInfo(
DependencyKind
.InteropMethodDependency, method), origin);
3682
MarkFields(returnTypeDefinition, includeStaticFields, new DependencyInfo(
DependencyKind
.InteropMethodDependency, method), origin);
3689
MarkFields(method.DeclaringType, includeStaticFields, new DependencyInfo(
DependencyKind
.InteropMethodDependency, method), origin);
3706
MarkFields(paramTypeDefinition, includeStaticFields, new DependencyInfo(
DependencyKind
.InteropMethodDependency, method), origin);
3709
MarkDefaultConstructor(paramTypeDefinition, new DependencyInfo(
DependencyKind
.InteropMethodDependency, method), origin);
3759
MarkCustomAttributes(prop, new DependencyInfo(
DependencyKind
.CustomAttribute, prop), propertyOrigin);
3766
DependencyKind
dependencyKind =
DependencyKind
.EventMethod;
3776
MarkCustomAttributes(evt, new DependencyInfo(
DependencyKind
.CustomAttribute, evt), eventOrigin);
3794
MarkAndCacheConvertToThrowExceptionCtor(new DependencyInfo(
DependencyKind
.UnreachableBodyRequirement, body.Method), origin);
3886
MarkType(var.VariableType, new DependencyInfo(
DependencyKind
.VariableType, methodIL.Method), origin);
3890
MarkType(eh.CatchType, new DependencyInfo(
DependencyKind
.CatchType, methodIL.Method), origin);
3970
MarkField((FieldReference)instruction.Operand, new DependencyInfo(
DependencyKind
.FieldAccess, method), origin);
3975
(
DependencyKind
dependencyKind, bool markForReflectionAccess) = instruction.OpCode.Code switch
3977
Code.Jmp => (
DependencyKind
.DirectCall, false),
3978
Code.Call => (
DependencyKind
.DirectCall, false),
3979
Code.Callvirt => (
DependencyKind
.VirtualCall, false),
3980
Code.Newobj => (
DependencyKind
.Newobj, false),
3981
Code.Ldvirtftn => (
DependencyKind
.Ldvirtftn, true),
3982
Code.Ldftn => (
DependencyKind
.Ldftn, true),
4007
var reason = new DependencyInfo(
DependencyKind
.Ldtoken, method);
4067
MarkType(operand, new DependencyInfo(
DependencyKind
.InstructionTypeRef, method), origin);
4084
Annotations.MarkProcessed(iface, reason ?? new DependencyInfo(
DependencyKind
.InterfaceImplementationOnType, origin.Provider));
4088
MarkCustomAttributes(iface, new DependencyInfo(
DependencyKind
.CustomAttribute, iface), origin);
4090
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)