// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// ReSharper disable once CheckNamespace
namespace System.Runtime.CompilerServices;
///
/// Indicates that compiler support for a particular feature is required for the location where this attribute is
/// applied.
///
[AttributeUsage (AttributeTargets.All, AllowMultiple = true, Inherited = false)]
internal sealed class CompilerFeatureRequiredAttribute(string featureName) : Attribute
{
///
/// The used for the ref structs C# feature.
///
public const string RefStructs = nameof (RefStructs);
///
/// The used for the required members C# feature.
///
public const string RequiredMembers = nameof (RequiredMembers);
///
/// The name of the compiler feature.
///
public string FeatureName { get; } = featureName;
///
/// If true, the compiler can choose to allow access to the location where this attribute is applied if it does not
/// understand .
///
public bool IsOptional { get; init; }
}