diff options
author | Corentin Noël <corentin@elementary.io> | 2020-11-07 20:31:19 +0100 |
---|---|---|
committer | Corentin Noël <corentin@elementary.io> | 2020-11-07 20:31:19 +0100 |
commit | 29cd3f07cb6e06685232d301d3e50507e5f9ef60 (patch) | |
tree | 8792fe097a38a0f703e83278342a81e44e620f96 | |
parent | e971bc791d94255e9195c9633878b74e2dd6131a (diff) | |
download | vala-tintou/ptr-array-foreach.tar.gz |
Go back to version 1tintou/ptr-array-foreach
-rw-r--r-- | codegen/valaccodecontrolflowmodule.vala | 11 | ||||
-rw-r--r-- | tests/control-flow/foreach.vala | 4 |
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++; } |