Skip to content

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

Open

Description

@TechPizzaDev

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

Steps to Reproduce:

SharpLab example

Minimal code 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

Activity

  1. ghost added
    untriagedIssues and PRs which have not yet been triaged by a lead
    on Jun 22, 2022
  2. DoctorKrolic commented on Jun 22, 2022

    @DoctorKrolic
    Contributor

    Duplicate of #58168

  3. TechPizzaDev commented on Jun 22, 2022

    @TechPizzaDev
    Author

    Issue #58168 is invalid. The arguments in the given screenshot are unused and there is no interaction with [InterpolatedStringHandlerArgument] there either.

  4. added
    help wantedThe issue is "up for grabs" - add a comment if you are interested in working on it
    IDE-CodeStyleBuilt-in analyzers, fixes, and refactorings
    and removed
    untriagedIssues and PRs which have not yet been triaged by a lead
    on Jul 19, 2022
  5. added this to the Backlog milestone on Jul 19, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Area-IDEBugFeature - IDE0060Remove unused parameterIDE-CodeStyleBuilt-in analyzers, fixes, and refactoringshelp wantedThe issue is "up for grabs" - add a comment if you are interested in working on it

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions