From 884db009a29e267aca74bf2c3b6fdab95de6289e Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Tue, 18 Apr 2023 15:44:42 +0000 Subject: [PATCH] fix: early return from std.set --- --- a/crates/jrsonnet-stdlib/src/sort.rs +++ b/crates/jrsonnet-stdlib/src/sort.rs @@ -57,7 +57,7 @@ Val::Str(s) => s.clone(), _ => unreachable!(), }), - SortKeyType::Unknown => unreachable!(), + SortKeyType::Unknown => unreachable!("list is not empty, as checked in sort"), }; Ok(values) } @@ -81,7 +81,7 @@ Val::Str(s) => s.clone(), _ => unreachable!(), }), - SortKeyType::Unknown => unreachable!(), + SortKeyType::Unknown => unreachable!("list is not empty, as checked in sort"), }; Ok(vk.into_iter().map(|v| v.0).collect()) } @@ -103,13 +103,7 @@ #[builtin] #[allow(non_snake_case)] pub fn builtin_sort(arr: ArrValue, keyF: Option) -> Result { - if arr.len() <= 1 { - return Ok(arr); - } - super::sort::sort( - arr, - keyF.unwrap_or_else(FuncVal::identity), - ) + super::sort::sort(arr, keyF.unwrap_or_else(FuncVal::identity)) } fn uniq_identity(arr: Vec) -> Result> { @@ -160,6 +154,9 @@ #[builtin] #[allow(non_snake_case)] pub fn builtin_set(arr: ArrValue, keyF: Option) -> Result { + if arr.len() <= 1 { + return Ok(arr); + } let keyF = keyF.unwrap_or(FuncVal::identity()); if keyF.is_identity() { let arr = arr.iter().collect::>>()?; -- gitstuff