From f0214ff61b5a94b9629db6f43d7a5b010bd4ffbc Mon Sep 17 00:00:00 2001 From: lemon Date: Thu, 18 Aug 2022 09:47:54 +0200 Subject: fix bodyarg --- src/env.cff | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/env.cff') diff --git a/src/env.cff b/src/env.cff index f18fe49..aa5c6d4 100644 --- a/src/env.cff +++ b/src/env.cff @@ -28,11 +28,19 @@ extern fn envput(env *Env, decl Decl, old **const Decl) *Decl { let l **DeclList = env.decls->get_slot(decl.name); let n *DeclList = anew(env.alloc, DeclList); if *l { // decl with this name exists - *old = &(*l).decl; - return #null; + let old = (*old = &(*l).decl); + switch { + case old.u.#tag == :Fn and decl.u.#tag == :Fn and decl.u.Fn.ty == old.u.Fn.ty and old.u.Fn.body->empty(); + case decl.u.#tag == :Let; + case env != old.myenv; + + case else; + return #null; + } } n.link = *l; n.decl = decl; + n.decl.myenv = env; *l = n; return &n.decl; } -- cgit v1.2.3