diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2016-01-15 19:05:51 -0700 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2016-01-15 19:05:51 -0700 |
| commit | 8bc3fae1cf055e33e01e0cbbbbc67f307f60b95b (patch) | |
| tree | 1fc0b4b9b4955d94e96e5bccef733afe2ec25a9f | |
| parent | 8818c59cbc96e6b0699a408d2fbaa9846356d85a (diff) | |
| download | zig-8bc3fae1cf055e33e01e0cbbbbc67f307f60b95b.tar.gz zig-8bc3fae1cf055e33e01e0cbbbbc67f307f60b95b.zip | |
fix error message for struct initialization on array
| -rw-r--r-- | src/analyze.cpp | 3 | ||||
| -rw-r--r-- | test/run_tests.cpp | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp index 513ec1cc6c..9fa5409c1e 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -1342,6 +1342,7 @@ static TypeTableEntry *analyze_container_init_expr(CodeGen *g, ImportTableEntry if (container_type->id == TypeTableEntryIdInvalid) { return container_type; } else if (container_type->id == TypeTableEntryIdStruct && + !container_type->data.structure.is_unknown_size_array && kind == ContainerInitKindStruct) { StructValExprCodeGen *codegen = &container_init_expr->resolved_struct_val_expr; @@ -1410,7 +1411,7 @@ static TypeTableEntry *analyze_container_init_expr(CodeGen *g, ImportTableEntry } } else { add_node_error(g, node, - buf_sprintf("type '%s' does not support %s syntax", + buf_sprintf("type '%s' does not support %s initialization syntax", buf_ptr(&container_type->name), err_container_init_syntax_name(kind))); return g->builtin_types.entry_invalid; } diff --git a/test/run_tests.cpp b/test/run_tests.cpp index d8bb9b51d9..0c6669b8c4 100644 --- a/test/run_tests.cpp +++ b/test/run_tests.cpp @@ -1419,6 +1419,10 @@ const b : @typeof(a) = 0; add_compile_fail_case("noalias on non pointer param", R"SOURCE( fn f(noalias x: i32) => {} )SOURCE", 1, ".tmp_source.zig:2:6: error: noalias on non-pointer parameter"); + + add_compile_fail_case("struct init syntax for array", R"SOURCE( +const foo = []u16{.x = 1024,}; + )SOURCE", 1, ".tmp_source.zig:2:18: error: type '[]u16' does not support struct initialization syntax"); } static void print_compiler_invocation(TestCase *test_case) { |
