1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 11:38:21 +02:00

BfConstType_Agg fix for padded FixValues

This commit is contained in:
Brian Fiete 2024-10-14 12:32:48 -04:00
parent 4cee66b1f8
commit 7c0293620a
2 changed files with 44 additions and 3 deletions

View file

@ -886,6 +886,10 @@ void BeIRCodeGen::Read(BeValue*& beValue)
auto constStruct = mBeModule->mOwnedValues.Alloc<BeStructConstant>();
constStruct->mType = type;
if (type->IsStruct())
FixValues((BeStructType*)type, values);
for (int i = 0; i < (int)values.size(); i++)
{
auto val = values[i];
@ -934,9 +938,6 @@ void BeIRCodeGen::Read(BeValue*& beValue)
constStruct->mMemberValues.Add(constant);
}
if (type->IsStruct())
FixValues((BeStructType*)type, constStruct->mMemberValues);
beValue = constStruct;
BE_MEM_END("ParamType_Const_Array");

View file

@ -54,6 +54,40 @@ namespace Tests
}
}
enum EnumH { A, B }
enum EnumI
{
case A;case B;case C;case D;case E;
case F;case G;case H;case I;case J;
case K;case L;case M;case N;case O;
case P;case Q;case R;case S;case T;
case U;case V;case W;case X;case Y;
case Z;case AA;case AB;case AC;case AD;
case AE;case AF;case AG;case AH;case AI;
case AJ;case AK;case AL;case AM;case AN;
case AO;case AP;case AQ;case AR;case AS;
case AT;case AU;case AV;case AW;case AX;
case AY;case AZ;case BA;case BB;case BC;
case BD;case BE;case BF;case BG;case BH;
case BI;case BJ;case BK;case BL;case BM;
case BN;case BO;case BP;case BQ;case BR;
case BS;case BT;case BU;case BV;case BW;
case BX;case BY;case BZ;case CA;case CB;
case CC;case CD;case CE;case CF;case CG;
case CH;case CI;case CJ;case CK;case CL;
case CM;case CN;case CO;case CP;case CQ;
case CR;case CS;case CT;case CU;case CV;
case CW;case CX;case CY;case CZ;case DA;
case DB;case DC;case DD;case DE;case DF;
case DG;case DH;case DI;case DJ;case DK;
case DL;case DM;case DN;case DO;case DP;
case DQ;case DR;case DS;case DT;case DU;
case DV;case DW;case DX;
case DY(EnumH val);
// Started from 129 elements, no less
}
[Test]
static void TestBasic()
{
@ -189,6 +223,12 @@ namespace Tests
var ea = Enum.GetMaxValue<EnumA>();
Test.Assert(ea == .B);
Test.Assert(Enum.GetCount<EnumA>() == 2);
EnumI ei = .DY(.B);
bool foundH = false;
if (ei case .DY(var eh))
foundH = eh == .B;
Test.Assert(foundH);
}
}
}