authorgravatar for johnnymarler@gmail.comJonathan Marler <johnnymarler@gmail.com> 2019-09-04 11:08:49-06:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-09-05 13:08:45-04:00
log9a358d2d33b0ecdec38ba3698acf8b239c43b667
tree8174259bea6cfe1b82ada4e8808f23403f73a073
parent847a262efdf5f3a359b00f13c101236dc0747f1b

Add Array support to @Type


2 files changed, 13 insertions(+), 1 deletions(-)

src/ir.cpp+7-1
...@@ -20942,6 +20942,13 @@ static ZigType *type_info_to_type(IrAnalyze *ira, IrInstruction *instruction, Zi...@@ -20942,6 +20942,13 @@ static ZigType *type_info_to_type(IrAnalyze *ira, IrInstruction *instruction, Zi
20942 return ptr_type;20942 return ptr_type;
20943 return get_slice_type(ira->codegen, ptr_type);20943 return get_slice_type(ira->codegen, ptr_type);
20944 }20944 }
20945 case ZigTypeIdArray:
20946 assert(payload->special == ConstValSpecialStatic);
20947 assert(payload->type == ir_type_info_get_type(ira, "Array", nullptr));
20948 return get_array_type(ira->codegen,
20949 get_const_field_meta_type(ira, payload, "child", 1),
20950 bigint_as_u64(get_const_field_lit_int(ira, payload, "len", 0))
20951 );
20945 case ZigTypeIdComptimeFloat:20952 case ZigTypeIdComptimeFloat:
20946 return ira->codegen->builtin_types.entry_num_lit_float;20953 return ira->codegen->builtin_types.entry_num_lit_float;
20947 case ZigTypeIdComptimeInt:20954 case ZigTypeIdComptimeInt:
...@@ -20950,7 +20957,6 @@ static ZigType *type_info_to_type(IrAnalyze *ira, IrInstruction *instruction, Zi...@@ -20950,7 +20957,6 @@ static ZigType *type_info_to_type(IrAnalyze *ira, IrInstruction *instruction, Zi
20950 return ira->codegen->builtin_types.entry_undef;20957 return ira->codegen->builtin_types.entry_undef;
20951 case ZigTypeIdNull:20958 case ZigTypeIdNull:
20952 return ira->codegen->builtin_types.entry_null;20959 return ira->codegen->builtin_types.entry_null;
20953 case ZigTypeIdArray:
20954 case ZigTypeIdOptional:20960 case ZigTypeIdOptional:
20955 case ZigTypeIdErrorUnion:20961 case ZigTypeIdErrorUnion:
20956 case ZigTypeIdErrorSet:20962 case ZigTypeIdErrorSet:
test/stage1/behavior/type.zig+6
...@@ -93,6 +93,12 @@ test "Type.Pointer" {...@@ -93,6 +93,12 @@ test "Type.Pointer" {
93 });93 });
94}94}
9595
96test "Type.Array" {
97 testing.expect([123]u8 == @Type(TypeInfo { .Array = TypeInfo.Array { .len = 123, .child = u8 } }));
98 testing.expect([2]u32 == @Type(TypeInfo { .Array = TypeInfo.Array { .len = 2, .child = u32 } }));
99 testTypes([_]type {[1]u8, [30]usize, [7]bool});
100}
101
96test "Type.ComptimeFloat" {102test "Type.ComptimeFloat" {
97 testTypes([_]type {comptime_float});103 testTypes([_]type {comptime_float});
98}104}