DEADSOFTWARE

Исправлен экспорт полей и экспорт для "только чтения"
[dsw-obn.git] / generator.c
index 991b6dd83c416be4d19a81a0722c30f29d6e12d5..ff4896d3880de3b018213680a62c216a192e05da 100644 (file)
@@ -161,25 +161,31 @@ oberon_generator_get_full_name(char * name, int max_len, oberon_object_t * x)
                return;
        }
 
-       char parent[256];
-       parent[0] = 0;
-
+       int add_module_prefix;
        switch(x -> class)
        {
                case OBERON_CLASS_FIELD:
                case OBERON_CLASS_PARAM:
                case OBERON_CLASS_VAR_PARAM:
                        /* В локальных областях префиксы излишни */
+                       add_module_prefix = 0;
                        break;
                default:
-                       oberon_generator_get_full_name(parent, 256, x -> parent);
+                       add_module_prefix = 1;
                        break;
        }
 
+       char parent[256];
+       oberon_generator_get_full_name(parent, 256, x -> parent);
+
        if(strlen(parent) > 0)
        {
                snprintf(name, max_len, "%s_%s", parent, x -> name);
        }
+       else if(add_module_prefix)
+       {
+               snprintf(name, max_len, "%s_%s", x -> module -> name, x -> name);
+       }
        else
        {
                snprintf(name, max_len, "%s", x -> name);