Fix assert failures with extra conformance tests

This commit is contained in:
Petri Häkkinen 2023-11-10 11:39:43 +02:00
parent 574130756f
commit 33c48485f1
3 changed files with 13 additions and 0 deletions

View file

@ -64,6 +64,9 @@ static Constant ctype(const Constant& c)
case Constant::Type_Number: case Constant::Type_Number:
return cstring("number"); return cstring("number");
case Constant::Type_Vector:
return cstring("vector");
case Constant::Type_String: case Constant::Type_String:
return cstring("string"); return cstring("string");

View file

@ -1232,6 +1232,10 @@ struct Compiler
cid = bytecode.addConstantNumber(c->valueNumber); cid = bytecode.addConstantNumber(c->valueNumber);
break; break;
case Constant::Type_Vector:
cid = bytecode.addConstantVector(c->valueVector[0], c->valueVector[1], c->valueVector[2]);
break;
case Constant::Type_String: case Constant::Type_String:
cid = bytecode.addConstantString(sref(c->getString())); cid = bytecode.addConstantString(sref(c->getString()));
break; break;

View file

@ -26,6 +26,12 @@ static bool constantsEqual(const Constant& la, const Constant& ra)
case Constant::Type_Number: case Constant::Type_Number:
return ra.type == Constant::Type_Number && la.valueNumber == ra.valueNumber; return ra.type == Constant::Type_Number && la.valueNumber == ra.valueNumber;
case Constant::Type_Vector:
return ra.type == Constant::Type_Vector &&
la.valueVector[0] == ra.valueVector[0] &&
la.valueVector[1] == ra.valueVector[1] &&
la.valueVector[2] == ra.valueVector[2];
case Constant::Type_String: case Constant::Type_String:
return ra.type == Constant::Type_String && la.stringLength == ra.stringLength && memcmp(la.valueString, ra.valueString, la.stringLength) == 0; return ra.type == Constant::Type_String && la.stringLength == ra.stringLength && memcmp(la.valueString, ra.valueString, la.stringLength) == 0;