Variable reference

This commit is contained in:
2024-04-06 01:00:29 +02:00
parent 574a6f5215
commit 0ba96e65a5
7 changed files with 60 additions and 25 deletions
+7
View File
@@ -36,10 +36,17 @@ func evalFuncCall(parentCtx exprContext, self *term) (v any, err error) {
}
if err == nil {
if v, err = ctx.Call(name, params); err == nil {
// Export variables
for _, refName := range ctx.EnumVars(func(name string) bool { return name[0] == '@' }) {
refValue, _ := ctx.GetVar(refName)
parentCtx.SetVar(refName[1:], refValue)
}
// Export functions
for _, refName := range ctx.EnumFuncs(func(name string) bool { return name[0] == '@' }) {
if info := ctx.GetFuncInfo(refName); info != nil {
parentCtx.RegisterFunc(refName[1:], info.Functor(), info.MinArgs(), info.MaxArgs())
}
}
}
}
return