dotnet/roslyn

Remove unused parameter (IDE0060) on parameter used by [InterpolatedStringHandlerArgument]

Open

#62.077 aperta il 22 giu 2022

Vedi su GitHub
 (2 commenti) (0 reazioni) (0 assegnatari)C# (4257 fork)batch import
Area-IDEBugFeature - IDE0060IDE-CodeStylehelp wanted

Metriche repository

Star
 (20.414 star)
Metriche merge PR
 (Merge medio 6g 17h) (256 PR mergiate in 30 g)

Descrizione

Version Used: Visual Studio 2022 Community 17.2.4 Microsoft (R) Visual C# Compiler version 4.2.0-4.22281.5 (8d3180e5)

Steps to Reproduce:

SharpLab example

using System;
using System.Runtime.CompilerServices;
using System.Text;

public class Program
{
    public void Test(IFormatProvider provider)
    {
        AppendLine(provider, $"test");
    }
    
    // unexpected IDE0060 on 'provider'
    public void AppendLine(IFormatProvider provider, [InterpolatedStringHandlerArgument("provider")] ref DebugMarkerInterpolatedStringHandler name)
    {
        Console.WriteLine(name.GetString());
    }
}

[InterpolatedStringHandler]
public unsafe ref struct DebugMarkerInterpolatedStringHandler
{
    private StringBuilder.AppendInterpolatedStringHandler _innerHandler;
    private StringBuilder _stringBuilder;
    
    public DebugMarkerInterpolatedStringHandler(
        int literalLength,
        int formattedCount,
        IFormatProvider provider)
    {
        _stringBuilder = new StringBuilder();
        _innerHandler = new StringBuilder.AppendInterpolatedStringHandler(literalLength, formattedCount, _stringBuilder, provider);
    }

    public string GetString()
    {
        return _stringBuilder.ToString();
    }

    public void AppendLiteral(string value) => _innerHandler.AppendLiteral(value);
    public void AppendFormatted<T>(T value) => _innerHandler.AppendFormatted(value);
    public void AppendFormatted<T>(T value, string format) => _innerHandler.AppendFormatted(value, format);
    public void AppendFormatted<T>(T value, int alignment) => _innerHandler.AppendFormatted(value, alignment);
    public void AppendFormatted<T>(T value, int alignment, string format) => _innerHandler.AppendFormatted(value, alignment, format);
    public void AppendFormatted(ReadOnlySpan<char> value) => _innerHandler.AppendFormatted(value);
    public void AppendFormatted(ReadOnlySpan<char> value, int alignment = 0, string format = null) => _innerHandler.AppendFormatted(value, alignment, format);
    public void AppendFormatted(string value) => _innerHandler.AppendFormatted(value);
    public void AppendFormatted(string value, int alignment = 0, string format = null) => _innerHandler.AppendFormatted(value, alignment, format);
    public void AppendFormatted(object value, int alignment = 0, string format = null) => _innerHandler.AppendFormatted(value, alignment, format);
}

Expected Behavior: No complaint from compiler.

Actual Behavior: IDE0060 appears even though the format provider is used.

cc @333fred

Guida contributor