dotnet/roslyn
View on GitHubRemove unused parameter (IDE0060) on parameter used by [InterpolatedStringHandlerArgument]
Open
#62,077 opened on Jun 22, 2022
Area-IDEBugFeature - IDE0060IDE-CodeStylehelp wanted
Repository metrics
- Stars
- (20,414 stars)
- PR merge metrics
- (Avg merge 6d 17h) (256 merged PRs in 30d)
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:
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