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.cprint_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.cret=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}