diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2019-06-27 12:24:13 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2019-06-27 12:24:13 -0400 |
| commit | 1ccf6a2c9e7b42214be07185467e7ae7029a0aa5 (patch) | |
| tree | 68b55a9364267c7ee98f42a2f70f30eecb03fabf /src/ir.cpp | |
| parent | 6cd3995754adcdcb1873c3fbfc0ec98ba95b68b5 (diff) | |
| download | zig-1ccf6a2c9e7b42214be07185467e7ae7029a0aa5.tar.gz zig-1ccf6a2c9e7b42214be07185467e7ae7029a0aa5.zip | |
compile error for using slice as array init expr type
when there are more than 0 elements.
closes #2764
Diffstat (limited to 'src/ir.cpp')
| -rw-r--r-- | src/ir.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/ir.cpp b/src/ir.cpp index 887e0fc8bf..b0e8c2d8ee 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -17280,7 +17280,11 @@ static IrInstruction *ir_analyze_instruction_elem_ptr(IrAnalyze *ira, IrInstruct ZigType *actual_array_type = ir_resolve_type(ira, elem_ptr_instruction->init_array_type->child); if (type_is_invalid(actual_array_type)) return ira->codegen->invalid_instruction; - assert(actual_array_type->id == ZigTypeIdArray); + if (actual_array_type->id != ZigTypeIdArray) { + ir_add_error(ira, elem_ptr_instruction->init_array_type, + buf_sprintf("expected array type or [_], found slice")); + return ira->codegen->invalid_instruction; + } ConstExprValue *array_init_val = create_const_vals(1); array_init_val->special = ConstValSpecialStatic; @@ -19575,7 +19579,7 @@ static IrInstruction *ir_analyze_instruction_container_init_list(IrAnalyze *ira, size_t elem_count = instruction->item_count; if (is_slice(container_type)) { - ir_add_error(ira, &instruction->base, + ir_add_error(ira, instruction->container_type, buf_sprintf("expected array type or [_], found slice")); return ira->codegen->invalid_instruction; } |
