bug(RCS1246): does not fire when a List has been inherited
dylanvdmerwe opened this issue · comments
Dylan v.d Merwe commented
Product and Version Used:
<ItemGroup>
<PackageReference Include="roslynator.analyzers" Version="4.12.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="roslynator.formatting.analyzers" Version="4.12.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
Steps to Reproduce:
Correct when using a list directly.
List<int> i = new();
int x = i.First(); // RCS1246 recommends to use [0]
However create a class that inherits from List, and the optimizer does not fire.
TestCollection s = ["one", "two", "three", "four", "five"];
var x = s.First(); // does not recommend to [0] here, but it should
public class TestCollection : List<string>
{
}
Often clients in enterprise environments inherit from List, IList to create their own collections with helper methods in.