}
else if(type -> class == OBERON_TYPE_RECORD)
{
- gcc_struct = gcc_jit_context_new_opaque_struct(gcc_context, NULL, "");
+ char name[32];
+ snprintf(name, 32, "RECORD%u", gen_context -> record_count);
+ gen_context -> record_count += 1;
+
+ gcc_struct = gcc_jit_context_new_opaque_struct(gcc_context, NULL, name);
gcc_type = gcc_jit_struct_as_type(gcc_struct);
}
else if(type -> class == OBERON_TYPE_POINTER)
- нету процедуры NEW
- нету открытых массивов
-- нету секции import
+- нету секции import + identdef + qualident
- нету операторов if, while и т.д.
- libgccjit не умеет в локальные функции (опять пилить костыли как в jvm)
- не понятен результат присваивания статических/разыменованных структур (* reca := recb; *)
- не понятен результат присваивания статических/разыменованных массивов (* arr1 := arr2; *)
+
+- нету счёта строк
+- любая ошибка фатальна
{
oberon_error(ctx, "mult procedure definition");
}
-
- oberon_compare_signatures(ctx, proc -> type, signature);
}
+
+ oberon_compare_signatures(ctx, proc -> type, signature);
}
else
{
gcc_jit_context * gcc_context;
gcc_jit_result * gcc_result;
gen_block_t * block;
+ unsigned record_count;
};
typedef struct oberon_type_s oberon_type_t;