[vala/0.46] vala: Inline-allocated array can't be instantiated with creation expression



commit b5dad4f2d0f8bc6dbc8a19a3ebfaa744c1171663
Author: Rico Tzschichholz <ricotz ubuntu com>
Date:   Sat Mar 21 17:09:30 2020 +0100

    vala: Inline-allocated array can't be instantiated with creation expression
    
    This generalizes 0554ed7ad9cefe0f56e53dc00be88488dfa788bf
    
    Fixes https://gitlab.gnome.org/GNOME/vala/issues/926

 tests/Makefile.am                            | 1 +
 tests/arrays/inline-local-instantiation.test | 5 +++++
 vala/valaassignment.vala                     | 4 ++--
 vala/valafield.vala                          | 4 ++--
 vala/valalocalvariable.vala                  | 4 ++--
 5 files changed, 12 insertions(+), 6 deletions(-)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 8e8b8d433..4b5a9b679 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -83,6 +83,7 @@ TESTS = \
        arrays/fixed-length-non-const.test \
        arrays/fixed-length-resize-invalid.test \
        arrays/inline-field.test \
+       arrays/inline-local-instantiation.test \
        arrays/inline-local-variable.test \
        arrays/inline-parameter.test \
        arrays/inline-struct-field.test \
diff --git a/tests/arrays/inline-local-instantiation.test b/tests/arrays/inline-local-instantiation.test
new file mode 100644
index 000000000..329b81926
--- /dev/null
+++ b/tests/arrays/inline-local-instantiation.test
@@ -0,0 +1,5 @@
+Invalid Code
+
+void main () {
+       int foo[] = new int[1];
+}
diff --git a/vala/valaassignment.vala b/vala/valaassignment.vala
index 4171dd154..e8b619e9f 100644
--- a/vala/valaassignment.vala
+++ b/vala/valaassignment.vala
@@ -321,9 +321,9 @@ public class Vala.Assignment : Expression {
                        } else if (ma.symbol_reference is Variable) {
                                unowned Variable variable = (Variable) ma.symbol_reference;
                                unowned ArrayType? variable_array_type = variable.variable_type as ArrayType;
-                               if (variable_array_type != null && variable_array_type.fixed_length
+                               if (variable_array_type != null && variable_array_type.inline_allocated
                                    && right is ArrayCreationExpression && ((ArrayCreationExpression) 
right).initializer_list == null) {
-                                       Report.warning (source_reference, "Arrays with fixed length don't 
require an explicit instantiation");
+                                       Report.warning (source_reference, "Inline allocated arrays don't 
require an explicit instantiation");
                                        ((Block) parent_node.parent_node).replace_statement ((Statement) 
parent_node, new EmptyStatement (source_reference));
                                        return true;
                                }
diff --git a/vala/valafield.vala b/vala/valafield.vala
index d840af916..93c239938 100644
--- a/vala/valafield.vala
+++ b/vala/valafield.vala
@@ -114,9 +114,9 @@ public class Vala.Field : Variable, Lockable {
                }
 
                unowned ArrayType? variable_array_type = variable_type as ArrayType;
-               if (variable_array_type != null && variable_array_type.fixed_length
+               if (variable_array_type != null && variable_array_type.inline_allocated
                    && initializer is ArrayCreationExpression && ((ArrayCreationExpression) 
initializer).initializer_list == null) {
-                       Report.warning (source_reference, "Arrays with fixed length don't require an explicit 
instantiation");
+                       Report.warning (source_reference, "Inline allocated arrays don't require an explicit 
instantiation");
                        initializer = null;
                }
 
diff --git a/vala/valalocalvariable.vala b/vala/valalocalvariable.vala
index 3f7685ccc..f06742327 100644
--- a/vala/valalocalvariable.vala
+++ b/vala/valalocalvariable.vala
@@ -153,9 +153,9 @@ public class Vala.LocalVariable : Variable {
                }
 
                unowned ArrayType? variable_array_type = variable_type as ArrayType;
-               if (variable_array_type != null && variable_array_type.fixed_length
+               if (variable_array_type != null && variable_array_type.inline_allocated
                    && initializer is ArrayCreationExpression && ((ArrayCreationExpression) 
initializer).initializer_list == null) {
-                       Report.warning (source_reference, "Arrays with fixed length don't require an explicit 
instantiation");
+                       Report.warning (source_reference, "Inline allocated arrays don't require an explicit 
instantiation");
                        initializer = null;
                }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]