diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2023-03-27 21:43:25 +0200 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2023-03-27 21:46:32 +0200 |
commit | 5a25c2e93043176a86844f2682eba1fcf3216837 (patch) | |
tree | c39cecc5393030e9dc5014de7f2d91b4e1816213 /codegen | |
parent | 6541079c11e96328362097b7cec930fc55523b6a (diff) | |
download | vala-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.vala | 9 |
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 { |