diff --git a/generator.c b/generator.c
index 991b6dd83c416be4d19a81a0722c30f29d6e12d5..ff4896d3880de3b018213680a62c216a192e05da 100644 (file)
--- a/generator.c
+++ b/generator.c
return;
}
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:
/* В локальных областях префиксы излишни */
switch(x -> class)
{
case OBERON_CLASS_FIELD:
case OBERON_CLASS_PARAM:
case OBERON_CLASS_VAR_PARAM:
/* В локальных областях префиксы излишни */
+ add_module_prefix = 0;
break;
default:
break;
default:
- oberon_generator_get_full_name(parent, 256, x -> parent);
+ add_module_prefix = 1;
break;
}
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);
}
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);
else
{
snprintf(name, max_len, "%s", x -> name);