git.delta.rocks / jrsonnet / refs/commits / 4ab075dbe65c

difftreelog

fix std function argument names

Yaroslav Bolyukin2023-08-10parent: #cfa49ab.patch.diff
in: master

6 files changed

modifiedcrates/jrsonnet-stdlib/src/arrays.rsdiffbeforeafterboth
255}255}
256256
257#[builtin]257#[builtin]
258pub fn builtin_remove_at(arr: ArrValue, index: usize) -> Result<ArrValue> {258pub fn builtin_remove_at(arr: ArrValue, at: usize) -> Result<ArrValue> {
259 let newArrLeft = arr.clone().slice(None, Some(index), None);259 let newArrLeft = arr.clone().slice(None, Some(at), None);
260 let newArrRight = arr.slice(Some(index + 1), None, None);260 let newArrRight = arr.slice(Some(at + 1), None, None);
261261
262 Ok(ArrValue::extended(262 Ok(ArrValue::extended(
263 newArrLeft.unwrap_or(ArrValue::empty()),263 newArrLeft.unwrap_or(ArrValue::empty()),
modifiedcrates/jrsonnet-stdlib/src/hash.rsdiffbeforeafterboth
--- a/crates/jrsonnet-stdlib/src/hash.rs
+++ b/crates/jrsonnet-stdlib/src/hash.rs
@@ -6,25 +6,25 @@
 }
 
 #[builtin]
-pub fn builtin_sha256(s: IStr) -> String {
+pub fn builtin_sha256(str: IStr) -> String {
 	use sha2::digest::Digest;
-	format!("{:x}", sha2::Sha256::digest(s.as_bytes()))
+	format!("{:x}", sha2::Sha256::digest(str.as_bytes()))
 }
 
 #[builtin]
-pub fn builtin_sha512(s: IStr) -> String {
+pub fn builtin_sha512(str: IStr) -> String {
 	use sha2::digest::Digest;
-	format!("{:x}", sha2::Sha512::digest(s.as_bytes()))
+	format!("{:x}", sha2::Sha512::digest(str.as_bytes()))
 }
 
 #[builtin]
-pub fn builtin_sha1(s: IStr) -> String {
+pub fn builtin_sha1(str: IStr) -> String {
 	use sha1::digest::Digest;
-	format!("{:x}", sha1::Sha1::digest(s.as_bytes()))
+	format!("{:x}", sha1::Sha1::digest(str.as_bytes()))
 }
 
 #[builtin]
-pub fn builtin_sha3(s: IStr) -> String {
+pub fn builtin_sha3(str: IStr) -> String {
 	use sha3::digest::Digest;
-	format!("{:x}", sha3::Sha3_512::digest(s.as_bytes()))
+	format!("{:x}", sha3::Sha3_512::digest(str.as_bytes()))
 }
modifiedcrates/jrsonnet-stdlib/src/lib.rsdiffbeforeafterboth
--- a/crates/jrsonnet-stdlib/src/lib.rs
+++ b/crates/jrsonnet-stdlib/src/lib.rs
@@ -80,7 +80,7 @@
 		("any", builtin_any::INST),
 		("all", builtin_all::INST),
 		("member", builtin_member::INST),
-		("contains", builtin_member::INST),
+		("contains", builtin_contains::INST),
 		("count", builtin_count::INST),
 		("avg", builtin_avg::INST),
 		("removeAt", builtin_remove_at::INST),
modifiedcrates/jrsonnet-stdlib/src/misc.rsdiffbeforeafterboth
--- a/crates/jrsonnet-stdlib/src/misc.rs
+++ b/crates/jrsonnet-stdlib/src/misc.rs
@@ -57,12 +57,12 @@
 	this: &builtin_trace,
 	loc: CallLocation,
 	str: Val,
-	rest: Thunk<Val>,
+	rest: Option<Thunk<Val>>,
 ) -> Result<Val> {
 	this.settings.borrow().trace_printer.print_trace(
 		loc,
-		match str {
-			Val::Str(s) => s.into_flat(),
+		match &str {
+			Val::Str(s) => s.clone().into_flat(),
 			Val::Func(f) => format!("{f:?}").into(),
 			v => v
 				.manifest(JsonFormat::std_to_json(
@@ -75,7 +75,11 @@
 				.into(),
 		},
 	);
-	rest.evaluate()
+	if let Some(rest) = rest {
+		rest.evaluate()
+	} else {
+		Ok(str)
+	}
 }
 
 #[allow(clippy::comparison_chain)]
modifiedcrates/jrsonnet-stdlib/src/strings.rsdiffbeforeafterboth
--- a/crates/jrsonnet-stdlib/src/strings.rs
+++ b/crates/jrsonnet-stdlib/src/strings.rs
@@ -33,8 +33,8 @@
 }
 
 #[builtin]
-pub fn builtin_equals_ignore_case(x: String, y: String) -> bool {
-	x.to_ascii_lowercase() == y.to_ascii_lowercase()
+pub fn builtin_equals_ignore_case(str1: String, str2: String) -> bool {
+	str1.to_ascii_lowercase() == str2.to_ascii_lowercase()
 }
 
 #[builtin]
modifiedtests/suite/std_param_names.jsonnetdiffbeforeafterboth
--- a/tests/suite/std_param_names.jsonnet
+++ b/tests/suite/std_param_names.jsonnet
@@ -126,8 +126,33 @@
     decodeUTF8: ['arr'],
 
     sum: ['arr'],
+    avg: ['arr', 'onEmpty'],
+    minArray: ['arr', 'keyF', 'onEmpty'],
+    maxArray: ['arr', 'keyF', 'onEmpty'],
+    remove: ['arr', 'elem'],
+    contains: ['arr', 'elem'],
+    removeAt: ['arr', 'at'],
+
+    equalsIgnoreCase: ['str1', 'str2'],
+    isEmpty: ['str'],
+
     xor: ['x', 'y'],
+    xnor: ['x', 'y'],
+    isInteger: ['x'],
+    isDecimal: ['x'],
+    isEven: ['x'],
+    isOdd: ['x'],
+    round: ['x'],
 
+    sha1: ['str'],
+    sha256: ['str'],
+    sha512: ['str'],
+    sha3: ['str'],
+
+    objectKeysValues: ['o'],
+    objectKeysValuesAll: ['o'],
+    objectRemoveKey: ['obj', 'key'],
+
     // C++ jsonnet undocumented
     __compare: ['v1', 'v2'],
     __compare_array: ['arr1', 'arr2'],
@@ -138,3 +163,9 @@
 };
 
 std.all(std.map(function(key) assertNames(key, names[key]), std.objectFields(names)))
+&& std.all([
+    assert std.objectHasAll(names, key): ('function "%s" is not defined in names'
+        % key); true,
+    for key in std.objectFieldsAll(std)
+    if key != 'thisFile'
+])