Skip to content

Commit 7df9596

Browse files
committed
chore: better error on interpreting uninitialized decl
1 parent e434766 commit 7df9596

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

src/library/ir_interpreter.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -902,6 +902,10 @@ class interpreter {
902902
throw exception(sstream() << "cannot evaluate `[init]` declaration '" << fn << "' in the same module");
903903
}
904904
push_frame(e.m_decl, m_arg_stack.size());
905+
// `Unreachable` can be from `mkDummyExternDecl`, which may mean that we failed to run the
906+
// initializer, suggesting some incorrect `meta` phase setup. Let's make sure we give a
907+
// better signal than a segfault in that case.
908+
lean_always_assert(fn_body_tag(decl_fun_body(e.m_decl)) != fn_body_kind::Unreachable);
905909
value r = eval_body(decl_fun_body(e.m_decl));
906910
pop_frame(r, decl_type(e.m_decl));
907911
if (!type_is_scalar(t)) {

0 commit comments

Comments
 (0)