Better stringification of bytecode values

This commit is contained in:
2026-07-28 19:41:32 +10:00
parent 57e2f2eea9
commit 65cf5580ac

View File

@@ -64,6 +64,9 @@ char* _GroundStringifyBytecodeValue(GroundBytecodeValue* value) {
Estr str = CREATE_ESTR("<struct fields: { ");
for (GroundSize i = 0; i < value->as.Struct.size; i++) {
char* field = Ground.Stringify.BytecodeValue(&value->as.Struct.values[i]);
if (i != 0) {
APPEND_ESTR(str, ", ");
}
APPEND_ESTR(str, field);
free(field);
}
@@ -84,14 +87,55 @@ char* _GroundStringifyBytecodeValue(GroundBytecodeValue* value) {
return str.str;
}
case GroundType_CoreType: {
char* buf = malloc(sizeof("<CoreType>"));
if (buf == NULL) {
Ground.Flags.error = true;
Ground.Log.Error("malloc failed in Ground.Stringify.Value");
return NULL;
Estr str = CREATE_ESTR("<CoreType ");
switch (value->as.CoreType) {
case GroundType_Undefined: {
APPEND_ESTR(str, "Undefined");
break;
}
sprintf(buf, "<CoreType>");
return buf;
case GroundType_Int: {
APPEND_ESTR(str, "Int");
break;
}
case GroundType_Double: {
APPEND_ESTR(str, "Double");
break;
}
case GroundType_Char: {
APPEND_ESTR(str, "Char");
break;
}
case GroundType_Bool: {
APPEND_ESTR(str, "Bool");
break;
}
case GroundType_String: {
APPEND_ESTR(str, "String");
break;
}
case GroundType_List: {
APPEND_ESTR(str, "List");
break;
}
case GroundType_Function: {
APPEND_ESTR(str, "Function");
break;
}
case GroundType_Struct: {
APPEND_ESTR(str, "Struct");
break;
}
case GroundType_Object: {
APPEND_ESTR(str, "Object");
break;
}
case GroundType_CoreType: {
APPEND_ESTR(str, "CoreType");
break;
}
}
APPEND_ESTR(str, ">");
return str.str;
}
case GroundType_Undefined: {
char* buf = malloc(sizeof("<Undefined>"));