Area-IDEBughelp wanted
Repository metrics
- Stars
- (20,414 stars)
- PR merge metrics
- (Avg merge 6d 17h) (256 merged PRs in 30d)
Description
Version Used: VS 17.13 Preview 1
Steps to Reproduce:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<GenerateDocumentationFile>true</GenerateDocumentationFile> <!-- important for repro -->
</PropertyGroup>
</Project>
Console.WriteLine();
public class C
{
/// <summary>Whatever</summary>
public static void M1<T>(T? expected)
{
}
/// <inheritdoc cref="M1$$" />
public static void M2()
{
}
}
Trigger completion in place of $$, it completes to M1{T}(T?) which produces:
CS1574 XML comment has cref attribute 'M1{T}(T?)' that could not be resolved
It should have completed to M1{T}(T) (unless the completion is correct and this is a compiler bug?)
NOTE: Some scenarios that are working currently correctly but need to be taken with care to not regress them
If you have:
/// <summary>Whatever</summary>
public static void M1<T>(T? expected) where T : struct
{
}
/// <summary>Whatever 2</summary>
public static void M1<T>(T expected) where T : struct
{
}
Then completion for both T and T? should be offered (and is currently the case that should not be regressed).
Similarly, even if only this overload exists:
/// <summary>Whatever</summary>
public static void M1<T>(T? expected) where T : struct
{
}
The completion should use T?