authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-05-31 00:16:37-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-06-10 20:47:57-07:00
logd019229c2c3432c9053594eb140b255c3be9ebeb
tree49e3d9eb78d86ed81678638f5c71eef34d5fb1ce
parentaed142ebaa65ff3ced948b18c55835b540e1e04a

Sema: avoid invalided key access


1 files changed, 5 insertions(+), 4 deletions(-)

src/Sema.zig+5-4
......@@ -15966,8 +15966,6 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1596615966 } })).toValue()),
1596715967 .Fn => {
1596815968 // TODO: look into memoizing this result.
15969 const info = mod.typeToFunc(ty).?;
15970
1597115969 var params_anon_decl = try block.startAnonDecl();
1597215970 defer params_anon_decl.deinit();
1597315971
......@@ -15993,8 +15991,10 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1599315991 const param_info_decl = mod.declPtr(param_info_decl_index);
1599415992 const param_info_ty = param_info_decl.val.toType();
1599515993
15996 const param_vals = try sema.arena.alloc(InternPool.Index, info.param_types.len);
15997 for (param_vals, info.param_types, 0..) |*param_val, param_ty, i| {
15994 const param_vals = try sema.arena.alloc(InternPool.Index, mod.typeToFunc(ty).?.param_types.len);
15995 for (param_vals, 0..) |*param_val, i| {
15996 const info = mod.typeToFunc(ty).?;
15997 const param_ty = info.param_types[i];
1599815998 const is_generic = param_ty == .generic_poison_type;
1599915999 const param_ty_val = try mod.intern_pool.get(gpa, .{ .opt = .{
1600016000 .ty = try mod.intern_pool.get(gpa, .{ .opt_type = .type_type }),
......@@ -16046,6 +16046,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1604616046 } });
1604716047 };
1604816048
16049 const info = mod.typeToFunc(ty).?;
1604916050 const ret_ty_opt = try mod.intern(.{ .opt = .{
1605016051 .ty = try mod.intern_pool.get(gpa, .{ .opt_type = .type_type }),
1605116052 .val = if (info.return_type == .generic_poison_type) .none else info.return_type,