vala r2205 - in trunk: . gobject
- From: juergbi svn gnome org
- To: svn-commits-list gnome org
- Subject: vala r2205 - in trunk: . gobject
- Date: Wed, 17 Dec 2008 22:55:10 +0000 (UTC)
Author: juergbi
Date: Wed Dec 17 22:55:10 2008
New Revision: 2205
URL: http://svn.gnome.org/viewvc/vala?rev=2205&view=rev
Log:
2008-12-17 JÃrg Billeter <j bitron ch>
* gobject/valaccodebasemodule.vala:
Fix initialization of static array fields, fixes bug 472545
Modified:
trunk/ChangeLog
trunk/gobject/valaccodebasemodule.vala
Modified: trunk/gobject/valaccodebasemodule.vala
==============================================================================
--- trunk/gobject/valaccodebasemodule.vala (original)
+++ trunk/gobject/valaccodebasemodule.vala Wed Dec 17 22:55:10 2008
@@ -973,6 +973,23 @@
if (!is_constant_ccode_expression (rhs)) {
if (f.parent_symbol is Class) {
class_init_fragment.append (new CCodeExpressionStatement (new CCodeAssignment (lhs, rhs)));
+
+ if (f.field_type is ArrayType && !f.no_array_length &&
+ f.initializer is ArrayCreationExpression) {
+ var array_type = (ArrayType) f.field_type;
+ var ma = new MemberAccess.simple (f.name);
+ ma.symbol_reference = f;
+
+ Gee.List<Expression> sizes = ((ArrayCreationExpression) f.initializer).get_sizes ();
+ for (int dim = 1; dim <= array_type.rank; dim++) {
+ var array_len_lhs = head.get_array_length_cexpression (ma, dim);
+ var size = sizes[dim - 1];
+ class_init_fragment.append (new CCodeExpressionStatement (new CCodeAssignment (array_len_lhs, (CCodeExpression) size.ccodenode)));
+ }
+ }
+
+ append_temp_decl (class_init_fragment, temp_vars);
+ temp_vars.clear ();
} else {
f.error = true;
Report.error (f.source_reference, "Non-constant field initializers not supported in this context");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]