1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 11:38:21 +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()) else if (type->IsRef())
{ {
BfRefType* refType = (BfRefType*)type; 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"; name += "U3mut";
Mangle(mangleContext, name, refType->mElementType); Mangle(mangleContext, name, refType->mElementType);
return; 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)) else if ((refType->mRefKind == BfRefType::RefKind_Out) && (!mangleContext.mCCompat))
{ {
name += "U3out"; name += "U3out";
@ -1649,14 +1647,12 @@ void BfMSMangler::Mangle(MangleContext& mangleContext, StringImpl& name, BfType*
name += "A"; name += "A";
if (mangleContext.mIs64Bit) if (mangleContext.mIs64Bit)
name += "E"; name += "E";
if (isConst) if ((isConst) || (refType->mRefKind == BfRefType::RefKind_In))
name += "B"; name += "B";
else else
name += "A"; name += "A";
if (refType->mRefKind == BfRefType::RefKind_Mut) if (refType->mRefKind == BfRefType::RefKind_Mut)
name += "mut$"; name += "mut$";
else if (refType->mRefKind == BfRefType::RefKind_In)
name += "in$";
else if (refType->mRefKind == BfRefType::RefKind_Out) else if (refType->mRefKind == BfRefType::RefKind_Out)
name += "out$"; name += "out$";
Mangle(mangleContext, name, refType->mElementType); Mangle(mangleContext, name, refType->mElementType);

View file

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