| File: Linker.Steps\CheckSuppressionsStep.cs | Web Access |
| Project: src\runtime\src\tools\illink\src\linker\Mono.Linker.csproj (illink) |
// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using Mono.Cecil; namespace Mono.Linker.Steps { public class CheckSuppressionsStep : BaseSubStep { public override SubStepTargets Targets { get { return SubStepTargets.Type | SubStepTargets.Field | SubStepTargets.Method | SubStepTargets.Property | SubStepTargets.Event; } } public override bool IsActiveFor(AssemblyDefinition assembly) { // Only process assemblies which went through marking. // The code relies on MarkStep to identify the useful suppressions. // Assemblies which didn't go through marking would not produce any warnings and thus would report all suppressions as redundant. var assemblyAction = Annotations.GetAction(assembly); return assemblyAction == AssemblyAction.Link || assemblyAction == AssemblyAction.Copy; } public override void ProcessType(TypeDefinition type) { Context.Suppressions.GatherSuppressions(type); } public override void ProcessField(FieldDefinition field) { Context.Suppressions.GatherSuppressions(field); } public override void ProcessMethod(MethodDefinition method) { if (Context.Annotations.GetAction(method) != MethodAction.ConvertToThrow) Context.Suppressions.GatherSuppressions(method); } public override void ProcessProperty(PropertyDefinition property) { Context.Suppressions.GatherSuppressions(property); } public override void ProcessEvent(EventDefinition @event) { Context.Suppressions.GatherSuppressions(@event); } } }