summaryrefslogtreecommitdiff
path: root/vala
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2023-03-20 15:18:00 +0100
committerRico Tzschichholz <ricotz@ubuntu.com>2023-03-20 16:25:10 +0100
commit9c35019ef300082243ef7c71c22088c52d3db38e (patch)
tree2d288fa16f9b0141ce64aab5402e5d0ba0517f78 /vala
parent6a0cb1546b1e86859a3fce00c27abfc62ba50d8e (diff)
downloadvala-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.vala5
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 };