diff options
| author | Alexandros Naskos <alex_naskos@hotmail.com> | 2020-10-01 11:19:02 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-01 11:19:02 +0300 |
| commit | b358c281718a2f6437612fb73590a4992242cf52 (patch) | |
| tree | 7381af1f603c28b4fad91bc56694483ee9b3098b /src | |
| parent | 4eb390b157fcc047a707ad0a2a522911c2269cd6 (diff) | |
| parent | e903b00eecba34295da5490a90eb87aeb984d155 (diff) | |
| download | zig-b358c281718a2f6437612fb73590a4992242cf52.tar.gz zig-b358c281718a2f6437612fb73590a4992242cf52.zip | |
Merge pull request #6461 from tadeokondrak/type-enum-invalid-tag-type
stage1: Fix @Type(.Enum) with invalid tag_type
Diffstat (limited to 'src')
| -rw-r--r-- | src/stage1/ir.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/stage1/ir.cpp b/src/stage1/ir.cpp index bb4ca8dbf3..7de4b923ba 100644 --- a/src/stage1/ir.cpp +++ b/src/stage1/ir.cpp @@ -26150,6 +26150,13 @@ static ZigType *type_info_to_type(IrAnalyze *ira, IrInst *source_instr, ZigTypeI ContainerLayout layout = (ContainerLayout)bigint_as_u32(&layout_value->data.x_enum_tag); ZigType *tag_type = get_const_field_meta_type(ira, source_instr->source_node, payload, "tag_type", 1); + if (type_is_invalid(tag_type)) + return ira->codegen->invalid_inst_gen->value->type; + if (tag_type->id != ZigTypeIdInt) { + ir_add_error(ira, source_instr, buf_sprintf( + "TypeInfo.Enum.tag_type must be an integer type, not '%s'", buf_ptr(&tag_type->name))); + return ira->codegen->invalid_inst_gen->value->type; + } ZigValue *fields_value = get_const_field(ira, source_instr->source_node, payload, "fields", 2); if (fields_value == nullptr) |
