dotnet/roslyn

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

開放

#59,060 建立於 2022年1月25日

 (6 則留言) (0 個反應) (0 位負責人)C# (4,257 個分叉)batch import
Area-CompilersFeature - Function Pointershelp wanted

倉庫指標

星標
 (20,414 顆星)
PR 合併指標
 (平均合併 6天 17小時) (30 天內合併 256 個 PR)

描述

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

貢獻者指南