aboutsummaryrefslogtreecommitdiff
path: root/src/env.cff
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2022-08-24 06:46:23 +0200
committerlemon <lsof@mailbox.org>2022-08-24 06:46:23 +0200
commite5ed3b20351a2715fe88d9a5dbcc8e6757fe96aa (patch)
tree7333f357bc38ed389e8845d59196594377dc46d6 /src/env.cff
parent039ab20bbf6b68c423f420be2481b447d85c606b (diff)
llvm defer and more
Diffstat (limited to 'src/env.cff')
-rw-r--r--src/env.cff8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/env.cff b/src/env.cff
index 816053e..6bc24fe 100644
--- a/src/env.cff
+++ b/src/env.cff
@@ -24,9 +24,9 @@ extern fn envparent(env *Env) *Env {
return env.parent;
}
-extern fn envput(env *Env, decl Decl, old **const Decl) *Decl {
+extern fn envput_alloc(env *Env, alloc *Allocator, decl Decl, old **const Decl) *Decl {
let l **DeclList = env.decls->get_slot(decl.name);
- let n *DeclList = anew(env.alloc, DeclList);
+ let n *DeclList = anew(alloc, DeclList);
if *l { // decl with this name exists
let old = (*old = &(*l).decl);
switch {
@@ -51,6 +51,10 @@ extern fn envput(env *Env, decl Decl, old **const Decl) *Decl {
return &n.decl;
}
+extern fn envput(env *Env, decl Decl, old **const Decl) *Decl {
+ return envput_alloc(env, env.alloc, decl, old);
+}
+
extern fn envfind(env *Env, name *const u8) *Decl {
let l **DeclList = env.decls->get(name);
if l == #null {