From: Rico Tzschichholz Date: Fri, 5 Feb 2016 14:14:19 +0000 (+0100) Subject: codegen: Properly handle GenericType in get_ccode_lower_case_name() X-Git-Tag: 0.31.1~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8983406e5dfa37df9a5371830168b3bf70f095ad;p=thirdparty%2Fvala.git codegen: Properly handle GenericType in get_ccode_lower_case_name() --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index bd4ecbff2..ae18ce5fe 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -6069,6 +6069,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { } else if (node is DelegateType) { var type = (DelegateType) node; return get_ccode_lower_case_name (type.delegate_symbol, infix); + } else if (node is GenericType) { + return "valageneric"; } 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 e9143b4db..b3a7bafc0 100644 --- a/tests/basic-types/arrays.vala +++ b/tests/basic-types/arrays.vala @@ -136,6 +136,53 @@ void test_delegate_array () { assert (simple_func in a); } +class Baz : Object { + public Baz () { + } + + Baz get_object () + { + return new Baz (); + } + + public Baz[] create_array () { + var a = get_array (); + a += (Baz) get_object (); + assert (a.length == 2); + assert (!(get_object () in a)); + return a; + } + + public V[] create_array2 () { + var a = get_array2 (); + a += (V) get_object (); + assert (a.length == 3); + assert (!(get_object () in a)); + return a; + } + + T[] get_array () { + T[] a = {}; + a += (T) get_object (); + return a; + } + + G[] get_array2 () { + G[] a = {}; + a += (G) get_object (); + a += (G) get_object (); + return a; + } +} + +void test_generics_array () { + var g = new Baz (); + var a = g.create_array (); + assert (a.length == 2); + var b = g.create_array2 (); + assert (b.length == 3); +} + void main () { test_integer_array (); test_string_array (); @@ -145,4 +192,5 @@ void main () { test_length_assignment (); test_inline_array (); test_delegate_array (); + test_generics_array (); }