// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // Nullable-annotation attribute polyfills from dotnet/runtime, for target frameworks // that lack them. #if !NETCORE #nullable enable namespace System.Diagnostics.CodeAnalysis { [AttributeUsage(AttributeTargets.Property | AttributeTargets.Parameter | AttributeTargets.ReturnValue, AllowMultiple = true)] internal sealed class NotNullIfNotNullAttribute : Attribute { public string ParameterName { get; } public NotNullIfNotNullAttribute(string parameterName) { ParameterName = parameterName; } } [AttributeUsage(AttributeTargets.Parameter, Inherited = false)] internal sealed class NotNullWhenAttribute : Attribute { public NotNullWhenAttribute(bool returnValue) { ReturnValue = returnValue; } public bool ReturnValue { get; } } [AttributeUsage(AttributeTargets.Parameter, Inherited = false)] internal sealed class DoesNotReturnIfAttribute : Attribute { public DoesNotReturnIfAttribute(bool parameterValue) => ParameterValue = parameterValue; public bool ParameterValue { get; } } } #endif