}
if (assignment.operator == AssignmentOperator.SIMPLE) {
- store_value (assignment.left.target_value, assignment.right.target_value);
+ store_value (assignment.left.target_value, assignment.right.target_value, assignment.source_reference);
} else {
CCodeAssignmentOperator cop;
if (assignment.operator == AssignmentOperator.BITWISE_OR) {
}
}
- public override void store_value (TargetValue lvalue, TargetValue value) {
+ public override void store_value (TargetValue lvalue, TargetValue value, SourceReference? source_reference = null) {
var array_type = lvalue.value_type as ArrayType;
if (array_type != null && array_type.fixed_length) {
}
}
- public override void store_local (LocalVariable local, TargetValue value, bool initializer) {
+ public override void store_local (LocalVariable local, TargetValue value, bool initializer, SourceReference? source_reference = null) {
if (!initializer && requires_destroy (local.variable_type)) {
/* unref old value */
ccode.add_expression (destroy_local (local));
}
- store_value (get_local_cvalue (local), value);
+ store_value (get_local_cvalue (local), value, source_reference);
}
- public override void store_parameter (Parameter param, TargetValue _value, bool capturing_parameter = false) {
+ public override void store_parameter (Parameter param, TargetValue _value, bool capturing_parameter = false, SourceReference? source_reference = null) {
var value = _value;
bool capturing_parameter_in_coroutine = capturing_parameter && is_in_coroutine ();
ccode.add_expression (destroy_parameter (param));
}
- store_value (get_parameter_cvalue (param), value);
+ store_value (get_parameter_cvalue (param), value, source_reference);
}
- public override void store_field (Field field, TargetValue? instance, TargetValue value) {
+ public override void store_field (Field field, TargetValue? instance, TargetValue value, SourceReference? source_reference = null) {
var lvalue = get_field_cvalue (field, instance);
var type = lvalue.value_type;
if (lvalue.actual_value_type != null) {
ccode.add_expression (destroy_field (field, instance));
}
- store_value (lvalue, value);
+ store_value (lvalue, value, source_reference);
}
}
*/
public TargetValue store_temp_value (TargetValue initializer, CodeNode node_reference, bool? value_owned = null) {
var lvalue = create_temp_value (initializer.value_type, false, node_reference, value_owned);
- store_value (lvalue, initializer);
+ store_value (lvalue, initializer, node_reference.source_reference);
return load_temp_value (lvalue);
}
public abstract TargetValue load_this_parameter (TypeSymbol sym);
- public abstract void store_value (TargetValue lvalue, TargetValue value);
+ public abstract void store_value (TargetValue lvalue, TargetValue value, SourceReference? source_reference = null);
public virtual string get_delegate_target_cname (string delegate_cname) {
assert_not_reached ();
ccode.add_else ();
// g_value_init/copy must not be called for uninitialized values
- store_value (temp_value, value);
+ store_value (temp_value, value, node.source_reference);
ccode.close ();
} else {
ccode.add_expression (copy_call);
} else {
var temp_value = create_temp_value (type, false, node);
temp_ref_values.insert (0, ((GLibValue) temp_value).copy ());
- store_value (temp_value, result);
+ store_value (temp_value, result, node.source_reference);
result.cvalue = get_cvalue_ (temp_value);
}
}
}
// assign new value
- store_value (unary.inner.target_value, transform_value (unary.target_value, unary.inner.value_type, arg));
+ store_value (unary.inner.target_value, transform_value (unary.target_value, unary.inner.value_type, arg), expr.source_reference);
// handle out null terminated arrays
if (param != null && get_ccode_array_null_terminated (param)) {
var new_value = right.target_value;
if (local != null) {
- codegen.store_local (local, new_value, false);
+ codegen.store_local (local, new_value, false, source_reference);
} else if (param != null) {
- codegen.store_parameter (param, new_value);
+ codegen.store_parameter (param, new_value, false, source_reference);
} else if (field != null) {
- codegen.store_field (field, instance && ma.inner != null ? ma.inner.target_value : null, new_value);
+ codegen.store_field (field, instance && ma.inner != null ? ma.inner.target_value : null, new_value, source_reference);
}
if (!(parent_node is ExpressionStatement)) {
public abstract TargetValue load_local (LocalVariable local);
- public abstract void store_local (LocalVariable local, TargetValue value, bool initializer);
+ public abstract void store_local (LocalVariable local, TargetValue value, bool initializer, SourceReference? source_reference = null);
public abstract TargetValue load_parameter (Parameter param);
- public abstract void store_parameter (Parameter param, TargetValue value, bool capturing_parameter = false);
+ public abstract void store_parameter (Parameter param, TargetValue value, bool capturing_parameter = false, SourceReference? source_reference = null);
public abstract TargetValue load_field (Field field, TargetValue? instance);
- public abstract void store_field (Field field, TargetValue? instance, TargetValue value);
+ public abstract void store_field (Field field, TargetValue? instance, TargetValue value, SourceReference? source_reference = null);
}