From: Simon Werbeck Date: Thu, 25 Feb 2016 23:28:11 +0000 (+0100) Subject: codegen: Fix array length of array returned by lambda X-Git-Tag: 0.35.1~114 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=566ff81b821775c6e178c8c90bcac95d08436c91;p=thirdparty%2Fvala.git codegen: Fix array length of array returned by lambda This ensures that the right default values are used for missing ccode attributes. https://bugzilla.gnome.org/show_bug.cgi?id=761360 --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 0e3a6068e..32f461a9b 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -5495,9 +5495,9 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { var delegate_type = (DelegateType) lambda.target_type; var d = delegate_type.delegate_symbol; - lambda.method.set_attribute_bool ("CCode", "array_length", d.get_attribute_bool ("CCode", "array_length")); - lambda.method.set_attribute_bool ("CCode", "array_null_terminated", d.get_attribute_bool ("CCode", "array_null_terminated")); - lambda.method.set_attribute_string ("CCode", "array_length_type", d.get_attribute_string ("CCode", "array_length_type")); + lambda.method.set_attribute_bool ("CCode", "array_length", get_ccode_array_length (d)); + lambda.method.set_attribute_bool ("CCode", "array_null_terminated", get_ccode_array_null_terminated (d)); + lambda.method.set_attribute_string ("CCode", "array_length_type", get_ccode_array_length_type (d)); lambda.accept_children (this); diff --git a/tests/Makefile.am b/tests/Makefile.am index 941e0184b..7f46a2b0b 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -129,6 +129,7 @@ TESTS = \ delegates/bug639751.vala \ delegates/bug659778.vala \ delegates/bug703804.vala \ + delegates/bug761360.vala \ objects/chainup.vala \ objects/classes.vala \ objects/generics.vala \ diff --git a/tests/delegates/bug761360.vala b/tests/delegates/bug761360.vala new file mode 100644 index 000000000..ba90b69b6 --- /dev/null +++ b/tests/delegates/bug761360.vala @@ -0,0 +1,8 @@ +delegate int[] ArrayReturnFunc (); + +void main () { + ArrayReturnFunc f = () => { return {1, 2, 3}; }; + + var a = f (); + assert (a.length == 3); +}