arrays/fixed-length-concat-invalid.test \
arrays/fixed-length-non-const.test \
arrays/fixed-length-resize-invalid.test \
+ arrays/inline-field.test \
+ arrays/inline-local-variable.test \
+ arrays/inline-parameter.test \
+ arrays/inline-struct-field.test \
arrays/length-inline-assignment.vala \
arrays/struct-field-length-cname.vala \
arrays/incompatible-integer-elements.test \
--- /dev/null
+Invalid Code
+
+int bar[];
+
+void main () {
+}
--- /dev/null
+Invalid Code
+
+void main () {
+ int manam[];
+}
--- /dev/null
+Invalid Code
+
+void foo (int bar[]) {
+}
+
+void main () {
+}
--- /dev/null
+Invalid Code
+
+struct Foo {
+ public int bar[];
+}
+
+void main () {
+}
initializer = null;
}
+ if (variable_array_type != null && variable_array_type.inline_allocated
+ && !variable_array_type.fixed_length) {
+ Report.error (source_reference, "Inline allocated array as field requires to have fixed length");
+ }
+
if (initializer != null) {
initializer.target_type = variable_type;
initializer = null;
}
+ if (variable_array_type != null && variable_array_type.inline_allocated
+ && variable_array_type.length == null && !(initializer is ArrayCreationExpression)) {
+ Report.error (source_reference, "Inline allocated array requires either a given length or an initializer");
+ }
+
if (initializer != null && !initializer.error) {
if (initializer.value_type is MethodType) {
if (!(initializer is MemberAccess) && !(initializer is LambdaExpression)) {
initializer.target_type = variable_type.copy ();
initializer.check (context);
}
+
+ unowned ArrayType? variable_array_type = variable_type as ArrayType;
+ if (variable_array_type != null && variable_array_type.inline_allocated
+ && !variable_array_type.fixed_length) {
+ Report.error (source_reference, "Inline allocated array as parameter requires to have fixed length");
+ }
}
if (initializer != null) {
}
string id = parse_identifier ();
- var array_type = parse_inline_array_type (type);
- if (!(type is ArrayType) && (array_type is ArrayType) && !((ArrayType) array_type).fixed_length) {
- throw new ParseError.SYNTAX ("invalid array parameter declaration");
- } else {
- type = array_type;
- }
+ type = parse_inline_array_type (type);
var param = new Parameter (id, type, get_src (begin));
set_attributes (param, attrs);