diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2023-03-20 15:18:00 +0100 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2023-03-20 16:25:10 +0100 |
commit | 9c35019ef300082243ef7c71c22088c52d3db38e (patch) | |
tree | 2d288fa16f9b0141ce64aab5402e5d0ba0517f78 /vala | |
parent | 6a0cb1546b1e86859a3fce00c27abfc62ba50d8e (diff) | |
download | vala-9c35019ef300082243ef7c71c22088c52d3db38e.tar.gz |
vala: Allow assignment of namespace fields with inline allocated arrays
Fixes https://gitlab.gnome.org/GNOME/vala/issues/945
Diffstat (limited to 'vala')
-rw-r--r-- | vala/valainitializerlist.vala | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/vala/valainitializerlist.vala b/vala/valainitializerlist.vala index 8d3777b77..a5d92403b 100644 --- a/vala/valainitializerlist.vala +++ b/vala/valainitializerlist.vala @@ -149,16 +149,19 @@ public class Vala.InitializerList : Expression { unowned ArrayType array_type = (ArrayType) target_type; bool requires_constants_only = false; + bool is_global_constant_inline = false; unowned CodeNode? node = parent_node; while (node != null) { if (node is Constant) { requires_constants_only = true; break; + } else if (node is Field && ((Field) node).parent_symbol is Namespace) { + is_global_constant_inline = array_type.inline_allocated && is_constant (); } node = node.parent_node; } - if (!(parent_node is ArrayCreationExpression) && !requires_constants_only + if (!(parent_node is ArrayCreationExpression) && !requires_constants_only && !is_global_constant_inline && (!(parent_node is InitializerList) || ((InitializerList) parent_node).target_type.type_symbol is Struct)) { // transform shorthand form // int[] array = { 42 }; |