From: Rico Tzschichholz Date: Fri, 5 Feb 2016 08:08:12 +0000 (+0100) Subject: codegen: Properly handle DelegateType in get_ccode_lower_case_name() X-Git-Tag: 0.31.1~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=31309c72fa8efc14dacd819e9049844470fad567;p=thirdparty%2Fvala.git codegen: Properly handle DelegateType in get_ccode_lower_case_name() --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 0f79235bd..bd4ecbff2 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -6066,6 +6066,9 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { } else { return get_ccode_lower_case_name (type.error_code, infix); } + } else if (node is DelegateType) { + var type = (DelegateType) node; + return get_ccode_lower_case_name (type.delegate_symbol, infix); } else { var type = (DataType) node; return get_ccode_lower_case_name (type.data_type, infix); diff --git a/tests/basic-types/arrays.vala b/tests/basic-types/arrays.vala index 00a7164e7..e9143b4db 100644 --- a/tests/basic-types/arrays.vala +++ b/tests/basic-types/arrays.vala @@ -120,6 +120,22 @@ void test_inline_array () { assert (1 in a); } +[CCode (has_target = false)] +delegate int SimpleFunc (); +SimpleFunc[] simple_delegates; + +int simple_func () { + return 0; +} + +void test_delegate_array () { + SimpleFunc[] a = {}; + a = (owned) simple_delegates; + a += (SimpleFunc) simple_func; + assert (a.length == 1); + assert (simple_func in a); +} + void main () { test_integer_array (); test_string_array (); @@ -128,4 +144,5 @@ void main () { test_reference_transfer (); test_length_assignment (); test_inline_array (); + test_delegate_array (); }