X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fbackends%2Fjvm%2Fgenerator-jvm-basic.c;h=033b84227d1eebfb4bbda213e94e19e889229f78;hb=0c29ba1953327a9b476a825d8b9b9d185d544972;hp=855a61722c677d750a8bd84ea2fe27a1652e2723;hpb=10288ed60f876a14746b17976fd9d84ed58042cc;p=dsw-obn.git diff --git a/src/backends/jvm/generator-jvm-basic.c b/src/backends/jvm/generator-jvm-basic.c index 855a617..033b842 100644 --- a/src/backends/jvm/generator-jvm-basic.c +++ b/src/backends/jvm/generator-jvm-basic.c @@ -191,6 +191,9 @@ jvm_get_prefix(oberon_type_t * type) int size = type -> size; switch(type -> class) { + case OBERON_TYPE_NOTYPE: + return ' '; + break; case OBERON_TYPE_BOOLEAN: case OBERON_TYPE_INTEGER: case OBERON_TYPE_CHAR: @@ -223,6 +226,9 @@ jvm_get_postfix(oberon_type_t * type) int size = type -> size; switch(type -> class) { + case OBERON_TYPE_NOTYPE: + return ' '; + break; case OBERON_TYPE_BOOLEAN: return 'b'; break; @@ -375,6 +381,7 @@ jvm_get_class_full_name(oberon_type_t * type) name = new_string("SYSTEM$PROCEDURE"); char * desc; + char * spec; desc = jvm_get_descriptor_safe(type -> base); name = new_string("%s$%s", name, desc); @@ -383,8 +390,13 @@ jvm_get_class_full_name(oberon_type_t * type) for(int i = 0; i < num; i++) { + spec = ""; + if(arg -> class == OBERON_CLASS_VAR_PARAM) + { + spec = "VAR"; + } desc = jvm_get_descriptor_safe(arg -> type); - name = new_string("%s%s", name, desc); + name = new_string("%s%s%s", name, spec, desc); arg = arg -> next; } @@ -430,6 +442,8 @@ jvm_cell_size_for_postfix(char postfix) { switch(postfix) { + case ' ': + return 0; case 'a': case 'b': case 's': @@ -517,6 +531,8 @@ jvm_get_type_of_prefix(char prefix) { switch(prefix) { + case ' ': + return 'V'; case 'b': return 'B'; case 'c':