1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 19:48:20 +02:00

Made 'in' mangle as 'const&'

This commit is contained in:
Brian Fiete 2021-01-28 05:41:34 -08:00
parent cf9890349d
commit 52a8aca30d
2 changed files with 12 additions and 12 deletions

View file

@ -535,18 +535,16 @@ void BfGNUMangler::Mangle(MangleContext& mangleContext, StringImpl& name, BfType
else if (type->IsRef())
{
BfRefType* refType = (BfRefType*)type;
if ((refType->mRefKind == BfRefType::RefKind_Mut) && (!mangleContext.mCCompat))
if (refType->mRefKind == BfRefType::RefKind_In)
{
isConst = true;
}
else if ((refType->mRefKind == BfRefType::RefKind_Mut) && (!mangleContext.mCCompat))
{
name += "U3mut";
Mangle(mangleContext, name, refType->mElementType);
return;
}
else if ((refType->mRefKind == BfRefType::RefKind_In) && (!mangleContext.mCCompat))
{
name += "U2in";
Mangle(mangleContext, name, refType->mElementType);
return;
}
else if ((refType->mRefKind == BfRefType::RefKind_Out) && (!mangleContext.mCCompat))
{
name += "U3out";
@ -1649,14 +1647,12 @@ void BfMSMangler::Mangle(MangleContext& mangleContext, StringImpl& name, BfType*
name += "A";
if (mangleContext.mIs64Bit)
name += "E";
if (isConst)
if ((isConst) || (refType->mRefKind == BfRefType::RefKind_In))
name += "B";
else
name += "A";
if (refType->mRefKind == BfRefType::RefKind_Mut)
name += "mut$";
else if (refType->mRefKind == BfRefType::RefKind_In)
name += "in$";
else if (refType->mRefKind == BfRefType::RefKind_Out)
name += "out$";
Mangle(mangleContext, name, refType->mElementType);

View file

@ -19,6 +19,9 @@ namespace Tests
[LinkName(.CPP)]
[return: MangleConst]
public extern ref float MethodA2([MangleConst]ref float val);
[LinkName(.CPP)]
[return: MangleConst]
public extern ref float MethodA3(in float val);
}
[CRepr]
@ -399,6 +402,7 @@ namespace Tests
Test.Assert(StructA.sVal == 1234);
float f = 123;
Test.Assert(sa0.MethodA2(ref f) == 123);
Test.Assert(sa0.MethodA3(f) == 123);
StartTest("Func0");
Test.Assert(Func0(12, 34) == 3412);