commit 71e209521a0675a3ec06aba133ce8837e2ee9806 (tree)
parent 4e9ab0306ac84227bff1188bbf4d65a1ae5255d9
Author: LemonBoy <thatlemon@gmail.com>
Date: Mon, 4 Nov 2019 23:31:38 +0100
Mark type fields as CT
Fixes #3276
Diffstat:
2 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/src/ir.cpp b/src/ir.cpp
@@ -20405,6 +20405,7 @@ static Error ir_make_type_info_decls(IrAnalyze *ira, IrInstruction *source_instr
bigint_init_unsigned(&inner_fields[2].data.x_union.tag, 1);
ConstExprValue *payload = create_const_vals(1);
+ payload->special = ConstValSpecialStatic;
payload->type = ira->codegen->builtin_types.entry_type;
payload->data.x_type = var->const_value->type;
@@ -20525,6 +20526,7 @@ static Error ir_make_type_info_decls(IrAnalyze *ira, IrInstruction *source_instr
bigint_init_unsigned(&inner_fields[2].data.x_union.tag, 0);
ConstExprValue *payload = create_const_vals(1);
+ payload->special = ConstValSpecialStatic;
payload->type = ira->codegen->builtin_types.entry_type;
payload->data.x_type = type_entry;
diff --git a/test/stage1/behavior/type_info.zig b/test/stage1/behavior/type_info.zig
@@ -339,3 +339,10 @@ test "type info: extern fns with and without lib names" {
}
}
}
+
+test "data field is a compile-time value" {
+ const S = struct {
+ const Bar = isize(-1);
+ };
+ comptime expect(@typeInfo(S).Struct.decls[0].data.Var == isize);
+}