aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexandros Naskos <alex_naskos@hotmail.com>2020-10-01 11:19:02 +0300
committerGitHub <noreply@github.com>2020-10-01 11:19:02 +0300
commitb358c281718a2f6437612fb73590a4992242cf52 (patch)
tree7381af1f603c28b4fad91bc56694483ee9b3098b /src
parent4eb390b157fcc047a707ad0a2a522911c2269cd6 (diff)
parente903b00eecba34295da5490a90eb87aeb984d155 (diff)
downloadzig-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.cpp7
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)