jvm_alloc_register_untyped(p -> rf, false);
jvm_generate(p, 0, 1, "aload_0");
jvm_generate(p, 1, 0, "invokespecial java/lang/Object/<init>()V");
+
+ /* Инициализация переменных объявленных в модуле */
+ oberon_object_t * x = ctx -> mod -> decl -> list -> next;
+ while(x != NULL)
+ {
+ if(x -> class == OBERON_CLASS_VAR)
+ {
+ if(x -> type -> class == OBERON_TYPE_ARRAY
+ || x -> type -> class == OBERON_TYPE_RECORD)
+ {
+ jvm_generate_new_static(p, x -> type);
+ jvm_generate_store(p, x -> type, x -> gen_var);
+ }
+ }
+ x = x -> next;
+ }
}
void
static char source_test[] =
"(* Main module *)"
"MODULE Test;"
- "TYPE"
- " Packed = ARRAY 16, 32 OF RECORD a : INTEGER; r : RECORD x : INTEGER; END; END;"
- " IArray = ARRAY 16, 32, 666 OF INTEGER;"
"VAR"
- " k : POINTER TO Packed;"
- " ii : POINTER TO IArray;"
+ " g : ARRAY 4 OF INTEGER;"
+ " r : RECORD x : INTEGER; END;"
"BEGIN"
- " NEW(k);"
- " k[1, 2].a := 666;"
- " k[5, 2].r.x := 456;"
- " NEW(ii);"
+ " g[3] := 4;"
+ " r.x := 4546;"
"END Test."
;