X-Git-Url: http://deadsoftware.ru/gitweb?p=dsw-obn.git;a=blobdiff_plain;f=src%2Fbackends%2Fjvm%2Fgenerator-jvm.c;h=90b0e88f777caa2c3731b55241603b971d126af6;hp=9d5e1f4af7d58e970c49a0ad2665e0488ff36488;hb=a0ff807fe0e69c50469e506836467da32f23f754;hpb=776edd758b261bd4f7c5c7cd758edef40e8b4f64 diff --git a/src/backends/jvm/generator-jvm.c b/src/backends/jvm/generator-jvm.c index 9d5e1f4..90b0e88 100644 --- a/src/backends/jvm/generator-jvm.c +++ b/src/backends/jvm/generator-jvm.c @@ -424,7 +424,7 @@ oberon_generate_procedure_pointer_class(oberon_object_t * proc) int cell_size = jvm_cell_size_for_type(proc -> type -> base); jvm_generate(p, use_size, cell_size, "invokestatic %s%s", full_name, signature); - if(proc -> type -> base -> class == OBERON_TYPE_VOID) + if(proc -> type -> base -> class == OBERON_TYPE_NOTYPE) { jvm_generate(p, 0, 0, "return"); } @@ -475,18 +475,23 @@ oberon_generator_init_type(oberon_context_t * ctx, oberon_type_t * type) memset(t, 0, sizeof *t); type -> gen_type = t; - if(type -> class != OBERON_TYPE_VOID) + if(type -> class != OBERON_TYPE_NOTYPE) { t -> wide = jvm_is_wide_type(type); t -> prefix = jvm_get_prefix(type); t -> postfix = jvm_get_postfix(type); } + t -> cell_size = jvm_cell_size_for_type(type); - t -> desc = jvm_get_descriptor(type); + + if(type -> class != OBERON_TYPE_NIL) + { + t -> desc = jvm_get_descriptor(type); + } switch(type -> class) { - case OBERON_TYPE_VOID: + case OBERON_TYPE_NOTYPE: case OBERON_TYPE_INTEGER: case OBERON_TYPE_BOOLEAN: case OBERON_TYPE_ARRAY: @@ -495,6 +500,7 @@ oberon_generator_init_type(oberon_context_t * ctx, oberon_type_t * type) case OBERON_TYPE_CHAR: case OBERON_TYPE_STRING: case OBERON_TYPE_SET: + case OBERON_TYPE_NIL: break; case OBERON_TYPE_RECORD: ;