Use ValueText to handle escaped identifiers and add tests.

上级 8323e8f2
......@@ -119,10 +119,10 @@ static CallingConvention getCallingConvention(FunctionPointerCallingConventionSy
case { CallingConventions: { Count: 1 } specifiers }:
return specifiers[0].Name switch
{
{ Text: "Cdecl" } => CallingConvention.CDecl,
{ Text: "Stdcall" } => CallingConvention.Standard,
{ Text: "Thiscall" } => CallingConvention.ThisCall,
{ Text: "Fastcall" } => CallingConvention.FastCall,
{ ValueText: "Cdecl" } => CallingConvention.CDecl,
{ ValueText: "Stdcall" } => CallingConvention.Standard,
{ ValueText: "Thiscall" } => CallingConvention.ThisCall,
{ ValueText: "Fastcall" } => CallingConvention.FastCall,
// PROTOTYPE(func-ptr): Handle unrecognized specifiers
var name => reportBadConventionAndReturn(name.Text, name, diagnostics)
};
......
......@@ -68,6 +68,10 @@ private CSharpCompilation CreateCompilationWithFunctionPointersAndIl(string sour
[InlineData("unmanaged[Thiscall]", CallingConvention.ThisCall)]
[InlineData("unmanaged[Stdcall]", CallingConvention.Standard)]
[InlineData("unmanaged[Fastcall]", CallingConvention.FastCall)]
[InlineData("unmanaged[@Cdecl]", CallingConvention.CDecl)]
[InlineData("unmanaged[@Thiscall]", CallingConvention.ThisCall)]
[InlineData("unmanaged[@Stdcall]", CallingConvention.Standard)]
[InlineData("unmanaged[@Fastcall]", CallingConvention.FastCall)]
// PROTOTYPE(func-ptr): Update SRM so it can decode the convention correctly
//[InlineData("unmanaged", CallingConvention.Unmanaged)]
internal void CallingConventions(string conventionString, CallingConvention expectedConvention)
......@@ -116,11 +120,6 @@ public void M()
);
}
[Fact]
public void UnrecognizedCallingConventions()
{
}
[Fact]
public void RefParameters()
{
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册