Fixes bug 624036.
bool fixed_element_type = false;
if (target_type != null && target_type.data_type == list_type.data_type && target_type.get_type_arguments ().size == 1) {
element_type = target_type.get_type_arguments ().get (0).copy ();
+ element_type.value_owned = false;
fixed_element_type = true;
}
}
if (element_type == null) {
element_type = expr.value_type.copy ();
+ element_type.value_owned = false;
}
}
+ element_type = element_type.copy ();
element_type.value_owned = true;
list_type.add_type_argument (element_type);
value_type = list_type;
bool fixed_element_type = false;
if (target_type != null && target_type.data_type == map_type.data_type && target_type.get_type_arguments ().size == 2) {
map_key_type = target_type.get_type_arguments ().get (0).copy ();
+ map_key_type.value_owned = false;
map_value_type = target_type.get_type_arguments ().get (1).copy ();
+ map_value_type.value_owned = false;
fixed_element_type = true;
}
}
if (map_key_type == null) {
map_key_type = keys[i].value_type.copy ();
+ map_key_type.value_owned = false;
map_value_type = values[i].value_type.copy ();
+ map_value_type.value_owned = false;
}
}
+ map_key_type = map_key_type.copy ();
map_key_type.value_owned = true;
+ map_value_type = map_value_type.copy ();
map_value_type.value_owned = true;
map_type.add_type_argument (map_key_type);
map_type.add_type_argument (map_value_type);
bool fixed_element_type = false;
if (target_type != null && target_type.data_type == set_type.data_type && target_type.get_type_arguments ().size == 1) {
element_type = target_type.get_type_arguments ().get (0).copy ();
+ element_type.value_owned = false;
fixed_element_type = true;
}
}
if (element_type == null) {
element_type = expr.value_type.copy ();
+ element_type.value_owned = false;
}
}
+ element_type = element_type.copy ();
element_type.value_owned = true;
set_type.add_type_argument (element_type);
value_type = set_type;