F diff --git a/src/backend/print/print.c b/src/backend/print/print.c
--- a/src/backend/print/print.c
+++ b/src/backend/print/print.c
print_type(out,((struct Denoted_Function*)denoted)->type,1);
return;
case DT_Enum:
- print_token(out,((struct Denoted_Enum*)denoted)->id);
+ print_token(out,((struct Denoted_Enum*)denoted)->enumeration->id);
fprintf(out," is ");
print_enumeration(out,((struct Denoted_Enum*)denoted)->enumeration);
return;
fprintf(out,"%i ",((struct Denoted_Enum_Const*)denoted)->value);
return;
case DT_Struct_Union_Tag:
- print_token(out,((struct Denoted_Struct_Union*)denoted)->id);
+ print_token(out,((struct Denoted_Struct_Union*)denoted)->struct_union->id);
fprintf(out," is ");
print_struct_union(out,((struct Denoted_Struct_Union*)denoted)->struct_union);
case DT_Error:
F diff --git a/src/semantics/ast.c b/src/semantics/ast.c
--- a/src/semantics/ast.c
+++ b/src/semantics/ast.c
ret=malloc(sizeof(struct AST_Unary_Expression));
ret->type=OP_CAST;
- ret->value=get_expression_value_temp_value(get_temp_object(extract_expresion_value_type(operand->value,translation_data)));
+ ret->value=get_expression_value_rvalue(get_temp_object(extract_expresion_value_type(operand->value,translation_data)));
ret->operand=operand;
return ret;
ret=malloc(sizeof(struct AST_Unary_Expression));
ret->type=OP_SIZEOF;
- ret->value=get_expression_value_temp_value(get_temp_object(type));
+ ret->value=get_expression_value_rvalue(get_temp_object(type));
ret->operand=NULL;
return ret;
}
if(left_type->specifier!=TS_POINTER)
{push_translation_error("expected pointer in array subscript",translation_data);return NULL;}
- member_type=left_type->points_to;
+ member_type=((struct Type_Pointer*)left_type)->points_to;
if(!type_is_of_object(member_type))
{push_translation_error("expected pointer to object type in array subscript",translation_data);return NULL;}
struct AST_Binary_Expression* get_struct_union_member_trough_ptr_tree(struct AST_Expression *left,struct token *id,struct Translation_Data *translation_data)
{
struct Type *left_type;
- struct Type_Struct_Union *struct_union_type;
+ struct Type *struct_union_type;
left_type=extract_expresion_value_type(left->value,translation_data);
if(left_type->specifier!=TS_POINTER)
{push_translation_error("expected pointer in member trough ptr access",translation_data);return NULL;}
- struct_union_type=left_type->points_to;
+ struct_union_type=((struct Type_Pointer*)left_type)->points_to;
+
if(type_is_struct_union(struct_union_type))
{push_translation_error("expected pointer to struct or union in member trough ptr access",translation_data);return NULL;}
- struct_union_type->struct_union->inner_namespace
+ ((struct Type_Struct_Union*)struct_union_type)->struct_union->inner_namespace
}