summaryrefslogtreecommitdiff
path: root/codegen
diff options
context:
space:
mode:
Diffstat (limited to 'codegen')
-rw-r--r--codegen/valaccodebasemodule.vala9
1 files changed, 8 insertions, 1 deletions
diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala
index 79e9f362a..bf699a076 100644
--- a/codegen/valaccodebasemodule.vala
+++ b/codegen/valaccodebasemodule.vala
@@ -2826,6 +2826,13 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
return load_temp_value (lvalue);
}
+ bool is_static_field_initializer (CodeNode node) {
+ if (node is InitializerList) {
+ return is_static_field_initializer (node.parent_node);
+ }
+ return node is Constant || (node is Field && ((Field) node).binding == MemberBinding.STATIC);
+ }
+
public override void visit_initializer_list (InitializerList list) {
if (list.target_type.type_symbol is Struct) {
/* initializer is used as struct initializer */
@@ -2873,7 +2880,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
clist.append (new CCodeConstant ("0"));
}
- if (list.parent_node is Constant
+ if (is_static_field_initializer (list.parent_node)
|| (list.parent_node is Expression && ((Expression) list.parent_node).value_type is ArrayType)) {
set_cvalue (list, clist);
} else {