--- a/cmds/jrsonnet/Cargo.toml +++ b/cmds/jrsonnet/Cargo.toml @@ -23,7 +23,7 @@ # Bigint type exp-bigint = ["jrsonnet-evaluator/exp-bigint", "jrsonnet-cli/exp-bigint"] # obj?.field, obj?.['field'] -exp-null-coaelse = ["jrsonnet-evaluator/exp-null-coaelse", "jrsonnet-parser/exp-null-coaelse"] +exp-null-coaelse = ["jrsonnet-evaluator/exp-null-coaelse", "jrsonnet-parser/exp-null-coaelse", "jrsonnet-cli/exp-null-coaelse"] # --exp-apply exp-apply = [] --- a/crates/jrsonnet-cli/Cargo.toml +++ b/crates/jrsonnet-cli/Cargo.toml @@ -16,6 +16,10 @@ "jrsonnet-evaluator/exp-bigint", "jrsonnet-stdlib/exp-bigint", ] +exp-null-coaelse = [ + "jrsonnet-evaluator/exp-null-coaelse", + "jrsonnet-stdlib/exp-null-coaelse", +] legacy-this-file = ["jrsonnet-stdlib/legacy-this-file"] [dependencies] --- a/crates/jrsonnet-evaluator/src/evaluate/mod.rs +++ b/crates/jrsonnet-evaluator/src/evaluate/mod.rs @@ -461,6 +461,10 @@ )) }; let Some(super_obj) = ctx.super_obj() else { + #[cfg(feature = "exp-null-coaelse")] + if *null_coaelse { + return Ok(Val::Null); + } throw!(NoSuperFound) }; let this = ctx --- a/crates/jrsonnet-stdlib/Cargo.toml +++ b/crates/jrsonnet-stdlib/Cargo.toml @@ -19,6 +19,8 @@ # Bigint type exp-bigint = ["num-bigint", "jrsonnet-evaluator/exp-bigint"] +exp-null-coaelse = ["jrsonnet-parser/exp-null-coaelse", "jrsonnet-evaluator/exp-null-coaelse"] + [dependencies] jrsonnet-evaluator.workspace = true jrsonnet-macros.workspace = true