From 9a358d2d33b0ecdec38ba3698acf8b239c43b667 Mon Sep 17 00:00:00 2001 From: Jonathan Marler Date: Wed, 4 Sep 2019 11:08:49 -0600 Subject: [PATCH] Add Array support to @Type --- src/ir.cpp | 8 +++++++- test/stage1/behavior/type.zig | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/ir.cpp b/src/ir.cpp index 054fbf0073..03e084e5ce 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -20942,6 +20942,13 @@ static ZigType *type_info_to_type(IrAnalyze *ira, IrInstruction *instruction, Zi return ptr_type; return get_slice_type(ira->codegen, ptr_type); } + case ZigTypeIdArray: + assert(payload->special == ConstValSpecialStatic); + assert(payload->type == ir_type_info_get_type(ira, "Array", nullptr)); + return get_array_type(ira->codegen, + get_const_field_meta_type(ira, payload, "child", 1), + bigint_as_u64(get_const_field_lit_int(ira, payload, "len", 0)) + ); case ZigTypeIdComptimeFloat: return ira->codegen->builtin_types.entry_num_lit_float; case ZigTypeIdComptimeInt: @@ -20950,7 +20957,6 @@ static ZigType *type_info_to_type(IrAnalyze *ira, IrInstruction *instruction, Zi return ira->codegen->builtin_types.entry_undef; case ZigTypeIdNull: return ira->codegen->builtin_types.entry_null; - case ZigTypeIdArray: case ZigTypeIdOptional: case ZigTypeIdErrorUnion: case ZigTypeIdErrorSet: diff --git a/test/stage1/behavior/type.zig b/test/stage1/behavior/type.zig index 5b2998f088..b84369a164 100644 --- a/test/stage1/behavior/type.zig +++ b/test/stage1/behavior/type.zig @@ -93,6 +93,12 @@ test "Type.Pointer" { }); } +test "Type.Array" { + testing.expect([123]u8 == @Type(TypeInfo { .Array = TypeInfo.Array { .len = 123, .child = u8 } })); + testing.expect([2]u32 == @Type(TypeInfo { .Array = TypeInfo.Array { .len = 2, .child = u32 } })); + testTypes([_]type {[1]u8, [30]usize, [7]bool}); +} + test "Type.ComptimeFloat" { testTypes([_]type {comptime_float}); }