summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorentin Noël <corentin@elementary.io>2020-11-07 20:31:19 +0100
committerCorentin Noël <corentin@elementary.io>2020-11-07 20:31:19 +0100
commit29cd3f07cb6e06685232d301d3e50507e5f9ef60 (patch)
tree8792fe097a38a0f703e83278342a81e44e620f96
parente971bc791d94255e9195c9633878b74e2dd6131a (diff)
downloadvala-tintou/ptr-array-foreach.tar.gz
Go back to version 1tintou/ptr-array-foreach
-rw-r--r--codegen/valaccodecontrolflowmodule.vala11
-rw-r--r--tests/control-flow/foreach.vala4
2 files changed, 4 insertions, 11 deletions
diff --git a/codegen/valaccodecontrolflowmodule.vala b/codegen/valaccodecontrolflowmodule.vala
index 7736db71d..4db4e5def 100644
--- a/codegen/valaccodecontrolflowmodule.vala
+++ b/codegen/valaccodecontrolflowmodule.vala
@@ -328,17 +328,10 @@ public abstract class Vala.CCodeControlFlowModule : CCodeMethodModule {
CCodeExpression element_expr = get_item;
- if (collection_type.get_type_arguments ().size != 1) {
- Report.error (stmt.source_reference, "internal error: missing generic type argument");
- stmt.error = true;
- return;
+ if (stmt.type_reference.value_owned) {
+ element_expr = get_cvalue_ (copy_value (new GLibValue (stmt.type_reference, element_expr), new StructValueType (gvalue_type)));
}
- var element_data_type = collection_type.get_type_arguments ().get (0).copy ();
- element_data_type.value_owned = false;
- element_expr = convert_from_generic_pointer (element_expr, element_data_type);
- element_expr = get_cvalue_ (transform_value (new GLibValue (element_data_type, element_expr), stmt.type_reference, stmt));
-
visit_local_variable (stmt.element_variable);
ccode.add_assignment (get_variable_cexpression (get_local_cname (stmt.element_variable)), element_expr);
diff --git a/tests/control-flow/foreach.vala b/tests/control-flow/foreach.vala
index da169f187..052e03d3c 100644
--- a/tests/control-flow/foreach.vala
+++ b/tests/control-flow/foreach.vala
@@ -36,7 +36,7 @@ void test_foreach_gvaluearray () {
void test_generic_array_owned (GenericArray<Value?> array) {
uint i = 0;
- foreach (Value item in array) {
+ foreach (Value? item in array) {
i++;
}
@@ -46,7 +46,7 @@ void test_generic_array_owned (GenericArray<Value?> array) {
void test_generic_array_unowned (GenericArray<Value?> array) {
uint i = 0;
- foreach (unowned Value item in array) {
+ foreach (unowned Value? item in array) {
i++;
}