public void LogMessage(MessageContainer message) { if (message == MessageContainer.Empty) { return; } if ((message.Category == MessageCategory.Diagnostic || message.Category == MessageCategory.Info) && !LogMessages) { return; } if (WarningSuppressionWriter != null && (message.Category == MessageCategory.Warning || message.Category == MessageCategory.WarningAsError) && message.Origin?.MemberDefinition != null) { WarningSuppressionWriter.AddWarning(message.Code.Value, message.Origin?.MemberDefinition); } if (message.Category == MessageCategory.Error || message.Category == MessageCategory.WarningAsError) { ErrorsCount++; } _logger.LogMessage(message); }
public void LogMessage(MessageContainer message) { if (!LogMessages || message == MessageContainer.Empty) { return; } if (message.Category == MessageCategory.Warning && NoWarn.Contains((uint)message.Code)) { // This warning was turned off by --nowarn. return; } // Note: message.Version is nullable. The comparison is false if it is null. // Unversioned warnings are not controlled by WarnVersion. // Error messages are guaranteed to only have a version if they were created for a warning due to warnaserror. if ((message.Category == MessageCategory.Warning || message.Category == MessageCategory.Error) && message.Version > WarnVersion) { // This warning was turned off by --warn. return; } if (OutputWarningSuppressions && message.Category == MessageCategory.Warning && message.Origin?.MemberDefinition != null) { WarningSuppressionWriter.AddWarning(message.Code.Value, message.Origin?.MemberDefinition); } Logger?.LogMessage(message); }
public LinkContext(Pipeline pipeline, AssemblyResolver resolver, ReaderParameters readerParameters, UnintializedContextFactory factory) { _pipeline = pipeline; _resolver = resolver; _resolver.Context = this; _actions = new Dictionary <string, AssemblyAction> (); _parameters = new Dictionary <string, string> (StringComparer.Ordinal); _readerParameters = readerParameters; _customAttributes = new CustomAttributeSource(); SymbolReaderProvider = new DefaultSymbolReaderProvider(false); if (factory == null) { throw new ArgumentNullException(nameof(factory)); } _annotations = factory.CreateAnnotationStore(this); MarkingHelpers = factory.CreateMarkingHelpers(this); Tracer = factory.CreateTracer(this); ReflectionPatternRecorder = new LoggingReflectionPatternRecorder(this); MarkedKnownMembers = new KnownMembers(); StripDescriptors = true; StripSubstitutions = true; StripLinkAttributes = true; PInvokes = new List <PInvokeInfo> (); Suppressions = new UnconditionalSuppressMessageAttributeState(this); WarningSuppressionWriter = new WarningSuppressionWriter(this); NoWarn = new HashSet <uint> (); GeneralWarnAsError = false; WarnAsError = new Dictionary <uint, bool> (); WarnVersion = WarnVersion.Latest; // See https://github.com/mono/linker/issues/612 const CodeOptimizations defaultOptimizations = CodeOptimizations.BeforeFieldInit | CodeOptimizations.OverrideRemoval | CodeOptimizations.UnusedInterfaces | CodeOptimizations.IPConstantPropagation; Optimizations = new CodeOptimizationsSettings(defaultOptimizations); }
public void SetWarningSuppressionWriter(WarningSuppressionWriter.FileOutputKind fileOutputKind) { WarningSuppressionWriter = new WarningSuppressionWriter(this, fileOutputKind); }