diff --git a/src/oberon.c b/src/oberon.c
index 0fff8d7ba4c791846d662f1a6e728c6b2fbfe883..365f47d6a107ac047dbe13e5f3293a5ea138123d 100644 (file)
--- a/src/oberon.c
+++ b/src/oberon.c
oberon_object_t * x = list;
while(x -> next && strcmp(x -> next -> name, name) != 0)
{
+ printf("inlist: '%s' != '%s'\n", x -> next -> name, name);
x = x -> next;
}
return x -> next;
static oberon_object_t *
oberon_create_object(oberon_scope_t * scope, char * name, int class, bool export, bool read_only)
{
+ printf("oberon_create_object: '%s'\n", name);
oberon_object_t * newvar = GC_MALLOC(sizeof *newvar);
memset(newvar, 0, sizeof *newvar);
newvar -> name = name;
@@ -316,6 +318,7 @@ oberon_define_object(oberon_scope_t * scope, char * name, int class, bool export
oberon_object_t * x = scope -> list;
while(x -> next && strcmp(x -> next -> name, name) != 0)
{
+ printf("inlist: '%s' != '%s'\n", x -> next -> name, name);
x = x -> next;
}
@@ -1047,10 +1050,14 @@ oberon_cast_expr(oberon_context_t * ctx, oberon_expr_t * expr, oberon_type_t * p
cast = oberon_new_item(MODE_CHAR, ctx -> char_type, true);
cast -> item.integer = expr -> item.string[0];
}
- else
+ else if(!oberon_is_some_types(expr -> result, pref))
{
cast = oberon_new_operator(OP_CAST, pref, expr, NULL);
}
+ else
+ {
+ cast = expr;
+ }
return cast;
}