From 9070b9ae357d19715a8947acccaa3949c6c85b66 Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Mon, 27 May 2024 22:12:39 +0000 Subject: [PATCH] fix: StateBuilder leftovers --- --- a/Cargo.lock +++ b/Cargo.lock @@ -113,15 +113,6 @@ checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" [[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] name = "bitflags" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -483,7 +474,6 @@ dependencies = [ "annotate-snippets", "anyhow", - "bincode", "derivative", "hashbrown 0.14.5", "hi-doc", @@ -1304,6 +1294,7 @@ version = "0.1.0" dependencies = [ "anyhow", + "clap", "indexmap 2.2.6", "itertools", "proc-macro2", --- a/Cargo.toml +++ b/Cargo.toml @@ -56,10 +56,6 @@ sha2 = "0.10.8" sha3 = "0.10.8" -# Pre-parsed stdlib serialization. -# TODO: Drop in favor of replacing std.jsonnet with full native implementation, version 2.0 of bincode is bad. -bincode = "1.3" - # Source code parsing. # Jrsonnet has two parsers for jsonnet - one is for execution, and another is for better parsing diagnostics/lints/LSP. # First (and fast one) is based on peg, second is based on rowan. --- a/cmds/jrsonnet/src/main.rs +++ b/cmds/jrsonnet/src/main.rs @@ -147,9 +147,8 @@ } fn main_catch(opts: Opts) -> bool { - let s = State::default(); let trace = opts.trace.trace_format(); - if let Err(e) = main_real(&s, opts) { + if let Err(e) = main_real(opts) { if let Error::Evaluation(e) = e { let mut out = String::new(); trace.write_trace(&mut out, &e).expect("format error"); @@ -162,18 +161,17 @@ true } -fn main_real(s: &State, opts: Opts) -> Result<(), Error> { +fn main_real(opts: Opts) -> Result<(), Error> { let _gc_leak_guard = opts.gc.leak_on_exit(); let _gc_print_stats = opts.gc.stats_printer(); let _stack_depth_override = opts.misc.stack_size_override(); let import_resolver = opts.misc.import_resolver(); - s.set_import_resolver(import_resolver); + let std = opts.std.context_initializer()?; - let std = opts.std.context_initializer()?; - if let Some(std) = std { - s.set_context_initializer(std); - } + let mut s = State::builder(); + s.import_resolver(import_resolver).context_initializer(std); + let s = s.build(); let input = opts.input.input.ok_or(Error::MissingInputArgument)?; let val = if opts.input.exec { @@ -189,7 +187,7 @@ let tla = opts.tla.tla_opts()?; #[allow(unused_mut)] - let mut val = apply_tla(s.clone(), &tla, val)?; + let mut val = apply_tla(s, &tla, val)?; #[cfg(feature = "exp-apply")] for apply in opts.input.exp_apply { -- gitstuff