File: src\tools\illink\src\ILLink.Shared\MessageFormat.cs
Web Access
Project: src\src\tools\illink\src\ILLink.RoslynAnalyzer\ILLink.RoslynAnalyzer.csproj (ILLink.RoslynAnalyzer)
// 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.
 
// This is needed due to NativeAOT which doesn't enable nullable globally yet
#nullable enable
 
namespace ILLink.Shared
{
    internal static class MessageFormat
    {
        public static string FormatRequiresAttributeMessageArg(string? message)
        {
            if (!string.IsNullOrEmpty(message))
                return $" {message}{(message!.TrimEnd().EndsWith(".") ? "" : ".")}";
 
            return string.Empty;
        }
 
        public static string FormatRequiresAttributeUrlArg(string? url)
        {
            if (!string.IsNullOrEmpty(url))
                return $" {url}";
 
            return string.Empty;
        }
 
        public static string FormatRequiresAttributeMismatch(bool memberHasAttribute, bool isInterface, params object[] args)
        {
            string format = (memberHasAttribute, isInterface) switch
            {
                (false, true) => SharedStrings.InterfaceRequiresMismatchMessage,
                (true, true) => SharedStrings.ImplementationRequiresMismatchMessage,
                (false, false) => SharedStrings.BaseRequiresMismatchMessage,
                (true, false) => SharedStrings.DerivedRequiresMismatchMessage
            };
 
            return string.Format(format, args);
        }
    }
}