File: src\tools\illink\src\ILLink.Shared\MessageFormat.cs
Web Access
Project: src\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.
 
// 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);
		}
	}
}