diff --git a/Xamarin.MacDev/MacCatalystSupport.cs b/Xamarin.MacDev/MacCatalystSupport.cs index 8e66057..77f3e26 100644 --- a/Xamarin.MacDev/MacCatalystSupport.cs +++ b/Xamarin.MacDev/MacCatalystSupport.cs @@ -26,6 +26,9 @@ #nullable enable using System; +#if NET +using System.Diagnostics.CodeAnalysis; +#endif using System.Collections.Generic; using System.IO; @@ -58,7 +61,7 @@ public static void LoadVersionMaps (string sdkDirectory, out Dictionary knowniOSVersions) + public static bool TryGetMacOSVersion (string sdkDirectory, Version iOSVersion, [NotNullWhen (true)] out Version? macOSVersion, out ICollection knowniOSVersions) { macOSVersion = null; @@ -68,7 +71,7 @@ public static bool TryGetMacOSVersion (string sdkDirectory, Version iOSVersion, return Version.TryParse (strValue, out macOSVersion); } - public static bool TryGetMacOSVersion (string sdkDirectory, string iOSVersion, out string macOSVersion, out ICollection knowniOSVersions) + public static bool TryGetMacOSVersion (string sdkDirectory, string iOSVersion, [NotNullWhen (true)] out string? macOSVersion, out ICollection knowniOSVersions) { LoadVersionMaps (sdkDirectory, out var map, out var _); @@ -77,7 +80,7 @@ public static bool TryGetMacOSVersion (string sdkDirectory, string iOSVersion, o return map.TryGetValue (iOSVersion.ToString (), out macOSVersion); } - public static bool TryGetiOSVersion (string sdkDirectory, Version macOSVersion, out Version? iOSVersion, out ICollection knownMacOSVersions) + public static bool TryGetiOSVersion (string sdkDirectory, Version macOSVersion, [NotNullWhen (true)] out Version? iOSVersion, out ICollection knownMacOSVersions) { iOSVersion = null; @@ -87,7 +90,7 @@ public static bool TryGetiOSVersion (string sdkDirectory, Version macOSVersion, return Version.TryParse (strValue, out iOSVersion); } - public static bool TryGetiOSVersion (string sdkDirectory, string macOSVersion, out string iOSVersion, out ICollection knownMacOSVersions) + public static bool TryGetiOSVersion (string sdkDirectory, string macOSVersion, [NotNullWhen (true)] out string? iOSVersion, out ICollection knownMacOSVersions) { LoadVersionMaps (sdkDirectory, out var _, out var map); @@ -97,3 +100,14 @@ public static bool TryGetiOSVersion (string sdkDirectory, string macOSVersion, o } } } + +#if !NET +namespace System.Diagnostics.CodeAnalysis { + // from: https://github.com/dotnet/runtime/blob/main/src/libraries/System.Private.CoreLib/src/System/Diagnostics/CodeAnalysis/NullableAttributes.cs + [AttributeUsage (AttributeTargets.Parameter, Inherited = false)] + internal sealed class NotNullWhenAttribute : Attribute { + public NotNullWhenAttribute (bool returnValue) => ReturnValue = returnValue; + public bool ReturnValue { get; } + } +} +#endif // !NET