chore: upgrade project dependencies to latest compatible versions across all modules
This commit is contained in:
@@ -221,6 +221,7 @@ static const char* _rava_opcode_name(RavaOpCode_e opcode) {
|
||||
case RAVA_OP_LABEL: return "LABEL";
|
||||
case RAVA_OP_CALL: return "CALL";
|
||||
case RAVA_OP_CALL_STATIC: return "CALL_STATIC";
|
||||
case RAVA_OP_CALL_RECURSIVE: return "CALL_RECURSIVE";
|
||||
case RAVA_OP_RETURN: return "RETURN";
|
||||
case RAVA_OP_RETURN_VOID: return "RETURN_VOID";
|
||||
case RAVA_OP_NEW: return "NEW";
|
||||
@@ -274,6 +275,11 @@ void rava_ir_print(RavaProgram_t *program) {
|
||||
instr->operand.call.class_name,
|
||||
instr->operand.call.method_name);
|
||||
break;
|
||||
case RAVA_OP_CALL_RECURSIVE:
|
||||
printf(" %s.%s (recursive)",
|
||||
instr->operand.call.class_name,
|
||||
instr->operand.call.method_name);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -53,6 +53,7 @@ typedef enum {
|
||||
|
||||
RAVA_OP_CALL,
|
||||
RAVA_OP_CALL_STATIC,
|
||||
RAVA_OP_CALL_RECURSIVE,
|
||||
RAVA_OP_CALL_VIRTUAL,
|
||||
RAVA_OP_CALL_SUPER,
|
||||
RAVA_OP_CALL_NATIVE,
|
||||
@@ -139,6 +140,7 @@ typedef union {
|
||||
char *class_name;
|
||||
char *method_name;
|
||||
int arg_count;
|
||||
void *cached_method;
|
||||
} call;
|
||||
struct {
|
||||
char *class_name;
|
||||
|
||||
+6
-1
@@ -747,8 +747,13 @@ static void _rava_ir_gen_expression(RavaIRGenerator_t *gen, RavaASTNode_t *expr)
|
||||
}
|
||||
instr.opcode = RAVA_OP_CALL_STATIC;
|
||||
if (expr->data.call.callee->type == RAVA_AST_IDENTIFIER_EXPR) {
|
||||
const char *method_name = expr->data.call.callee->data.identifier.name;
|
||||
if (gen->current_method && strcmp(gen->current_method->name, method_name) == 0) {
|
||||
instr.opcode = RAVA_OP_CALL_RECURSIVE;
|
||||
instr.operand.call.cached_method = (void*)gen->current_method;
|
||||
}
|
||||
instr.operand.call.class_name = strdup(gen->current_class->name);
|
||||
instr.operand.call.method_name = strdup(expr->data.call.callee->data.identifier.name);
|
||||
instr.operand.call.method_name = strdup(method_name);
|
||||
instr.operand.call.arg_count = expr->data.call.arguments_count;
|
||||
}
|
||||
_rava_ir_emit(gen, instr);
|
||||
|
||||
Reference in New Issue
Block a user