diff --git a/jqjq.jq b/jqjq.jq index 5430e5a..cacf33d 100644 --- a/jqjq.jq +++ b/jqjq.jq @@ -2596,7 +2596,7 @@ def builtin_undefined_func($globals; $builtins_env): | eval_ast( $f.args[0]; []; - $builtins_env; + $f.env; builtin_undefined_func($globals; $builtins_env) ) as [$_path, $expr] | $f.input diff --git a/jqjq.test b/jqjq.test index 226f599..8dee976 100644 --- a/jqjq.test +++ b/jqjq.test @@ -1257,3 +1257,18 @@ null try eval(". as {$a $b} | .") catch "failed" null "failed" + +# eval expr arg as normal +"1+2" as $a | eval($a) +null +3 + +# also nested +"\"1+2\" as $b | eval($b)" as $a | eval($a) +null +3 + +# and env don't leak into eval (maybe should be an option?) +try 3 as $e | eval("$e") catch . +null +"undefined function $e"