DEADSOFTWARE

Добавлен модуль SYSTEM и тип SYSTEM.TYPE
[dsw-obn.git] / src / backends / jvm / generator-jvm-basic.c
index fac9e0bc0def269786de76b60734d24cceb2fc6e..478a92c6f38cb91acb3c03c3f939c3158023d5f3 100644 (file)
@@ -53,7 +53,7 @@ jvm_get_descriptor(oberon_type_t * type)
 
        switch(type -> class)
        {
-               case OBERON_TYPE_VOID:
+               case OBERON_TYPE_NOTYPE:
                        return new_string("V");
                        break;
                case OBERON_TYPE_INTEGER:
@@ -77,6 +77,9 @@ jvm_get_descriptor(oberon_type_t * type)
                                        break;
                        }
                        break;
+               case OBERON_TYPE_SYSTEM_BYTE:
+                       return new_string("B");
+                       break;
                case OBERON_TYPE_REAL:
                        switch(type -> size)
                        {
@@ -187,6 +190,7 @@ jvm_get_prefix(oberon_type_t * type)
                case OBERON_TYPE_INTEGER:
                case OBERON_TYPE_CHAR:
                case OBERON_TYPE_SET:
+               case OBERON_TYPE_SYSTEM_BYTE:
                        return (size <= 4) ? ('i') : ('l');
                        break;
                case OBERON_TYPE_PROCEDURE:
@@ -194,6 +198,7 @@ jvm_get_prefix(oberon_type_t * type)
                case OBERON_TYPE_RECORD:
                case OBERON_TYPE_POINTER:
                case OBERON_TYPE_STRING:
+               case OBERON_TYPE_NIL:
                        return 'a';
                        break;
                case OBERON_TYPE_REAL:
@@ -236,6 +241,9 @@ jvm_get_postfix(oberon_type_t * type)
                                        break;
                        }
                        break;
+               case OBERON_TYPE_SYSTEM_BYTE:
+                       return 'b';
+                       break;
                case OBERON_TYPE_CHAR:
                        switch(size)
                        {
@@ -261,6 +269,7 @@ jvm_get_postfix(oberon_type_t * type)
                case OBERON_TYPE_RECORD:
                case OBERON_TYPE_POINTER:
                case OBERON_TYPE_STRING:
+               case OBERON_TYPE_NIL:
                        return 'a';
                        break;
                case OBERON_TYPE_REAL:
@@ -364,6 +373,7 @@ jvm_get_class_full_name(oberon_type_t * type)
 
                        int num = type -> num_decl;
                        oberon_object_t * arg = type -> decl;
+
                        for(int i = 0; i < num; i++)
                        {
                                desc = jvm_get_descriptor_safe(arg -> type);
@@ -397,7 +407,7 @@ jvm_cell_size_for_type(oberon_type_t * type)
                        return 2;
                }
        }
-       else if(type -> class == OBERON_TYPE_VOID)
+       else if(type -> class == OBERON_TYPE_NOTYPE)
        {
                return 0;
        }