From e81f139ecd62a7db014ec40ec887abb9afb17664 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Wed, 13 Oct 2021 20:15:14 +0200 Subject: Add an update method for changing environment values --- src/bootstrap/environment.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/bootstrap/environment.c b/src/bootstrap/environment.c index 0a6a866..d4e9f86 100644 --- a/src/bootstrap/environment.c +++ b/src/bootstrap/environment.c @@ -60,4 +60,18 @@ env_lookup(Environment *env, Object *symbol) { return obj_err; } +void +env_update_symbol(Environment *env, Object *symbol, Object *value) { + // Try to find an existing symbol in the current environment. + for (size_t i = 0; i < env->size; i++) { + EnvEntry entry = env->buf[i]; + if (obj_eq(symbol, entry.symbol)) { + env->buf[i].value = value; + return; + } + } + // If we don't find the symbol, add a new entry. + env_add_symbol(env, symbol, value); +} + // TODO: Free env function. -- cgit v1.2.1