X-Git-Url: http://deadsoftware.ru/gitweb?p=dsw-obn.git;a=blobdiff_plain;f=src%2Fbackends%2Fjvm%2Fgenerator-jvm-basic.c;h=865ffdd4177f7625fb1f5fdef57b2f3ba6c0cb39;hp=d092f8e799aa1d38af2f368cb0d5840026fb1329;hb=7bb96abf74bcb31d9a3ecb820b0b6565813bf324;hpb=961fbb99dcba21ccb737db16c0cdb28d757a2de7 diff --git a/src/backends/jvm/generator-jvm-basic.c b/src/backends/jvm/generator-jvm-basic.c index d092f8e..865ffdd 100644 --- a/src/backends/jvm/generator-jvm-basic.c +++ b/src/backends/jvm/generator-jvm-basic.c @@ -205,6 +205,27 @@ jvm_get_field_full_name(oberon_object_t * x) return NULL; } +char * +jvm_get_field_full_name_safe(oberon_object_t * x) +{ + switch(x -> class) + { + case OBERON_CLASS_VAR: + case OBERON_CLASS_PROC: + return new_string("%s$%s", x -> module -> name, x -> name); + case OBERON_CLASS_FIELD:; + char * rec_name = jvm_get_class_full_name(x -> parent_type); + return new_string("%s$%s", rec_name, x -> name); + case OBERON_CLASS_MODULE: + return new_string(x -> module -> name); + default: + gen_error("jvm_get_field_full_name: wat"); + break; + } + + return NULL; +} + char * jvm_get_class_full_name(oberon_type_t * type) {