runtime tests for relational operators

This commit is contained in:
Francesco Cozzuto
2023-01-23 13:17:34 +01:00
parent f7a2cb0611
commit d786d7d1fd
89 changed files with 1207 additions and 5 deletions
+4 -2
View File
@@ -458,8 +458,10 @@ Executable *assemble(Source *src, Error *error, int *error_offset)
assert(ctx.cur == ctx.len || ctx.str[ctx.cur] == ';');
if(ctx.cur < ctx.len) ctx.cur += 1;
if(!ExeBuilder_Append(builder, error, opcode, opv, opc, opcode_name.offset, opcode_name.length))
if(!ExeBuilder_Append(builder, error, opcode, opv, opc, opcode_name.offset, opcode_name.length)) {
*error_offset = ctx.cur;
goto done;
}
}
size_t unresolved_count = LabelList_GetUnresolvedCount(list);
@@ -470,7 +472,7 @@ Executable *assemble(Source *src, Error *error, int *error_offset)
}
exe = ExeBuilder_Finalize(builder, error);
if(exe != NULL)
(void) Executable_SetSource(exe, src);
+8 -2
View File
@@ -1137,7 +1137,10 @@ int runSource(Runtime *runtime, Source *source, Object *rets[static MAX_RETS], E
int error_offset;
Executable *exe = compile(source, error, &error_offset);
if(exe == NULL) {
Runtime_PushFailedFrame(runtime, error, source, error_offset); // If this fails, there's nothing we can do
Error suberror;
Error_Init(&suberror);
Runtime_PushFailedFrame(runtime, &suberror, source, error_offset); // If this fails, there's nothing we can do
Error_Free(&suberror);
return -1;
}
@@ -1152,7 +1155,10 @@ int runBytecodeSource(Runtime *runtime, Source *source, Object *rets[static MAX_
int error_offset;
Executable *exe = assemble(source, error, &error_offset);
if(exe == NULL) {
Runtime_PushFailedFrame(runtime, error, source, error_offset); // If this fails, there's nothing we can do
Error suberror;
Error_Init(&suberror);
Runtime_PushFailedFrame(runtime, &suberror, source, error_offset); // If this fails, there's nothing we can do
Error_Free(&suberror);
return -1;
}
+1 -1
View File
@@ -620,7 +620,7 @@ bool Runtime_PushFailedFrame(Runtime *runtime, Error *error, Source *source, int
failed_frame->base.type = FrameType_FAILED;
failed_frame->base.prev = NULL;
failed_frame->source = source;
failed_frame->source = source_copy;
failed_frame->offset = offset;
if (!appendFrame(runtime, error, (Frame*) failed_frame)) {