diff --git a/ast.go b/ast.go index 3ba7979..f8299a9 100644 --- a/ast.go +++ b/ast.go @@ -119,7 +119,7 @@ func (self *ast) eval(ctx ExprContext, preset bool) (result any, err error) { if self.forest != nil { for _, root := range self.forest { if result, err = root.compute(ctx); err == nil { - ctx.setVar(ControlLastResult, result) + ctx.UnsafeSetVar(ControlLastResult, result) } else { //err = fmt.Errorf("error in expression nr %d: %v", i+1, err) break @@ -128,7 +128,7 @@ func (self *ast) eval(ctx ExprContext, preset bool) (result any, err error) { } if err == nil { result, err = self.root.compute(ctx) - ctx.setVar(ControlLastResult, result) + ctx.UnsafeSetVar(ControlLastResult, result) } // } else { // err = errors.New("empty expression") diff --git a/context-helpers.go b/context-helpers.go index 46b3fee..0d9f951 100644 --- a/context-helpers.go +++ b/context-helpers.go @@ -15,7 +15,7 @@ func exportVar(ctx ExprContext, name string, value any) { if name[0] == '@' { name = name[1:] } - ctx.setVar(name, value) + ctx.UnsafeSetVar(name, value) } func exportFunc(ctx ExprContext, name string, info ExprFunc) { diff --git a/context.go b/context.go index 0bbebe6..7b2c50b 100644 --- a/context.go +++ b/context.go @@ -33,7 +33,7 @@ type ExprContext interface { Clone() ExprContext GetVar(varName string) (value any, exists bool) SetVar(varName string, value any) - setVar(varName string, value any) + UnsafeSetVar(varName string, value any) EnumVars(func(name string) (accept bool)) (varNames []string) EnumFuncs(func(name string) (accept bool)) (funcNames []string) GetFuncInfo(name string) (item ExprFunc, exists bool) diff --git a/operand-func.go b/operand-func.go index e92ec3a..b0b199b 100644 --- a/operand-func.go +++ b/operand-func.go @@ -87,10 +87,10 @@ func (functor *funcDefFunctor) Invoke(ctx ExprContext, name string, args []any) if functor, ok := arg.(Functor); ok { ctx.RegisterFunc(p, functor, 0, -1) } else { - ctx.setVar(p, arg) + ctx.UnsafeSetVar(p, arg) } } else { - ctx.setVar(p, nil) + ctx.UnsafeSetVar(p, nil) } } result, err = functor.expr.eval(ctx, false) diff --git a/operator-assign.go b/operator-assign.go index 34c5742..043bcc1 100644 --- a/operator-assign.go +++ b/operator-assign.go @@ -44,7 +44,7 @@ func evalAssign(ctx ExprContext, self *term) (v any, err error) { } ctx.RegisterFunc(leftTerm.source(), functor, minArgs, maxArgs) } else { - ctx.setVar(leftTerm.source(), v) + ctx.UnsafeSetVar(leftTerm.source(), v) } } return diff --git a/operator-coalesce.go b/operator-coalesce.go index 6cb8171..18d5205 100644 --- a/operator-coalesce.go +++ b/operator-coalesce.go @@ -75,7 +75,7 @@ func evalAssignCoalesce(ctx ExprContext, self *term) (v any, err error) { ctx.RegisterFunc(leftTerm.source(), functor, 0, -1) } else { v = rightValue - ctx.setVar(leftTerm.source(), rightValue) + ctx.UnsafeSetVar(leftTerm.source(), rightValue) } } return diff --git a/simple-var-store.go b/simple-var-store.go index ae5e3a9..a5e3b3c 100644 --- a/simple-var-store.go +++ b/simple-var-store.go @@ -36,7 +36,7 @@ func (ctx *SimpleVarStore) GetVar(varName string) (v any, exists bool) { return } -func (ctx *SimpleVarStore) setVar(varName string, value any) { +func (ctx *SimpleVarStore) UnsafeSetVar(varName string, value any) { // fmt.Printf("[%p] setVar(%v, %v)\n", ctx, varName, value) ctx.varStore[varName] = value } @@ -98,8 +98,8 @@ func varsCtxToBuilder(sb *strings.Builder, ctx ExprContext, indent int) { sb.WriteString(f.ToString(0)) } else if _, ok = value.(Functor); ok { sb.WriteString("func(){}") - } else if _, ok = value.(map[any]any); ok { - sb.WriteString("dict{}") + // } else if _, ok = value.(map[any]any); ok { + // sb.WriteString("dict{}") } else { sb.WriteString(fmt.Sprintf("%v", value)) }