return;
}
- var binary = assignment.right as BinaryExpression;
+ var binary = (BinaryExpression) assignment.right;
var array = binary.left;
var array_type = (ArrayType) array.value_type;
var element = binary.right;
+ var array_var = assignment.left.symbol_reference;
+ var array_local = array_var as LocalVariable;
+ if (array_type.rank == 1 && array_var != null && array_var.is_internal_symbol ()
+ && ((array_var is LocalVariable && !array_local.captured) || array_var is Field)) {
+ // valid array add
+ } else {
+ Report.error (assignment.source_reference, "Array concatenation not supported for public array variables and parameters");
+ set_cvalue (assignment, new CCodeInvalidExpression ());
+ return;
+ }
+
var value_param = new FormalParameter ("value", element.target_type);
var ccall = new CCodeFunctionCall (new CCodeIdentifier (generate_array_add_wrapper (array_type)));
ccall.add_argument (handle_struct_argument (value_param, element, get_cvalue (element)));
set_cvalue (assignment, ccall);
-
- var array_var = assignment.left.symbol_reference;
- var array_local = array_var as LocalVariable;
- if (array_type.rank == 1 && array_var != null && array_var.is_internal_symbol ()
- && ((array_var is LocalVariable && !array_local.captured) || array_var is Field)) {
- // valid array add
- } else {
- Report.error (assignment.source_reference, "Array concatenation not supported for public array variables");
- }
}
public override CCodeFormalParameter generate_parameter (FormalParameter param, CCodeFile decl_space, Map<int,CCodeFormalParameter> cparam_map, Map<int,CCodeExpression>? carg_map) {