using Rubberduck.InternalApi.Model.Declarations;

namespace Rubberduck.Parsing.Annotations.Concrete;

/// <summary>
/// @Ignore annotation, used by Rubberduck to filter inspection results at member and local level.
/// </summary>
/// <parameter name="Inspections" type="InspectionNames">
/// This annotation takes a comma-separated list of inspection names as arguments (at least one is required).
/// </parameter>
/// <remarks>
/// Use the @IgnoreModule annotation to annotate at module level.
/// </remarks>
/// <example>
/// <module name="Class1" type="Class Module">
/// <![CDATA[
/// Option Explicit
/// Private InternalState As VBA.Collection
///
/// '@Ignore ProcedureNotUsed
/// Public Sub DoSomething()
///     '@Ignore VariableNotAssigned
///     Dim result As Variant
///     DoSomething result
///     Debug.Print result
/// End Sub
/// ]]>
/// </module>
/// </example>
public sealed class IgnoreAnnotation : AnnotationBase
{
    public IgnoreAnnotation()
        : base("Ignore", AnnotationTarget.General, 1, null, [AnnotationArgumentType.Inspection], true)
    {}
}
