using System;
using System.Diagnostics.CodeAnalysis;

namespace JetBrains.Annotations
{
	[SuppressMessage("Microsoft.Naming", 
		"CA1726:UsePreferredTerms", 
		MessageId = "Flags",
		Justification = "It is JetBrains code")]
	[Flags]
	public enum ImplicitUseKindFlags
	{
		Default = Access | Assign | InstantiatedWithFixedConstructorSignature,
		/// <summary>
		/// Only entity marked with attribute considered used
		/// </summary>
		Access = 1,
		/// <summary>
		/// Indicates implicit assignment to a member
		/// </summary>
		Assign = 2,
		/// <summary>
		/// Indicates implicit instantiation of a type with fixed constructor signature.
		/// That means any unused constructor parameters won't be reported as such.
		/// </summary>
		InstantiatedWithFixedConstructorSignature = 4,
		/// <summary>
		/// Indicates implicit instantiation of a type
		/// </summary>
		InstantiatedNoFixedConstructorSignature = 8,
	}
}