dotnet/roslyn

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

Open

#62 077 ouverte le 22 juin 2022

Voir sur GitHub
 (2 commentaires) (0 réactions) (0 assignés)C# (4 257 forks)batch import
Area-IDEBugFeature - IDE0060IDE-CodeStylehelp wanted

Métriques du dépôt

Stars
 (20 414 stars)
Métriques de merge PR
 (Merge moyen 6j 17h) (256 PRs mergées en 30 j)

Description

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

Guide contributeur