From 572693d117ab9356b7f7844cfa563aeb962c8f48 Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Wed, 26 Jul 2023 17:17:04 +0000 Subject: [PATCH] fix: exp-preserve-order build --- --- a/crates/jrsonnet-stdlib/src/objects.rs +++ b/crates/jrsonnet-stdlib/src/objects.rs @@ -4,7 +4,6 @@ IStr, ObjValue, ObjValueBuilder, }; - #[builtin] pub fn builtin_object_fields_ex( obj: ObjValue, @@ -30,11 +29,22 @@ } #[builtin] -pub fn builtin_object_remove_key(obj: ObjValue, key: IStr) -> ObjValue { +pub fn builtin_object_remove_key( + obj: ObjValue, + key: IStr, + // Standard implementation uses std.objectFields without such argument, we can't + // assume order preservation should always be enabled/disabled + #[cfg(feature = "exp-preserve-order")] preserve_order: Option, +) -> ObjValue { + #[cfg(feature = "exp-preserve-order")] + let preserve_order = preserve_order.unwrap_or(false); let mut new_obj = ObjValueBuilder::with_capacity(obj.len() - 1); - for (k, v) in obj.iter() { + for (k, v) in obj.iter( + #[cfg(feature = "exp-preserve-order")] + preserve_order, + ) { if k == key { - continue + continue; } new_obj.member(k).value_unchecked(v.unwrap()) } -- gitstuff