dotnet/roslyn

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

Open

#62.077 geöffnet am 22. Juni 2022

Auf GitHub ansehen
 (2 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)C# (4.257 Forks)batch import
Area-IDEBugFeature - IDE0060IDE-CodeStylehelp wanted

Repository-Metriken

Stars
 (20.414 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 6T 17h) (256 gemergte PRs in 30 T)

Beschreibung

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

Contributor Guide