git.delta.rocks / jrsonnet / refs/commits / 59f19ba582ad

difftreelog

refactor drop runtime_error! usage

pospolqmYaroslav Bolyukin2026-05-05parent: #cf33b6e.patch.diff
in: master

4 files changed

modifiedcrates/jrsonnet-stdlib/src/arrays.rsdiffbeforeafterboth
--- a/crates/jrsonnet-stdlib/src/arrays.rs
+++ b/crates/jrsonnet-stdlib/src/arrays.rs
@@ -3,7 +3,6 @@
 use jrsonnet_evaluator::{
 	Either, IStr, ObjValue, ObjValueBuilder, Result, ResultExt, Thunk, Val, bail, error,
 	function::{NativeFn, builtin},
-	runtime_error,
 	typed::{BoundedUsize, Either2, FromUntyped},
 	val::{ArrValue, IndexableVal, equals},
 };
@@ -40,8 +39,7 @@
 	Ok(match what {
 		Either2::A(s) => Val::string(s.repeat(count as usize)),
 		Either2::B(arr) => Val::Arr(
-			ArrValue::repeated(arr, count)
-				.ok_or_else(|| runtime_error!("repeated length overflow"))?,
+			ArrValue::repeated(arr, count).ok_or_else(|| error!("repeated length overflow"))?,
 		),
 	})
 }
modifiedcrates/jrsonnet-stdlib/src/encoding.rsdiffbeforeafterboth
after · crates/jrsonnet-stdlib/src/encoding.rs
1use base64::{Engine, engine::general_purpose::STANDARD};2use jrsonnet_evaluator::{3	IBytes, IStr, Result, bail, error,4	function::builtin,5	typed::{Either, Either2},6};78#[builtin]9pub fn builtin_encode_utf8(str: IStr) -> IBytes {10	str.cast_bytes()11}1213#[builtin]14pub fn builtin_decode_utf8(arr: IBytes, #[default(true)] lossy: bool) -> Result<IStr> {15	match arr.clone().cast_str() {16		Some(s) => Ok(s),17		None if lossy => Ok(String::from_utf8_lossy(arr.as_slice()).into()),18		None => {19			bail!("bad utf8")20		}21	}22}2324#[builtin]25pub fn builtin_base64(input: Either![IStr, IBytes]) -> String {26	use Either2::*;27	match input {28		A(l) => STANDARD.encode(l.as_bytes()),29		B(a) => STANDARD.encode(a.as_slice()),30	}31}3233#[builtin]34pub fn builtin_base64_decode_bytes(str: IStr) -> Result<IBytes> {35	Ok(STANDARD36		.decode(str.as_bytes())37		.map_err(|e| error!("invalid base64: {e}"))?38		.as_slice()39		.into())40}4142#[builtin]43pub fn builtin_base64_decode(str: IStr, #[default(false)] lossy: bool) -> Result<String> {44	let bytes = STANDARD45		.decode(str.as_bytes())46		.map_err(|e| error!("invalid base64: {e}"))?;47	if lossy {48		Ok(String::from_utf8_lossy(&bytes).to_string())49	} else {50		String::from_utf8(bytes).map_err(|e| error!("bad utf8: {e}"))51	}52}
modifiedcrates/jrsonnet-stdlib/src/parse.rsdiffbeforeafterboth
--- a/crates/jrsonnet-stdlib/src/parse.rs
+++ b/crates/jrsonnet-stdlib/src/parse.rs
@@ -1,10 +1,9 @@
-use jrsonnet_evaluator::{IStr, Result, Val, function::builtin, runtime_error};
+use jrsonnet_evaluator::{IStr, Result, Val, error, function::builtin};
 use serde_saphyr::options;
 
 #[builtin]
 pub fn builtin_parse_json(str: IStr) -> Result<Val> {
-	let value: Val =
-		serde_json::from_str(&str).map_err(|e| runtime_error!("failed to parse json: {e}"))?;
+	let value: Val = serde_json::from_str(&str).map_err(|e| error!("failed to parse json: {e}"))?;
 	Ok(value)
 }
 
@@ -21,7 +20,7 @@
 			budget: None,
 		},
 	)
-	.map_err(|e| runtime_error!("failed to parse yaml: {e}"))?;
+	.map_err(|e| error!("failed to parse yaml: {e}"))?;
 
 	// saphyr and other yaml implementations disagree on how to handle an empty document in multi-document stream.
 	// Saphyr only considers document started after anything is emitted after the document delimiter
modifiedcrates/jrsonnet-stdlib/src/strings.rsdiffbeforeafterboth
--- a/crates/jrsonnet-stdlib/src/strings.rs
+++ b/crates/jrsonnet-stdlib/src/strings.rs
@@ -206,17 +206,15 @@
 #[builtin]
 pub fn builtin_bigint(v: Either![f64, IStr]) -> Result<Val> {
 	use Either2::*;
-	use jrsonnet_evaluator::runtime_error;
+	use jrsonnet_evaluator::error;
 	Ok(match v {
-		A(a) => {
-			Val::BigInt(Box::new(a.to_string().parse().map_err(|e| {
-				runtime_error!("number is not convertible to bigint: {e}")
-			})?))
-		}
+		A(a) => Val::BigInt(Box::new(
+			a.to_string()
+				.parse()
+				.map_err(|e| error!("number is not convertible to bigint: {e}"))?,
+		)),
 		B(b) => Val::BigInt(Box::new(
-			b.as_str()
-				.parse()
-				.map_err(|e| runtime_error!("bad bigint: {e}"))?,
+			b.as_str().parse().map_err(|e| error!("bad bigint: {e}"))?,
 		)),
 	})
 }