DEADSOFTWARE

JVM: наличие VAR-парамеров отражается в имени класса процедур
[dsw-obn.git] / src / backends / jvm / generator-jvm-basic.c
index 2baed6556849dc01aa1d61d9fda6836cccf7642c..61088af9bfb6a30b372fe071e85a30b4387d1dc8 100644 (file)
@@ -7,7 +7,6 @@
 
 #include <gc.h>
 
-#include "../../../include/oberon.h"
 #include "../../oberon-internals.h"
 #include "generator-jvm.h"
 #include "generator-jvm-basic.h"
@@ -376,6 +375,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);
 
@@ -384,8 +384,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;
                        }
 
@@ -441,7 +446,7 @@ jvm_cell_size_for_postfix(char postfix)
                case 'd':
                        return 2;
                default:
-                       gen_error("jvm_cell_size_for_postfix: unk postfix %c", postfix);
+                       gen_error("jvm_cell_size_for_postfix: unk postfix %c (%i)", postfix, postfix);
        }
 
        return -666;