- # TODO Do this at an earlier pass
- if isinstance(statement.expression, transformation.CVariableExpression):
- return '';
-
- # TODO Do we need to garbage collect the results of arbitrary statements?
- return '{};'.format(generate_expression(statement.expression))
-
-def generate_symbol_assignment_statement(c_assignment_statement):
- return 'Environment_set(&environment, SYMBOL_LIST[{}] /* symbol: {} */, {});'.format(
- c_assignment_statement.target_symbol_list_index,
- c_assignment_statement.target,
- generate_expression(c_assignment_statement.expression),
+ return 'Object_deinitialize(&({}));'.format(generate_expression(statement.expression))
+
+def generate_symbol_assignment_statement(statement):
+ return 'Environment_set(environment, SYMBOL_LIST[{}] /* symbol: {} */, {});'.format(
+ statement.target_symbol_list_index,
+ statement.target,
+ generate_expression(statement.expression),