diff --git a/c/builtin.c b/c/builtin.c index 6d0235e7..f291a95e 100644 --- a/c/builtin.c +++ b/c/builtin.c @@ -199,24 +199,25 @@ static bytecoded_builtin bytecoded_builtins[] = { }; static const char* jq_builtins[] = { - "def map(f): [.[] | f];" + "def map(f): [.[] | f];", + "def select(f): if f then . else empty end;", }; block builtins_bind(block b) { - block builtins = gen_noop(); - for (unsigned i=0; i=0; i--) { struct locfile src; locfile_init(&src, jq_builtins[i], strlen(jq_builtins[i])); block funcs; int nerrors = jq_parse_library(&src, &funcs); assert(!nerrors); - block_append(&builtins, funcs); + b = block_bind(funcs, b, OP_IS_CALL_PSEUDO); locfile_free(&src); } + block builtins = gen_noop(); + for (unsigned i=0; i