Skip to content

BDN1100 error is raised by analyzer when using GenericTypeArguments on abstract class #3008

@filzrev

Description

@filzrev

When updated BenchmarkDotNet version to v0.15.8.

Following analyzer error is raised by analyzer.

BDN1100: Attribute [GenericTypeArguments] can only be applied to a non-abstract class

As far as I've confirmed.
GenericTypeArguments can be specified on abstract class and it works as expected.
So I though this analyzer rule seems causing false-positive errors.

TestCode

// Need to disable BDN1100 with `#pragma warning disable BDN1100`
[GenericTypeArguments(typeof(int))]    // ValueType
[GenericTypeArguments(typeof(string))] // ReferenceType
public abstract class EnumerableBenchmarkBase<T>
{
    protected readonly Consumer Consumer = new Consumer();

    protected IEnumerable<T> EnumerableItems { get; init; }
    protected T[] ArrayItems { get; init; }

    protected EnumerableBenchmarkBase()
    {
        // TODO: Fill dummy data
    }
}

public class Benchmarks<T> : EnumerableBenchmarkBase<T>
{
    [Benchmark]
    public void ConsumeEnumerableData()
    {
        foreach (var item in EnumerableItems)
        {
            Consumer.Consume(item);
        }
    }

    [Benchmark]
    public void ConsumeArrayData()
    {
        foreach (var item in ArrayItems)
        {
            Consumer.Consume(item);
        }
    }
}

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions