Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -271,10 +271,16 @@ private static void WriteSignatureForFunctionPointerType(SignatureTypeEncoder si
CustomModifiersEncoder retModifiersEncoder = retTypeEncoder.CustomModifiers();

if (returnType.GetOptionalCustomModifiers() is Type[] retModOpts)
{
Array.Reverse(retModOpts);
WriteCustomModifiers(retModifiersEncoder, retModOpts, isOptional: true, module);
}

if (returnType.GetRequiredCustomModifiers() is Type[] retModReqs)
{
Array.Reverse(retModReqs);
WriteCustomModifiers(retModifiersEncoder, retModReqs, isOptional: false, module);
}

WriteSignatureForType(retTypeEncoder.Type(), returnType, module);

Expand All @@ -284,10 +290,16 @@ private static void WriteSignatureForFunctionPointerType(SignatureTypeEncoder si
CustomModifiersEncoder paramModifiersEncoder = paramEncoder.CustomModifiers();

if (paramType.GetOptionalCustomModifiers() is Type[] paramModOpts)
{
Array.Reverse(paramModOpts);
WriteCustomModifiers(paramModifiersEncoder, paramModOpts, isOptional: true, module);
}

if (paramType.GetRequiredCustomModifiers() is Type[] paramModReqs)
{
Array.Reverse(paramModReqs);
WriteCustomModifiers(paramModifiersEncoder, paramModReqs, isOptional: false, module);
}

WriteSignatureForType(paramEncoder.Type(), paramType, module);
}
Expand Down
Loading