summaryrefslogtreecommitdiff
path: root/codegen
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2023-03-27 21:43:25 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2023-03-27 21:46:32 +0200
commit5a25c2e93043176a86844f2682eba1fcf3216837 (patch)
treec39cecc5393030e9dc5014de7f2d91b4e1816213 /codegen
parent6541079c11e96328362097b7cec930fc55523b6a (diff)
downloadvala-5a25c2e93043176a86844f2682eba1fcf3216837.tar.gz
vala: Improve initialization of namespace fields with compound literal
Regression of 9c35019ef300082243ef7c71c22088c52d3db38e Fixes https://gitlab.gnome.org/GNOME/vala/issues/1424
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 {