difftreelog
refactor Option<&ExprLocation> -> &Option<_>
in: master
6 files changed
crates/jrsonnet-evaluator/src/builtin/mod.rsdiffbeforeafterboth222223fn std_format(str: IStr, vals: Val) -> Result<Val> {23fn std_format(str: IStr, vals: Val) -> Result<Val> {24 push(24 push(25 &Some(ExprLocation(Rc::from(PathBuf::from("std.jsonnet")), 0, 0)),25 Some(&ExprLocation(Rc::from(PathBuf::from("std.jsonnet")), 0, 0)),26 || format!("std.format of {}", str),26 || format!("std.format of {}", str),27 || {27 || {28 Ok(match vals {28 Ok(match vals {34 )34 )35}35}363637type Builtin = fn(context: Context, loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val>;37type Builtin = fn(context: Context, loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val>;383839type BuiltinsType = HashMap<Box<str>, Builtin>;39type BuiltinsType = HashMap<Box<str>, Builtin>;404078 };78 };79}79}808081fn builtin_length(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {81fn builtin_length(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {82 parse_args!(context, "length", args, 1, [82 parse_args!(context, "length", args, 1, [83 0, x: ty!((string | object | array));83 0, x: ty!((string | object | array));84 ], {84 ], {96 })96 })97}97}989899fn builtin_type(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {99fn builtin_type(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {100 parse_args!(context, "type", args, 1, [100 parse_args!(context, "type", args, 1, [101 0, x: ty!(any);101 0, x: ty!(any);102 ], {102 ], {106106107fn builtin_make_array(107fn builtin_make_array(108 context: Context,108 context: Context,109 _loc: &Option<ExprLocation>,109 _loc: Option<&ExprLocation>,110 args: &ArgsDesc,110 args: &ArgsDesc,111) -> Result<Val> {111) -> Result<Val> {112 parse_args!(context, "makeArray", args, 2, [112 parse_args!(context, "makeArray", args, 2, [126126127fn builtin_codepoint(127fn builtin_codepoint(128 context: Context,128 context: Context,129 _loc: &Option<ExprLocation>,129 _loc: Option<&ExprLocation>,130 args: &ArgsDesc,130 args: &ArgsDesc,131) -> Result<Val> {131) -> Result<Val> {132 parse_args!(context, "codepoint", args, 1, [132 parse_args!(context, "codepoint", args, 1, [138138139fn builtin_object_fields_ex(139fn builtin_object_fields_ex(140 context: Context,140 context: Context,141 _loc: &Option<ExprLocation>,141 _loc: Option<&ExprLocation>,142 args: &ArgsDesc,142 args: &ArgsDesc,143) -> Result<Val> {143) -> Result<Val> {144 parse_args!(context, "objectFieldsEx", args, 2, [144 parse_args!(context, "objectFieldsEx", args, 2, [157157158fn builtin_object_has_ex(158fn builtin_object_has_ex(159 context: Context,159 context: Context,160 _loc: &Option<ExprLocation>,160 _loc: Option<&ExprLocation>,161 args: &ArgsDesc,161 args: &ArgsDesc,162) -> Result<Val> {162) -> Result<Val> {163 parse_args!(context, "objectHasEx", args, 3, [163 parse_args!(context, "objectHasEx", args, 3, [175}175}176176177// faster177// faster178fn builtin_slice(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {178fn builtin_slice(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {179 parse_args!(context, "slice", args, 4, [179 parse_args!(context, "slice", args, 4, [180 0, indexable: ty!((string | array));180 0, indexable: ty!((string | array));181 1, index: ty!((number | null));181 1, index: ty!((number | null));216// faster216// faster217fn builtin_primitive_equals(217fn builtin_primitive_equals(218 context: Context,218 context: Context,219 _loc: &Option<ExprLocation>,219 _loc: Option<&ExprLocation>,220 args: &ArgsDesc,220 args: &ArgsDesc,221) -> Result<Val> {221) -> Result<Val> {222 parse_args!(context, "primitiveEquals", args, 2, [222 parse_args!(context, "primitiveEquals", args, 2, [228}228}229229230// faster230// faster231fn builtin_equals(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {231fn builtin_equals(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {232 parse_args!(context, "equals", args, 2, [232 parse_args!(context, "equals", args, 2, [233 0, a: ty!(any);233 0, a: ty!(any);234 1, b: ty!(any);234 1, b: ty!(any);237 })237 })238}238}239239240fn builtin_modulo(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {240fn builtin_modulo(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {241 parse_args!(context, "modulo", args, 2, [241 parse_args!(context, "modulo", args, 2, [242 0, a: ty!(number) => Val::Num;242 0, a: ty!(number) => Val::Num;243 1, b: ty!(number) => Val::Num;243 1, b: ty!(number) => Val::Num;246 })246 })247}247}248248249fn builtin_mod(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {249fn builtin_mod(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {250 parse_args!(context, "mod", args, 2, [250 parse_args!(context, "mod", args, 2, [251 0, a: ty!((number | string));251 0, a: ty!((number | string));252 1, b: ty!(any);252 1, b: ty!(any);259 })259 })260}260}261261262fn builtin_floor(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {262fn builtin_floor(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {263 parse_args!(context, "floor", args, 1, [263 parse_args!(context, "floor", args, 1, [264 0, x: ty!(number) => Val::Num;264 0, x: ty!(number) => Val::Num;265 ], {265 ], {266 Ok(Val::Num(x.floor()))266 Ok(Val::Num(x.floor()))267 })267 })268}268}269269270fn builtin_log(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {270fn builtin_log(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {271 parse_args!(context, "log", args, 1, [271 parse_args!(context, "log", args, 1, [272 0, n: ty!(number) => Val::Num;272 0, n: ty!(number) => Val::Num;273 ], {273 ], {274 Ok(Val::Num(n.ln()))274 Ok(Val::Num(n.ln()))275 })275 })276}276}277277278fn builtin_pow(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {278fn builtin_pow(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {279 parse_args!(context, "pow", args, 2, [279 parse_args!(context, "pow", args, 2, [280 0, x: ty!(number) => Val::Num;280 0, x: ty!(number) => Val::Num;281 1, n: ty!(number) => Val::Num;281 1, n: ty!(number) => Val::Num;284 })284 })285}285}286286287fn builtin_ext_var(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {287fn builtin_ext_var(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {288 parse_args!(context, "extVar", args, 1, [288 parse_args!(context, "extVar", args, 1, [289 0, x: ty!(string) => Val::Str;289 0, x: ty!(string) => Val::Str;290 ], {290 ], {291 Ok(with_state(|s| s.settings().ext_vars.get(&x).cloned()).ok_or(UndefinedExternalVariable(x))?)291 Ok(with_state(|s| s.settings().ext_vars.get(&x).cloned()).ok_or(UndefinedExternalVariable(x))?)292 })292 })293}293}294294295fn builtin_native(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {295fn builtin_native(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {296 parse_args!(context, "native", args, 1, [296 parse_args!(context, "native", args, 1, [297 0, x: ty!(string) => Val::Str;297 0, x: ty!(string) => Val::Str;298 ], {298 ], {299 Ok(with_state(|s| s.settings().ext_natives.get(&x).cloned()).map(|v| Val::Func(Rc::new(FuncVal::NativeExt(x.clone(), v)))).ok_or(UndefinedExternalFunction(x))?)299 Ok(with_state(|s| s.settings().ext_natives.get(&x).cloned()).map(|v| Val::Func(Rc::new(FuncVal::NativeExt(x.clone(), v)))).ok_or(UndefinedExternalFunction(x))?)300 })300 })301}301}302302303fn builtin_filter(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {303fn builtin_filter(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {304 parse_args!(context, "filter", args, 2, [304 parse_args!(context, "filter", args, 2, [305 0, func: ty!(function) => Val::Func;305 0, func: ty!(function) => Val::Func;306 1, arr: ty!(array) => Val::Arr;306 1, arr: ty!(array) => Val::Arr;318 })318 })319}319}320320321fn builtin_foldl(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {321fn builtin_foldl(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {322 parse_args!(context, "foldl", args, 3, [322 parse_args!(context, "foldl", args, 3, [323 0, func: ty!(function) => Val::Func;323 0, func: ty!(function) => Val::Func;324 1, arr: ty!(array) => Val::Arr;324 1, arr: ty!(array) => Val::Arr;332 })332 })333}333}334334335fn builtin_foldr(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {335fn builtin_foldr(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {336 parse_args!(context, "foldr", args, 3, [336 parse_args!(context, "foldr", args, 3, [337 0, func: ty!(function) => Val::Func;337 0, func: ty!(function) => Val::Func;338 1, arr: ty!(array) => Val::Arr;338 1, arr: ty!(array) => Val::Arr;349#[allow(non_snake_case)]349#[allow(non_snake_case)]350fn builtin_sort_impl(350fn builtin_sort_impl(351 context: Context,351 context: Context,352 _loc: &Option<ExprLocation>,352 _loc: Option<&ExprLocation>,353 args: &ArgsDesc,353 args: &ArgsDesc,354) -> Result<Val> {354) -> Result<Val> {355 parse_args!(context, "sort", args, 2, [355 parse_args!(context, "sort", args, 2, [364}364}365365366// faster366// faster367fn builtin_format(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {367fn builtin_format(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {368 parse_args!(context, "format", args, 2, [368 parse_args!(context, "format", args, 2, [369 0, str: ty!(string) => Val::Str;369 0, str: ty!(string) => Val::Str;370 1, vals: ty!(any)370 1, vals: ty!(any)373 })373 })374}374}375375376fn builtin_range(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {376fn builtin_range(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {377 parse_args!(context, "range", args, 2, [377 parse_args!(context, "range", args, 2, [378 0, from: ty!(number) => Val::Num;378 0, from: ty!(number) => Val::Num;379 1, to: ty!(number) => Val::Num;379 1, to: ty!(number) => Val::Num;386 })386 })387}387}388388389fn builtin_char(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {389fn builtin_char(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {390 parse_args!(context, "char", args, 1, [390 parse_args!(context, "char", args, 1, [391 0, n: ty!(number) => Val::Num;391 0, n: ty!(number) => Val::Num;392 ], {392 ], {400400401fn builtin_encode_utf8(401fn builtin_encode_utf8(402 context: Context,402 context: Context,403 _loc: &Option<ExprLocation>,403 _loc: Option<&ExprLocation>,404 args: &ArgsDesc,404 args: &ArgsDesc,405) -> Result<Val> {405) -> Result<Val> {406 parse_args!(context, "encodeUTF8", args, 1, [406 parse_args!(context, "encodeUTF8", args, 1, [410 })410 })411}411}412412413fn builtin_md5(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {413fn builtin_md5(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {414 parse_args!(context, "md5", args, 1, [414 parse_args!(context, "md5", args, 1, [415 0, str: ty!(string) => Val::Str;415 0, str: ty!(string) => Val::Str;416 ], {416 ], {417 Ok(Val::Str(format!("{:x}", md5::compute(&str.as_bytes())).into()))417 Ok(Val::Str(format!("{:x}", md5::compute(&str.as_bytes())).into()))418 })418 })419}419}420420421fn builtin_trace(context: Context, loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {421fn builtin_trace(context: Context, loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {422 parse_args!(context, "trace", args, 2, [422 parse_args!(context, "trace", args, 2, [423 0, str: ty!(string) => Val::Str;423 0, str: ty!(string) => Val::Str;424 1, rest: ty!(any);424 1, rest: ty!(any);435 })435 })436}436}437437438fn builtin_base64(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {438fn builtin_base64(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {439 parse_args!(context, "base64", args, 1, [439 parse_args!(context, "base64", args, 1, [440 0, input: ty!((string | (Array<number>)));440 0, input: ty!((string | (Array<number>)));441 ], {441 ], {453 })453 })454}454}455455456fn builtin_join(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {456fn builtin_join(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {457 parse_args!(context, "join", args, 2, [457 parse_args!(context, "join", args, 2, [458 0, sep: ty!((string | array));458 0, sep: ty!((string | array));459 1, arr: ty!(array) => Val::Arr;459 1, arr: ty!(array) => Val::Arr;513// faster513// faster514fn builtin_escape_string_json(514fn builtin_escape_string_json(515 context: Context,515 context: Context,516 _loc: &Option<ExprLocation>,516 _loc: Option<&ExprLocation>,517 args: &ArgsDesc,517 args: &ArgsDesc,518) -> Result<Val> {518) -> Result<Val> {519 parse_args!(context, "escapeStringJson", args, 1, [519 parse_args!(context, "escapeStringJson", args, 1, [526// faster526// faster527fn builtin_manifest_json_ex(527fn builtin_manifest_json_ex(528 context: Context,528 context: Context,529 _loc: &Option<ExprLocation>,529 _loc: Option<&ExprLocation>,530 args: &ArgsDesc,530 args: &ArgsDesc,531) -> Result<Val> {531) -> Result<Val> {532 parse_args!(context, "manifestJsonEx", args, 2, [532 parse_args!(context, "manifestJsonEx", args, 2, [541}541}542542543// faster543// faster544fn builtin_reverse(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {544fn builtin_reverse(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {545 parse_args!(context, "reverse", args, 1, [545 parse_args!(context, "reverse", args, 1, [546 0, value: ty!(array) => Val::Arr;546 0, value: ty!(array) => Val::Arr;547 ], {547 ], {548 Ok(Val::Arr(value.reversed()))548 Ok(Val::Arr(value.reversed()))549 })549 })550}550}551551552fn builtin_id(context: Context, _loc: &Option<ExprLocation>, args: &ArgsDesc) -> Result<Val> {552fn builtin_id(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {553 parse_args!(context, "id", args, 1, [553 parse_args!(context, "id", args, 1, [554 0, v: ty!(any);554 0, v: ty!(any);555 ], {555 ], {560// faster560// faster561fn builtin_str_replace(561fn builtin_str_replace(562 context: Context,562 context: Context,563 _loc: &Option<ExprLocation>,563 _loc: Option<&ExprLocation>,564 args: &ArgsDesc,564 args: &ArgsDesc,565) -> Result<Val> {565) -> Result<Val> {566 parse_args!(context, "strReplace", args, 3, [566 parse_args!(context, "strReplace", args, 3, [583 })583 })584}584}585585586#[allow(clippy::cognitive_complexity)]587pub fn call_builtin(586pub fn call_builtin(588 context: Context,587 context: Context,589 loc: &Option<ExprLocation>,588 loc: Option<&ExprLocation>,590 name: &str,589 name: &str,591 args: &ArgsDesc,590 args: &ArgsDesc,592) -> Result<Val> {591) -> Result<Val> {crates/jrsonnet-evaluator/src/evaluate.rsdiffbeforeafterboth--- a/crates/jrsonnet-evaluator/src/evaluate.rs
+++ b/crates/jrsonnet-evaluator/src/evaluate.rs
@@ -385,7 +385,7 @@
context: Context,
value: &LocExpr,
args: &ArgsDesc,
- loc: &Option<ExprLocation>,
+ loc: Option<&ExprLocation>,
tailstrict: bool,
) -> Result<Val> {
let value = evaluate(context.clone(), value)?;
@@ -430,7 +430,7 @@
BinaryOp(v1, o, v2) => evaluate_binary_op_special(context, v1, *o, v2)?,
UnaryOp(o, v) => evaluate_unary_op(*o, &evaluate(context, v)?)?,
Var(name) => push(
- loc,
+ loc.as_ref(),
|| format!("variable <{}>", name),
|| Ok(context.binding(name.clone())?.evaluate()?),
)?,
@@ -448,7 +448,7 @@
(Val::Obj(v), Val::Str(s)) => {
let sn = s.clone();
push(
- loc,
+ loc.as_ref(),
|| format!("field <{}> access", sn),
|| {
if let Some(v) = v.get(s.clone())? {
@@ -540,14 +540,14 @@
&evaluate(context.clone(), s)?,
&Val::Obj(evaluate_object(context, t)?),
)?,
- Apply(value, args, tailstrict) => evaluate_apply(context, value, args, loc, *tailstrict)?,
+ Apply(value, args, tailstrict) => evaluate_apply(context, value, args, loc.as_ref(), *tailstrict)?,
Function(params, body) => {
evaluate_method(context, "anonymous".into(), params.clone(), body.clone())
}
Intrinsic(name) => Val::Func(Rc::new(FuncVal::Intrinsic(name.clone()))),
AssertExpr(AssertStmt(value, msg), returned) => {
let assertion_result = push(
- &value.1,
+ value.1.as_ref(),
|| "assertion condition".to_owned(),
|| {
evaluate(context.clone(), value)?
@@ -558,7 +558,7 @@
evaluate(context, returned)?
} else {
push(
- &value.1,
+ value.1.as_ref(),
|| "assertion failure".to_owned(),
|| {
if let Some(msg) = msg {
@@ -571,7 +571,7 @@
}
}
ErrorStmt(e) => push(
- loc,
+ loc.as_ref(),
|| "error statement".to_owned(),
|| {
throw!(RuntimeError(
@@ -585,7 +585,7 @@
cond_else,
} => {
if push(
- loc,
+ loc.as_ref(),
|| "if condition".to_owned(),
|| evaluate(context.clone(), &cond.0)?.try_cast_bool("in if condition"),
)? {
@@ -605,7 +605,7 @@
let import_location = Rc::make_mut(&mut tmp);
import_location.pop();
push(
- loc,
+ loc.as_ref(),
|| format!("import {:?}", path),
|| with_state(|s| s.import_file(import_location, path)),
)?
crates/jrsonnet-evaluator/src/function.rsdiffbeforeafterboth--- a/crates/jrsonnet-evaluator/src/function.rs
+++ b/crates/jrsonnet-evaluator/src/function.rs
@@ -160,7 +160,7 @@
throw!(IntrinsicArgumentReorderingIsNotSupportedYet);
}
}
- let $name = push(&None, || format!("evaluating argument"), || {
+ let $name = push(None, || format!("evaluating argument"), || {
let value = evaluate($ctx.clone(), &$name.1)?;
$ty.check(&value)?;
Ok(value)
crates/jrsonnet-evaluator/src/lib.rsdiffbeforeafterboth--- a/crates/jrsonnet-evaluator/src/lib.rs
+++ b/crates/jrsonnet-evaluator/src/lib.rs
@@ -128,7 +128,7 @@
EVAL_STATE.with(|s| f(s.borrow().as_ref().unwrap()))
}
pub(crate) fn push<T>(
- e: &Option<ExprLocation>,
+ e: Option<&ExprLocation>,
frame_desc: impl FnOnce() -> String,
f: impl FnOnce() -> Result<T>,
) -> Result<T> {
crates/jrsonnet-evaluator/src/typed.rsdiffbeforeafterboth--- a/crates/jrsonnet-evaluator/src/typed.rs
+++ b/crates/jrsonnet-evaluator/src/typed.rs
@@ -78,7 +78,7 @@
}
fn push_type(
- location: &Option<ExprLocation>,
+ location: Option<&ExprLocation>,
error_reason: impl Fn() -> String,
path: impl Fn() -> ValuePathItem,
item: impl Fn() -> Result<()>,
@@ -162,7 +162,7 @@
Val::Arr(a) => {
for (i, item) in a.iter().enumerate() {
push_type(
- &None,
+ None,
|| format!("array index {}", i),
|| ValuePathItem::Index(i as u64),
|| Ok(elem_type.check(&item.clone()?)?),
@@ -176,7 +176,7 @@
Val::Arr(a) => {
for (i, item) in a.iter().enumerate() {
push_type(
- &None,
+ None,
|| format!("array index {}", i),
|| ValuePathItem::Index(i as u64),
|| Ok(elem_type.check(&item.clone()?)?),
@@ -191,7 +191,7 @@
for (k, v) in elems.iter() {
if let Some(got_v) = obj.get((*k).into())? {
push_type(
- &None,
+ None,
|| format!("property {}", k),
|| ValuePathItem::Field((*k).into()),
|| v.check(&got_v),
crates/jrsonnet-evaluator/src/val.rsdiffbeforeafterboth--- a/crates/jrsonnet-evaluator/src/val.rs
+++ b/crates/jrsonnet-evaluator/src/val.rs
@@ -102,7 +102,7 @@
pub fn evaluate(
&self,
call_ctx: Context,
- loc: &Option<ExprLocation>,
+ loc: Option<&ExprLocation>,
args: &ArgsDesc,
tailstrict: bool,
) -> Result<Val> {