mirror of
https://github.com/ziglang/zig.git
synced 2026-02-14 13:30:45 +00:00
Sema: remove generic function from monomorphed_funcs on any error
This commit is contained in:
parent
3e084d8de3
commit
8c4727f9ab
@ -3519,14 +3519,6 @@ pub fn deinit(mod: *Module) void {
|
||||
pub fn destroyDecl(mod: *Module, decl_index: Decl.Index) void {
|
||||
const gpa = mod.gpa;
|
||||
{
|
||||
if (mod.failed_decls.contains(decl_index)) {
|
||||
blk: {
|
||||
const errs = mod.comp.getAllErrorsAlloc() catch break :blk;
|
||||
for (errs.list) |err| Compilation.AllErrors.Message.renderToStdErr(err, .no_color);
|
||||
}
|
||||
// TODO restore test case triggering this panic
|
||||
@panic("Zig compiler bug: attempted to destroy declaration with an attached error");
|
||||
}
|
||||
const decl = mod.declPtr(decl_index);
|
||||
log.debug("destroy {*} ({s})", .{ decl, decl.name });
|
||||
_ = mod.test_functions.swapRemove(decl_index);
|
||||
|
||||
@ -7174,6 +7174,7 @@ fn instantiateGenericCall(
|
||||
return err;
|
||||
},
|
||||
else => {
|
||||
assert(mod.monomorphed_funcs.remove(new_module_func));
|
||||
{
|
||||
errdefer new_decl_arena.deinit();
|
||||
try new_decl.finalizeNewArena(&new_decl_arena);
|
||||
|
||||
@ -0,0 +1,30 @@
|
||||
pub export fn entry1() void {
|
||||
@setEvalBranchQuota(1001);
|
||||
// Return type evaluation should inherit both the
|
||||
// parent's branch quota and count meaning
|
||||
// at least 2002 backwards branches are required.
|
||||
comptime var i = 0;
|
||||
inline while (i < 1000) : (i += 1) {}
|
||||
_ = simple(10);
|
||||
}
|
||||
pub export fn entry2() void {
|
||||
@setEvalBranchQuota(2001);
|
||||
comptime var i = 0;
|
||||
inline while (i < 1000) : (i += 1) {}
|
||||
_ = simple(10);
|
||||
}
|
||||
fn simple(comptime n: usize) Type(n) {
|
||||
return n;
|
||||
}
|
||||
fn Type(comptime n: usize) type {
|
||||
if (n <= 1) return usize;
|
||||
return Type(n - 1);
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :21:16: error: evaluation exceeded 1001 backwards branches
|
||||
// :21:16: note: use @setEvalBranchQuota() to raise the branch limit from 1001
|
||||
// :16:34: note: called from here
|
||||
Loading…
x
Reference in New Issue
Block a user