--- a/crates/jrsonnet-stdlib/src/encoding.rs +++ b/crates/jrsonnet-stdlib/src/encoding.rs @@ -18,11 +18,11 @@ } #[builtin] -pub fn builtin_base64(input: Either![IBytes, IStr]) -> Result { +pub fn builtin_base64(input: Either![IStr, IBytes]) -> Result { use Either2::*; Ok(match input { - A(a) => base64::encode(a.as_slice()), - B(l) => base64::encode(l.bytes().collect::>()), + A(l) => base64::encode(l.as_bytes()), + B(a) => base64::encode(a.as_slice()), }) } --- a/crates/jrsonnet-stdlib/src/lib.rs +++ b/crates/jrsonnet-stdlib/src/lib.rs @@ -253,7 +253,7 @@ context.build() }, #[cfg(feature = "legacy-this-file")] - stdlib_obj: stdlib_uncached(s, settings.clone()), + stdlib_obj: stdlib_uncached(settings.clone()), settings, } } @@ -318,17 +318,14 @@ builder .member("thisFile".into()) .hide() - .value( - s, - Val::Str(match source.source_path().path() { - Some(p) => self.settings().path_resolver.resolve(p).into(), - None => source.source_path().to_string().into(), - }), - ) + .value(Val::Str(match source.source_path().path() { + Some(p) => self.settings().path_resolver.resolve(p).into(), + None => source.source_path().to_string().into(), + })) .expect("this object builder is empty"); let stdlib_with_this_file = builder.build(); - let mut context = ContextBuilder::with_capacity(1); + let mut context = ContextBuilder::with_capacity(s, 1); context.bind( "std".into(), Thunk::evaluated(Val::Obj(stdlib_with_this_file)),