dotnet/roslyn

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

Aperta

#59.060 aperta il 25 gen 2022

 (6 commenti) (0 reazioni) (0 assegnatari)C# (4257 fork)batch import
Area-CompilersFeature - Function Pointershelp wanted

Metriche repository

Star
 (20.414 stelle)
Metriche merge PR
 (Merge medio 6g 17h) (256 PR mergiate in 30 g)

Descrizione

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

Guida contributor