From: Rico Tzschichholz Date: Fri, 3 May 2019 13:32:04 +0000 (+0200) Subject: girwriter: Write implicit fields for arrays and delegates X-Git-Tag: 0.36.20~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9070aa92c34efc742c25b465f06975b4c77e0d60;p=thirdparty%2Fvala.git girwriter: Write implicit fields for arrays and delegates --- diff --git a/codegen/valagirwriter.vala b/codegen/valagirwriter.vala index 7c843e6af..25800212e 100644 --- a/codegen/valagirwriter.vala +++ b/codegen/valagirwriter.vala @@ -939,6 +939,50 @@ public class Vala.GIRWriter : CodeVisitor { indent--; write_indent (); buffer.append_printf ("\n"); + + if (f.variable_type is ArrayType && CCodeBaseModule.get_ccode_array_length (f)) { + var array_type = (ArrayType) f.variable_type; + if (!array_type.fixed_length) { + var int_type = new IntegerType (context.root.scope.lookup ("int") as Struct); + for (var i = 0; i < array_type.rank; i++) { + write_indent (); + buffer.append_printf ("\n"); + indent++; + write_type (int_type); + indent--; + write_indent (); + buffer.append_printf ("\n"); + } + } + } else if (f.variable_type is DelegateType) { + var deleg_type = (DelegateType) f.variable_type; + if (deleg_type.delegate_symbol.has_target) { + write_indent (); + buffer.append_printf ("\n"); + indent++; + write_indent (); + buffer.append_printf ("\n"); + indent--; + write_indent (); + buffer.append_printf ("\n"); + if (deleg_type.is_disposable ()) { + write_indent (); + buffer.append_printf ("\n"); + indent++; + write_indent (); + buffer.append_printf ("\n"); + indent--; + write_indent (); + buffer.append_printf ("\n"); + } + } + } } private void write_implicit_params (DataType? type, ref int index, bool has_array_length, string? name, ParameterDirection direction) {