authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-02-17 19:58:57-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-02-17 20:48:09-07:00
log0bb22600bd7f1a99f3372f6c362fbfab24a2d6d4
tree802c85ddc0e2aa0989ddcd059fd1928cd71988b1
parentfeb4b01b38a13c85a7510a937cbdbede29f21764

Sema: fix typeinfo for enums with no declarations


2 files changed, 3 insertions(+), 8 deletions(-)

src/Sema.zig+3-6
...@@ -10015,10 +10015,6 @@ fn typeInfoDecls(...@@ -10015,10 +10015,6 @@ fn typeInfoDecls(
10015 type_info_ty: Type,10015 type_info_ty: Type,
10016 opt_namespace: ?*Module.Namespace,10016 opt_namespace: ?*Module.Namespace,
10017) CompileError!Value {10017) CompileError!Value {
10018 const namespace = opt_namespace orelse return Value.initTag(.empty_array);
10019 const decls_len = namespace.decls.count();
10020 if (decls_len == 0) return Value.initTag(.empty_array);
10021
10022 var decls_anon_decl = try block.startAnonDecl(src);10018 var decls_anon_decl = try block.startAnonDecl(src);
10023 defer decls_anon_decl.deinit();10019 defer decls_anon_decl.deinit();
1002410020
...@@ -10035,10 +10031,11 @@ fn typeInfoDecls(...@@ -10035,10 +10031,11 @@ fn typeInfoDecls(
10035 break :t try declaration_ty_decl.val.toType(&buffer).copy(decls_anon_decl.arena());10031 break :t try declaration_ty_decl.val.toType(&buffer).copy(decls_anon_decl.arena());
10036 };10032 };
1003710033
10034 const decls_len = if (opt_namespace) |ns| ns.decls.count() else 0;
10038 const decls_vals = try decls_anon_decl.arena().alloc(Value, decls_len);10035 const decls_vals = try decls_anon_decl.arena().alloc(Value, decls_len);
10039 for (decls_vals) |*decls_val, i| {10036 for (decls_vals) |*decls_val, i| {
10040 const decl = namespace.decls.values()[i];10037 const decl = opt_namespace.?.decls.values()[i];
10041 const name = namespace.decls.keys()[i];10038 const name = opt_namespace.?.decls.keys()[i];
10042 const name_val = v: {10039 const name_val = v: {
10043 var anon_decl = try block.startAnonDecl(src);10040 var anon_decl = try block.startAnonDecl(src);
10044 defer anon_decl.deinit();10041 defer anon_decl.deinit();
test/behavior/type_info.zig-2
...@@ -186,8 +186,6 @@ fn testErrorSet() !void {...@@ -186,8 +186,6 @@ fn testErrorSet() !void {
186}186}
187187
188test "type info: enum info" {188test "type info: enum info" {
189 if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO
190
191 try testEnum();189 try testEnum();
192 comptime try testEnum();190 comptime try testEnum();
193}191}