basic-types/floats.vala \
basic-types/strings.vala \
basic-types/arrays.vala \
+ basic-types/arrays-fixed-assignment.vala \
basic-types/array-uint8-uchar-compat.vala \
basic-types/pointers.vala \
basic-types/sizeof.vala \
--- /dev/null
+string foo[3];
+
+void main () {
+ {
+ foo = new string[3];
+ }
+ {
+ foo = new string[3] { "foo", "bar", "baz" };
+ assert (foo[1] == "bar");
+ }
+ {
+ foo = { "foo", "bar", "baz" };
+ assert (foo[1] == "bar");
+ }
+
+ {
+ string bar[3] = new string[3];
+ }
+ {
+ string bar[3] = new string[3] { "foo", "bar", "baz" };
+ assert (bar[1] == "bar");
+ }
+ {
+ string bar[3] = { "foo", "bar", "baz" };
+ assert (bar[1] == "bar");
+ }
+}
Report.error (source_reference, "Assignment: Invalid assignment attempt");
return false;
}
+ } 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
+ && right is ArrayCreationExpression && ((ArrayCreationExpression) right).initializer_list == null) {
+ Report.warning (source_reference, "Arrays with fixed length don't require an explicit instantiation");
+ ((Block) parent_node.parent_node).replace_statement ((Statement) parent_node, new EmptyStatement (source_reference));
+ return true;
+ }
}
if (left.value_type != null && right.value_type != null) {
return false;
}
+ unowned ArrayType? variable_array_type = variable_type as ArrayType;
+ if (variable_array_type != null && variable_array_type.fixed_length
+ && initializer is ArrayCreationExpression && ((ArrayCreationExpression) initializer).initializer_list == null) {
+ Report.warning (source_reference, "Arrays with fixed length don't require an explicit instantiation");
+ initializer = null;
+ }
+
if (initializer != null) {
initializer.target_type = variable_type;
initializer.target_type = variable_type;
}
+ unowned ArrayType? variable_array_type = variable_type as ArrayType;
+ if (variable_array_type != null && variable_array_type.fixed_length
+ && initializer is ArrayCreationExpression && ((ArrayCreationExpression) initializer).initializer_list == null) {
+ Report.warning (source_reference, "Arrays with fixed length don't require an explicit instantiation");
+ initializer = null;
+ }
+
if (initializer != null && !initializer.error) {
if (initializer.value_type == null) {
if (!(initializer is MemberAccess) && !(initializer is LambdaExpression)) {
return false;
}
-
- ArrayType variable_array_type = variable_type as ArrayType;
if (variable_array_type != null && variable_array_type.inline_allocated && !variable_array_type.fixed_length && is_initializer_list) {
variable_array_type.length = new IntegerLiteral (initializer_size.to_string ());
variable_array_type.fixed_length = true;