Aria

A low-level systems programming language
git clone git://git.m21c.me/Aria.git
Log | Files | Refs | LICENSE

commit f547349114ecb059365e45a7a0fb9eee43b12745
parent 876cfaba62729525ef7bd982ada6a58c281b6989
Author: m21c  <ho*******@gmail.com>
Date:   Sat,  5 Feb 2022 13:10:51 +0100

extracted getfuncenv()

Diffstat:
Mcompiler.c | 19+++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/compiler.c b/compiler.c @@ -1712,18 +1712,25 @@ popenv(Source *source) return env; } -static bool -deferfuncenv(Source *source, int keydeclinfunc) +static Env * +getfuncenv(Env *currenv) { - Env *env, *funcenv = NULL; + Env *env; - for (env = source->currenv; env; env = env->below) { + for (env = currenv; env; env = env->below) { if (env->kind == SFUNCTION) { - funcenv = env; - break; + return env; } } + return NULL; +} + +static bool +deferfuncenv(Source *source, int keydeclinfunc) +{ + Env *funcenv = getfuncenv(source->currenv); + if (funcenv) { if (!funcenv->pending) { funcenv->pending = true;