dotnet/roslyn

`SemanticModel.GetSymbolInfo` doesn't return a symbol for `FunctionPointerUnmanagedCallingConventionSyntax`

Offen

#59.060 geöffnet am 25.01.2022

 (6 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)C# (4.257 Forks)batch import
Area-CompilersFeature - Function Pointershelp wanted

Repository-Metriken

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

Beschreibung

Version Used:

main

Steps to Reproduce:

Invoke GetSymbolInfo on a FunctionPointerUnmanagedCallingConventionSyntax, eg:

            CSharpCompilation comp = CSharpCompilation.Create("MyAssembly", new[] { SyntaxFactory.ParseSyntaxTree(@"
public unsafe class C
{
    delegate* unmanaged[MemberFunction]<void> f;
}") });
            var tree = comp.SyntaxTrees[0];
            var model = comp.GetSemanticModel(tree);
            var node = tree.GetRoot().DescendantNodes().Where(node => node is FunctionPointerUnmanagedCallingConventionSyntax).Single();
            var info = model.GetSymbolInfo(node); // info.Symbol is null.

Expected Behavior:

The type symbol for System.Runtime.CompilerServices.CallConvMemberFunction

Actual Behavior:

Null symbol

https://github.com/dotnet/roslyn/blob/7cfc9e70afd641bb7b6bb29ae502049f25dc42a3/src/Compilers/CSharp/Portable/Compilation/CSharpSemanticModel.cs#L4899-L4924

Contributor Guide