diff --git a/generator.c b/generator.c
index b7c24b3968cd780b14e47bc5a26c591179dc8f1a..991b6dd83c416be4d19a81a0722c30f29d6e12d5 100644 (file)
--- a/generator.c
+++ b/generator.c
}
static void
}
static void
-oberon_generator_get_full_name(char * name, int max_len, oberon_object_t * o)
+oberon_generator_get_full_name(char * name, int max_len, oberon_object_t * x)
{
{
- if(!o)
+ if(!x)
{
name[0] = 0;
return;
}
char parent[256];
{
name[0] = 0;
return;
}
char parent[256];
- oberon_generator_get_full_name(parent, 256, o -> parent);
-
- char * xname;
-// if(o -> class == OBERON_CLASS_MODULE)
-// {
-// xname = o -> module -> name;
-// }
-// else
-// {
- xname = o -> name;
-// }
+ parent[0] = 0;
+
+ switch(x -> class)
+ {
+ case OBERON_CLASS_FIELD:
+ case OBERON_CLASS_PARAM:
+ case OBERON_CLASS_VAR_PARAM:
+ /* В локальных областях префиксы излишни */
+ break;
+ default:
+ oberon_generator_get_full_name(parent, 256, x -> parent);
+ break;
+ }
if(strlen(parent) > 0)
{
if(strlen(parent) > 0)
{
- snprintf(name, max_len, "%s_%s", parent, xname);
+ snprintf(name, max_len, "%s_%s", parent, x -> name);
}
else
{
}
else
{
- snprintf(name, max_len, "%s", xname);
+ snprintf(name, max_len, "%s", x -> name);
}
}
}
}