From 06771804564152b772476919800c1b74c0ded74e Mon Sep 17 00:00:00 2001 From: Celestino Amoroso Date: Thu, 23 Apr 2026 18:55:03 +0200 Subject: [PATCH] builtin-iterator.go/run(): removed default operator (print item) --- builtin-iterator.go | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/builtin-iterator.go b/builtin-iterator.go index 2156143..91283cd 100644 --- a/builtin-iterator.go +++ b/builtin-iterator.go @@ -23,9 +23,11 @@ func parseRunArgs(localCtx ExprContext, args map[string]any) (it Iterator, op Fu return } - if op, ok = args[iterParamOperator].(Functor); !ok && args[iterParamOperator] != nil { - err = fmt.Errorf("paramter %q must be a function, passed %v [%s]", iterParamOperator, args[iterParamOperator], TypeName(args[iterParamOperator])) - return + if args[iterParamOperator] != nil { + if op, ok = args[iterParamOperator].(Functor); !ok || op == nil { + err = fmt.Errorf("paramter %q must be a function, passed %v [%s]", iterParamOperator, args[iterParamOperator], TypeName(args[iterParamOperator])) + return + } } var vars *DictType @@ -51,7 +53,7 @@ func runFunc(ctx ExprContext, name string, args map[string]any) (result any, err var ok bool var op Functor var v any - var usingDefaultOp = false + // var usingDefaultOp = false var params map[string]any var item any @@ -60,24 +62,27 @@ func runFunc(ctx ExprContext, name string, args map[string]any) (result any, err if it, op, err = parseRunArgs(localCtx, args); err != nil { return - } else if op == nil { - op = NewGolangFunctor(printLnFunc) - usingDefaultOp = true + // } else if op == nil { + // op = NewGolangFunctor(printLnFunc) + // usingDefaultOp = true } for item, err = it.Next(); err == nil; item, err = it.Next() { - if usingDefaultOp { - params = map[string]any{ParamItem: []any{item}} - } else { - params = map[string]any{ParamIndex: it.Index(), ParamItem: item} - } + // if usingDefaultOp { + // params = map[string]any{ParamItem: []any{item}} + // } else { + // params = map[string]any{ParamIndex: it.Index(), ParamItem: item} + // } - if v, err = op.InvokeNamed(localCtx, iterParamOperator, params); err != nil { - break - } else { - var success bool - if success, ok = ToBool(v); !success || !ok { + if op != nil { + params = map[string]any{ParamIndex: it.Index(), ParamItem: item} + if v, err = op.InvokeNamed(localCtx, iterParamOperator, params); err != nil { break + } else { + var success bool + if success, ok = ToBool(v); !success || !ok { + break + } } } } @@ -86,6 +91,9 @@ func runFunc(ctx ExprContext, name string, args map[string]any) (result any, err err = nil } if err == nil { + if op == nil { + ctx.UnsafeSetVar(iterVarStatus, it.Count()) + } result, _ = localCtx.GetVar(iterVarStatus) } return