--- a/Cargo.lock +++ b/Cargo.lock @@ -213,6 +213,12 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] name = "ciborium" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -263,9 +269,9 @@ [[package]] name = "clap_complete" -version = "4.6.2" +version = "4.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff7a1dccbdd8b078c2bdebff47e404615151534d5043da397ec50286816f9cb" +checksum = "660c0520455b1013b9bcb0393d5f643d7e4454fb69c915b8d6d2aa0e9a45acc3" dependencies = [ "clap", ] @@ -413,9 +419,9 @@ [[package]] name = "digest" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4850db49bf08e663084f7fb5c87d202ef91a3907271aff24a94eb97ff039153c" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", @@ -623,6 +629,16 @@ ] [[package]] +name = "granit-parser" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7e736dfe3881c53a7dce0685eb18202d0d9fe6911782f9870946eb9ee89d778" +dependencies = [ + "arraydeque", + "smallvec", +] + +[[package]] name = "half" version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -984,18 +1000,18 @@ [[package]] name = "jrsonnet-gcmodule" -version = "0.4.6" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb04c12f50f954e1d8b3b5a7e99c448da97af2e1f7435a88f3c9b9f2a677015a" +checksum = "f65a6fdef5568ea2e3459dcad15979d7613f968cbacf722e1138ffe83d28ee24" dependencies = [ "jrsonnet-gcmodule-derive", ] [[package]] name = "jrsonnet-gcmodule-derive" -version = "0.4.6" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "454a895e7c0b7ea3584966e8b346c6c80fdd33acb0224ad7e3fbd80cf8171601" +checksum = "829a23aa96f1afb78bbc9722e323ced7a0b75d9b89cec6bfbc709cf484e8a0a4" dependencies = [ "proc-macro2", "quote", @@ -1220,9 +1236,9 @@ [[package]] name = "lru" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e0b564323a0fb6d54b864f625ae139de9612e27edb944dda37c109f05aac531" +checksum = "8a860605968fce16869fd239cf4237a82f3ac470723415db603b0e8b6c8d4fb9" dependencies = [ "hashbrown 0.17.0", ] @@ -1259,6 +1275,18 @@ ] [[package]] +name = "nix" +version = "0.31.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6d0705320c1e6ba1d912b5e37cf18071b6c2e9b7fa8215a1e8a7651966f5d3" +dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] name = "num-bigint" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1356,9 +1384,9 @@ [[package]] name = "peg" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9928cfca101b36ec5163e70049ee5368a8a1c3c6efc9ca9c5f9cc2f816152477" +checksum = "0aad070be5b63aa72103f2fcdd70a83adbd5e90112ce5b574171ff1c65501773" dependencies = [ "peg-macros", "peg-runtime", @@ -1366,9 +1394,9 @@ [[package]] name = "peg-macros" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6298ab04c202fa5b5d52ba03269fb7b74550b150323038878fe6c372d8280f71" +checksum = "ddd8ef6825cae95355031ae26a99b616a2a21f22ba2de0197c43dfb05acbe7ee" dependencies = [ "peg-runtime", "proc-macro2", @@ -1377,9 +1405,9 @@ [[package]] name = "peg-runtime" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "132dca9b868d927b35b5dd728167b2dee150eb1ad686008fc71ccb298b776fca" +checksum = "7011d97b484a5ebdc4b1fdb3b12d5e4bbbea56e9d22b688f2e79e04b65a7d8a6" [[package]] name = "percent-encoding" @@ -1645,17 +1673,6 @@ ] [[package]] -name = "saphyr-parser-bw" -version = "0.0.611" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67dec0c833db75dc98957956b303fe447ffc5eb13f2325ef4c2350f7f3aa69e3" -dependencies = [ - "arraydeque", - "smallvec", - "thiserror", -] - -[[package]] name = "semver" version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1673,17 +1690,17 @@ [[package]] name = "serde-saphyr" -version = "0.0.25" +version = "0.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75e214449d107a81daf1453eb46c9314457660509534883e82db6faca2034a8a" +checksum = "dcc7fe48e34d02a97bc8e6253b8b91e5a47fe2c47eaacb5149cefbb69922eaf0" dependencies = [ "ahash", "annotate-snippets", "base64", "encoding_rs_io", "getrandom 0.3.4", + "granit-parser", "num-traits", - "saphyr-parser-bw", "serde", "smallvec", ] @@ -2297,6 +2314,7 @@ "clap", "indexmap", "itertools 0.14.0", + "nix", "proc-macro2", "quote", "ungrammar", --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ jrsonnet-types = { path = "./crates/jrsonnet-types", version = "0.5.0-pre98" } jrsonnet-formatter = { path = "./crates/jrsonnet-formatter", version = "0.5.0-pre98" } jrsonnet-lexer = { path = "./crates/jrsonnet-lexer", version = "0.5.0-pre98" } -jrsonnet-gcmodule = { version = "0.4.6" } +jrsonnet-gcmodule = { version = "0.5.0" } # Diagnostics. # hi-doc is my library, which handles text formatting very well, but isn't polished enough yet # Previous implementation was based on annotate-snippets, which I don't like for many reasons. @@ -47,7 +47,7 @@ # Parsing, manifestification is implemented manually everywhere serde = "1.0.228" serde_json = "1.0.149" -serde-saphyr = { version = "0.0.25", default-features = false, features = [ +serde-saphyr = { version = "0.0.26", default-features = false, features = [ "deserialize", ] } @@ -99,7 +99,7 @@ xshell = "0.2.7" regex = "1.12" -lru = "0.17.0" +lru = "0.18.0" syn-dissect-closure = "0.1.0" @@ -107,6 +107,7 @@ insta = { version = "1.46", features = ["glob"] } criterion = { version = "0.8" } strip-ansi-escapes = "0.2.1" +nix = { version = "0.31", features = ["process"] } # Web wasm-bindgen = "=0.2.106" --- a/crates/jrsonnet-cli/src/stdlib.rs +++ b/crates/jrsonnet-cli/src/stdlib.rs @@ -23,12 +23,6 @@ /// assert_eq!(ext.name, "name"); /// assert_eq!(ext.value, "value"); /// -/// std::env::set_var("name", "value"); -/// -/// let ext = ExtStr::from_str("name").unwrap(); -/// assert_eq!(ext.name, "name"); -/// assert_eq!(ext.value, "value"); -/// /// let ext = ExtStr::from_str("name=value=with=equals").unwrap(); /// assert_eq!(ext.name, "name"); /// assert_eq!(ext.value, "value=with=equals"); --- a/crates/jrsonnet-evaluator/src/lib.rs +++ b/crates/jrsonnet-evaluator/src/lib.rs @@ -1,5 +1,5 @@ //! jsonnet interpreter implementation -#![cfg_attr(nightly, feature(thread_local, type_alias_impl_trait))] +#![cfg_attr(nightly, feature(thread_local))] // For jrsonnet-macros extern crate self as jrsonnet_evaluator; --- a/crates/jrsonnet-evaluator/src/trace/mod.rs +++ b/crates/jrsonnet-evaluator/src/trace/mod.rs @@ -2,6 +2,7 @@ use std::cell::RefCell; use std::{ any::Any, + fmt, path::{Component, Path, PathBuf}, }; @@ -10,7 +11,7 @@ #[cfg(feature = "explaining-traces")] use jrsonnet_ir::Span; -use crate::{Error, error::ErrorKind}; +use crate::{Error, ResolvePathOwned, error::ErrorKind}; /// The way paths should be displayed #[derive(Clone, Trace)] @@ -61,12 +62,8 @@ /// Implements pretty-printing of traces #[allow(clippy::module_name_repetitions)] pub trait TraceFormat: Trace { - fn write_trace( - &self, - out: &mut dyn std::fmt::Write, - error: &Error, - ) -> Result<(), std::fmt::Error>; - fn format(&self, error: &Error) -> Result { + fn write_trace(&self, out: &mut dyn fmt::Write, error: &Error) -> Result<(), fmt::Error>; + fn format(&self, error: &Error) -> Result { let mut out = String::new(); self.write_trace(&mut out, error)?; Ok(out) @@ -76,10 +73,10 @@ } fn print_code_location( - out: &mut impl std::fmt::Write, + out: &mut impl fmt::Write, start: &CodeLocation, end: &CodeLocation, -) -> Result<(), std::fmt::Error> { +) -> Result<(), fmt::Error> { if start.line == end.line { if start.column == end.column { write!(out, "{}:{}", start.line, start.column)?; @@ -123,12 +120,20 @@ } impl TraceFormat for CompactFormat { - fn write_trace( - &self, - out: &mut dyn std::fmt::Write, - error: &Error, - ) -> Result<(), std::fmt::Error> { - write!(out, "{}", error.error())?; + fn write_trace(&self, out: &mut dyn fmt::Write, error: &Error) -> Result<(), fmt::Error> { + if let ErrorKind::ImportFileNotFound(from, import) = error.error() { + let from = from + .path() + .map_or_else(|| from.to_string(), |path| self.resolver.resolve(path)); + let import = match import { + ResolvePathOwned::Str(s) => s.clone(), + ResolvePathOwned::Path(path_buf) => self.resolver.resolve(path_buf), + }; + write!(out, "import file not found {import} from {from}")?; + } else { + write!(out, "{}", error.error())?; + } + if let ErrorKind::ImportSyntaxError { path, error } = error.error() { use std::fmt::Write; @@ -212,11 +217,7 @@ pub max_trace: usize, } impl TraceFormat for JsFormat { - fn write_trace( - &self, - out: &mut dyn std::fmt::Write, - error: &Error, - ) -> Result<(), std::fmt::Error> { + fn write_trace(&self, out: &mut dyn fmt::Write, error: &Error) -> Result<(), fmt::Error> { write!(out, "{}", error.error())?; for item in &error.trace().0 { writeln!(out)?; @@ -257,11 +258,7 @@ } #[cfg(feature = "explaining-traces")] impl TraceFormat for HiDocFormat { - fn write_trace( - &self, - out: &mut dyn std::fmt::Write, - error: &Error, - ) -> Result<(), std::fmt::Error> { + fn write_trace(&self, out: &mut dyn fmt::Write, error: &Error) -> Result<(), fmt::Error> { struct ResetData { loc: Span, } @@ -284,8 +281,8 @@ let mut builder: Option = None; let mut current_src: Option<&str> = None; let flush = |builder: Option, - out: &mut dyn std::fmt::Write| - -> Result<(), std::fmt::Error> { + out: &mut dyn fmt::Write| + -> Result<(), fmt::Error> { if let Some(b) = builder { let ansi = source_to_ansi(&b.build()); write!(out, "\n{}", ansi.trim_end())?; --- a/crates/jrsonnet-formatter/src/lib.rs +++ b/crates/jrsonnet-formatter/src/lib.rs @@ -913,6 +913,8 @@ pub fn format(input: &str, opts: &FormatOptions) -> Result { let (parsed, errors) = jrsonnet_rowan_parser::parse(input); if !errors.is_empty() { + // Reserve one char for EOF display + let input = format!("{input} "); let mut builder = hi_doc::SnippetBuilder::new(input); for error in errors { builder --- a/crates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@comments.jsonnet.snap +++ b/crates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@comments.jsonnet.snap @@ -14,3 +14,6 @@ value: 42, }, } +// Empty before +// +// Empty after --- a/crates/jrsonnet-formatter/src/tests/comments.jsonnet +++ b/crates/jrsonnet-formatter/src/tests/comments.jsonnet @@ -9,3 +9,6 @@ value: 42, }, } +// Empty before +// +// Empty after --- a/flake.lock +++ b/flake.lock @@ -1,16 +1,31 @@ { "nodes": { + "cpp-jsonnet-for-tests": { + "flake": false, + "locked": { + "lastModified": 1774879924, + "narHash": "sha256-yFxRp/YHaj1BtAAK5n5QcTBTl/a7m5pU5Wh65+sknT4=", + "owner": "google", + "repo": "jsonnet", + "rev": "2ef32abf3d5b83c24863949e8413b810d54c7f2a", + "type": "github" + }, + "original": { + "owner": "google", + "repo": "jsonnet", + "type": "github" + } + }, "crane": { "locked": { - "lastModified": 1775245625, - "owner": "CertainLach", + "lastModified": 1777830388, + "owner": "ipetkov", "repo": "crane", - "rev": "9c67a3098774323d0270004eed7d7291ddcfe918", + "rev": "d459c1350e96ce1a7e3859c513ef5e9869d67d6f", "type": "github" }, "original": { - "owner": "CertainLach", - "ref": "refactor/drop-remarshal", + "owner": "ipetkov", "repo": "crane", "type": "github" } @@ -43,10 +58,10 @@ ] }, "locked": { - "lastModified": 1775087534, + "lastModified": 1777988971, "owner": "hercules-ci", "repo": "flake-parts", - "rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b", + "rev": "0678d8986be1661af6bb555f3489f2fdfc31f6ff", "type": "github" }, "original": { @@ -55,6 +70,22 @@ "type": "github" } }, + "go-jsonnet-for-tests": { + "flake": false, + "locked": { + "lastModified": 1774367753, + "narHash": "sha256-O7b26aobvs1gHsUNM2RZ/WnIMpFJOa/XbupttTMJ8LA=", + "owner": "google", + "repo": "go-jsonnet", + "rev": "567b61ac4a6c23546a62d79324bb4aaed6bdc941", + "type": "github" + }, + "original": { + "owner": "google", + "repo": "go-jsonnet", + "type": "github" + } + }, "hercules-ci-effects": { "inputs": { "flake-parts": [ @@ -65,10 +96,10 @@ ] }, "locked": { - "lastModified": 1773550609, + "lastModified": 1776603440, "owner": "hercules-ci", "repo": "hercules-ci-effects", - "rev": "554f6ed448ca74c00aa2371cde901ae1e73005b9", + "rev": "e2456ee419f9d75f8382e3d6c5af4690b316a5a8", "type": "github" }, "original": { @@ -79,10 +110,10 @@ }, "nixpkgs": { "locked": { - "lastModified": 1775270577, + "lastModified": 1778022901, "owner": "nixos", "repo": "nixpkgs", - "rev": "9370b0614498381a0019e082c10e9cf8413e7c2c", + "rev": "5d0f6be1c3cebacc3e817a18a44a3ac89ff66109", "type": "github" }, "original": { @@ -94,9 +125,11 @@ }, "root": { "inputs": { + "cpp-jsonnet-for-tests": "cpp-jsonnet-for-tests", "crane": "crane", "fenix": "fenix", "flake-parts": "flake-parts", + "go-jsonnet-for-tests": "go-jsonnet-for-tests", "hercules-ci-effects": "hercules-ci-effects", "nixpkgs": "nixpkgs", "shelly": "shelly", @@ -141,10 +174,10 @@ ] }, "locked": { - "lastModified": 1775125835, + "lastModified": 1775636079, "owner": "numtide", "repo": "treefmt-nix", - "rev": "75925962939880974e3ab417879daffcba36c4a3", + "rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba", "type": "github" }, "original": { --- a/flake.nix +++ b/flake.nix @@ -19,8 +19,17 @@ url = "github:numtide/treefmt-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; - crane.url = "github:CertainLach/crane/refactor/drop-remarshal"; + crane.url = "github:ipetkov/crane"; shelly.url = "github:CertainLach/shelly"; + + cpp-jsonnet-for-tests = { + url = "github:google/jsonnet"; + flake = false; + }; + go-jsonnet-for-tests = { + url = "github:google/go-jsonnet"; + flake = false; + }; }; outputs = inputs: @@ -60,17 +69,16 @@ }; targetArch = pkgs.stdenv.hostPlatform.parsed.cpu.name; rustfmt = (pkgs.fenix.complete or pkgs.fenix.stable).rustfmt; - rust-analyzer = (pkgs.fenix.complete or pkgs.fenix.stable).rust-analyzer; toolchain = pkgs.fenix.combine [ - (pkgs.fenix.stable.withComponents [ + (pkgs.fenix.complete.withComponents [ "cargo" "clippy" "rustc" "rust-src" + "rustfmt" + "rust-analyzer" ]) - rustfmt - rust-analyzer - pkgs.fenix.targets.wasm32-unknown-unknown.stable.rust-std + pkgs.fenix.targets.wasm32-unknown-unknown.latest.rust-std ]; craneLib = (inputs.crane.mkLib pkgs).overrideToolchain toolchain; treefmt = @@ -238,9 +246,11 @@ let jrsonnet = pkgs.callPackage ./nix/jrsonnet.nix { inherit craneLib; + inherit (inputs) cpp-jsonnet-for-tests go-jsonnet-for-tests; }; jrsonnet-experimental = pkgs.callPackage ./nix/jrsonnet.nix { inherit craneLib; + inherit (inputs) cpp-jsonnet-for-tests go-jsonnet-for-tests; withExperimentalFeatures = true; }; in @@ -272,7 +282,23 @@ kdePackages.kcachegrind samply ]; + environment = { + CPP_JSONNET_FOR_TESTS = inputs.cpp-jsonnet-for-tests; + GO_JSONNET_FOR_TESTS = inputs.go-jsonnet-for-tests; + }; }; + shelly.shells.impls = { + packages = + (with self'.legacyPackages.jsonnetImpls; [ + cpp-jsonnet + go-jsonnet + rsjsonnet + sjsonnet + ]) + ++ (with self'.packages; [ + jrsonnet + ]); + }; }; hercules-ci.github-releases.files = let @@ -352,6 +378,7 @@ enable = true; secretName = "crates-io"; extraPublishArgs = [ "--workspace" ]; + assertVersions = true; }; hercules-ci.flake-update = { enable = true; --- a/nix/jrsonnet.nix +++ b/nix/jrsonnet.nix @@ -4,6 +4,9 @@ makeWrapper, withExperimentalFeatures ? false, forBenchmarks ? false, + + cpp-jsonnet-for-tests, + go-jsonnet-for-tests, }: let inherit (lib) optionalString; @@ -18,6 +21,9 @@ cargoExtraArgs = "--locked --features=mimalloc${optionalString withExperimentalFeatures ",experimental"}"; + CPP_JSONNET_FOR_TESTS = cpp-jsonnet-for-tests; + GO_JSONNET_FOR_TESTS = go-jsonnet-for-tests; + nativeBuildInputs = [ makeWrapper ]; # To clean-up hyperfine output --- a/tests/cpp_test_suite_golden_override/error.01.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.01.jsonnet.golden @@ -1,5 +1,5 @@ runtime error: foo - error.01.jsonnet:17:29-35: error statement - error.01.jsonnet:18:36-40: function call - error.01.jsonnet:19:35-39: function call - error.01.jsonnet:20:7-11: function call \ No newline at end of file + error.01.jsonnet:17:29-33: error statement + error.01.jsonnet:18:36-38: function call + error.01.jsonnet:19:35-37: function call + error.01.jsonnet:20:7-9: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.02.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.02.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: Foo. - error.02.jsonnet:17:1-7: error statement \ No newline at end of file + error.02.jsonnet:17:1-5: error statement \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.03.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.03.jsonnet.golden @@ -1,3 +1,3 @@ runtime error: foo - error.03.jsonnet:17:21-27: error statement - error.03.jsonnet:18:8-10: field access \ No newline at end of file + error.03.jsonnet:17:21-25: error statement + error.03.jsonnet:18:8-8: field access \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.04.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.04.jsonnet.golden @@ -1,3 +1,3 @@ runtime error: foo - error.04.jsonnet:17:21-27: error statement + error.04.jsonnet:17:21-25: error statement field evaluation \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.05.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.05.jsonnet.golden @@ -1,4 +1,4 @@ runtime error: foo - error.05.jsonnet:17:21-27: error statement + error.05.jsonnet:17:21-25: error statement field evaluation field manifestification \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.06.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.06.jsonnet.golden @@ -1,2 +1,2 @@ attempted to divide by zero - error.06.jsonnet:19:2-5: function call \ No newline at end of file + error.06.jsonnet:19:2-3: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.07.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.07.jsonnet.golden @@ -1,4 +1,4 @@ runtime error: sarcasm - error.07.jsonnet:18:31-37: error statement - error.07.jsonnet:17:33-35: element <3> access - error.07.jsonnet:18:20-55: function call \ No newline at end of file + error.07.jsonnet:18:31-35: error statement + error.07.jsonnet:17:33-33: element <3> access + error.07.jsonnet:18:20-53: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.08.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.08.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: {"a": 1, "b": 2, "c": 3} - error.08.jsonnet:18:1-7: error statement \ No newline at end of file + error.08.jsonnet:18:1-5: error statement \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.assert.fail1.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.assert.fail1.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: null - error.assert.fail1.jsonnet:20:8-15: assertion failure \ No newline at end of file + error.assert.fail1.jsonnet:20:8-13: assertion failure \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.assert.fail2.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.assert.fail2.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: foo was not equal to bar - error.assert.fail2.jsonnet:20:8-15: assertion failure \ No newline at end of file + error.assert.fail2.jsonnet:20:8-13: assertion failure \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.assert_equal_obj.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.assert_equal_obj.jsonnet.golden @@ -5,4 +5,4 @@ B: { "b": 1 } - error.assert_equal_obj.jsonnet:17:16-37: function call \ No newline at end of file + error.assert_equal_obj.jsonnet:17:16-35: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.assert_equal_str.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.assert_equal_str.jsonnet.golden @@ -8,4 +8,4 @@ four - error.assert_equal_str.jsonnet:17:16-46: function call \ No newline at end of file + error.assert_equal_str.jsonnet:17:16-44: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.decodeUTF8_float.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.decodeUTF8_float.jsonnet.golden @@ -1,3 +1,3 @@ runtime error: cannot convert number with fractional part to u8 argument evaluation - error.decodeUTF8_float.jsonnet:1:15-24: function call \ No newline at end of file + error.decodeUTF8_float.jsonnet:1:15-22: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.decodeUTF8_nan.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.decodeUTF8_nan.jsonnet.golden @@ -1,4 +1,4 @@ type error: expected BoundedNumber<0, 255>, got string at self[0] array index 0 argument evaluation - error.decodeUTF8_nan.jsonnet:1:15-25: function call \ No newline at end of file + error.decodeUTF8_nan.jsonnet:1:15-23: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.flatMap_array_typecheck.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.flatMap_array_typecheck.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: in std.join all items should be arrays - error.flatMap_array_typecheck.jsonnet:1:12-45: function call \ No newline at end of file + error.flatMap_array_typecheck.jsonnet:1:12-43: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.flatMap_seq_typecheck.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.flatMap_seq_typecheck.jsonnet.golden @@ -2,4 +2,4 @@ - expected array, got object - expected string, got object argument evaluation - error.flatMap_seq_typecheck.jsonnet:1:12-52: function call \ No newline at end of file + error.flatMap_seq_typecheck.jsonnet:1:12-50: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.flatMap_string_typecheck.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.flatMap_string_typecheck.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: in std.join all items should be strings - error.flatMap_string_typecheck.jsonnet:1:12-50: function call \ No newline at end of file + error.flatMap_string_typecheck.jsonnet:1:12-48: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.function_duplicate_arg.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.function_duplicate_arg.jsonnet.golden @@ -1,2 +1,2 @@ argument x is already bound - error.function_duplicate_arg.jsonnet:17:21-30: function preparation \ No newline at end of file + error.function_duplicate_arg.jsonnet:17:21-28: function preparation \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.function_too_many_args.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.function_too_many_args.jsonnet.golden @@ -1,3 +1,3 @@ too many args, function has 2 Function has the following signature: (a, b) - error.function_too_many_args.jsonnet:19:4-14: function preparation \ No newline at end of file + error.function_too_many_args.jsonnet:19:4-12: function preparation \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.import_static-check-failure.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.import_static-check-failure.jsonnet.golden @@ -1,2 +1,2 @@ static analysis errors: undefined local: x - error.import_static-check-failure.jsonnet:1:1-8: import \ No newline at end of file + error.import_static-check-failure.jsonnet:1:1-6: import \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.import_syntax-error.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.import_syntax-error.jsonnet.golden @@ -1,3 +1,4 @@ syntax error: unterminated double-quoted string - syntax_error.jsonnet:1:1 - error.import_syntax-error.jsonnet:1:1-8: import \ No newline at end of file + lib/syntax_error.jsonnet:1:1 + lib/syntax_error.jsonnet:1:1-2:0: parse imported + error.import_syntax-error.jsonnet:1:1-6: import \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.inside_equals_array.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.inside_equals_array.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: foobar - error.inside_equals_array.jsonnet:18:18-24: error statement \ No newline at end of file + error.inside_equals_array.jsonnet:18:18-22: error statement \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.inside_equals_object.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.inside_equals_object.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: foobar - error.inside_equals_object.jsonnet:18:22-28: error statement \ No newline at end of file + error.inside_equals_object.jsonnet:18:22-26: error statement \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.inside_tostring_array.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.inside_tostring_array.jsonnet.golden @@ -1,3 +1,3 @@ runtime error: foobar - error.inside_tostring_array.jsonnet:17:8-14: error statement + error.inside_tostring_array.jsonnet:17:8-12: error statement elem <2> evaluation \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.inside_tostring_object.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.inside_tostring_object.jsonnet.golden @@ -1,3 +1,3 @@ runtime error: foobar - error.inside_tostring_object.jsonnet:17:12-18: error statement + error.inside_tostring_object.jsonnet:17:12-16: error statement field evaluation \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.invariant.avoid_output_change.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.invariant.avoid_output_change.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: null - error.invariant.avoid_output_change.jsonnet:18:10-25: assertion failure \ No newline at end of file + error.invariant.avoid_output_change.jsonnet:18:10-23: assertion failure \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.invariant.equality.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.invariant.equality.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: null - error.invariant.equality.jsonnet:17:10-16: assertion failure \ No newline at end of file + error.invariant.equality.jsonnet:17:10-14: assertion failure \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.invariant.option.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.invariant.option.jsonnet.golden @@ -1,6 +1,6 @@ type error: expected array, got string argument evaluation - error.invariant.option.jsonnet:19:33-56: function call + error.invariant.option.jsonnet:19:33-54: function call argument evaluation - error.invariant.option.jsonnet:19:20-57: function call - error.invariant.option.jsonnet:19:10-61: assertion condition \ No newline at end of file + error.invariant.option.jsonnet:19:20-55: function call + error.invariant.option.jsonnet:19:10-59: assertion condition \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.invariant.simple.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.invariant.simple.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: null - error.invariant.simple.jsonnet:18:10-16: assertion failure \ No newline at end of file + error.invariant.simple.jsonnet:18:10-14: assertion failure \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.invariant.simple2.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.invariant.simple2.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: my error message - error.invariant.simple2.jsonnet:18:10-17: assertion failure \ No newline at end of file + error.invariant.simple2.jsonnet:18:10-15: assertion failure \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.invariant.simple3.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.invariant.simple3.jsonnet.golden @@ -1,3 +1,3 @@ runtime error: my error message - error.invariant.simple3.jsonnet:18:10-16: error statement - error.invariant.simple3.jsonnet:18:10-35: assertion condition \ No newline at end of file + error.invariant.simple3.jsonnet:18:10-14: error statement + error.invariant.simple3.jsonnet:18:10-33: assertion condition \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.manifest_toml_null_value.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.manifest_toml_null_value.jsonnet.golden @@ -2,4 +2,4 @@ table manifestification section manifestification section manifestification - error.manifest_toml_null_value.jsonnet:17:19-55: function call \ No newline at end of file + error.manifest_toml_null_value.jsonnet:17:19-53: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.manifest_toml_wrong_type.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.manifest_toml_wrong_type.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected object, got array argument evaluation - error.manifest_toml_wrong_type.jsonnet:17:19-30: function call \ No newline at end of file + error.manifest_toml_wrong_type.jsonnet:17:19-28: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.obj_assert.fail1.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.obj_assert.fail1.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: null - error.obj_assert.fail1.jsonnet:20:23-30: assertion failure \ No newline at end of file + error.obj_assert.fail1.jsonnet:20:23-28: assertion failure \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.obj_assert.fail2.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.obj_assert.fail2.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: foo was not equal to bar - error.obj_assert.fail2.jsonnet:20:23-30: assertion failure \ No newline at end of file + error.obj_assert.fail2.jsonnet:20:23-28: assertion failure \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.overflow.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.overflow.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: invalid number value: non-finite - error.overflow.jsonnet:17:1 \ No newline at end of file + error.overflow.jsonnet:17:1 + error.overflow.jsonnet:17:1-5: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.overflow3.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.overflow3.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: invalid number value: non-finite - error.overflow3.jsonnet:17:1 \ No newline at end of file + error.overflow3.jsonnet:17:1 + error.overflow3.jsonnet:17:1-5: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.array_comma.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.array_comma.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: expected ']', got number "3" - error.parse.array_comma.jsonnet:17:7 \ No newline at end of file + error.parse.array_comma.jsonnet:17:7 + error.parse.array_comma.jsonnet:17:7-7: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.function_arg_positional_after_named.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.function_arg_positional_after_named.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: positional argument after named argument - error.parse.function_arg_positional_after_named.jsonnet:19:10 \ No newline at end of file + error.parse.function_arg_positional_after_named.jsonnet:19:10 + error.parse.function_arg_positional_after_named.jsonnet:19:10-10: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.import_text_block.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.import_text_block.jsonnet.golden @@ -1,3 +1,3 @@ -can't resolve This is a paragraph of text, which is being used in the place of +import file not found This is a paragraph of text, which is being used in the place of a filename. That is quite unusual, and probably not intended. - from /home/lach/build/jrsonnet-pr/tests/cpp_test_suite/error.parse.import_text_block.jsonnet \ No newline at end of file + from error.parse.import_text_block.jsonnet \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.index_unterminated.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.index_unterminated.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: unexpected end of file - error.parse.index_unterminated.jsonnet:17:3 \ No newline at end of file + error.parse.index_unterminated.jsonnet:17:3 + error.parse.index_unterminated.jsonnet:17:3-0:0: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.method_plus.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.method_plus.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: expected ':', got '+' - error.parse.method_plus.jsonnet:17:18 \ No newline at end of file + error.parse.method_plus.jsonnet:17:18 + error.parse.method_plus.jsonnet:17:18-18: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.object_comma.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.object_comma.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: expected '}', got identifier "z" - error.parse.object_comma.jsonnet:17:11 \ No newline at end of file + error.parse.object_comma.jsonnet:17:11 + error.parse.object_comma.jsonnet:17:11-11: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.object_comprehension_local_clash.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.object_comprehension_local_clash.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: expected '}', got ':' - error.parse.object_comprehension_local_clash.jsonnet:17:29 \ No newline at end of file + error.parse.object_comprehension_local_clash.jsonnet:17:29 + error.parse.object_comprehension_local_clash.jsonnet:17:29-29: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.self_in_computed_field.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.self_in_computed_field.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: expected field name, got 'self' - error.parse.self_in_computed_field.jsonnet:17:15 \ No newline at end of file + error.parse.self_in_computed_field.jsonnet:17:15 + error.parse.self_in_computed_field.jsonnet:17:15-18: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.static_error_bad_number.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.static_error_bad_number.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: unexpected '.' - error.parse.static_error_bad_number.jsonnet:17:1 \ No newline at end of file + error.parse.static_error_bad_number.jsonnet:17:1 + error.parse.static_error_bad_number.jsonnet:17:1-1: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: invalid string escape - error.parse.string.invalid_escape.jsonnet:17:1 \ No newline at end of file + error.parse.string.invalid_escape.jsonnet:17:1 + error.parse.string.invalid_escape.jsonnet:17:1-4: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape_unicode_non_hex.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape_unicode_non_hex.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: invalid string escape - error.parse.string.invalid_escape_unicode_non_hex.jsonnet:17:1 \ No newline at end of file + error.parse.string.invalid_escape_unicode_non_hex.jsonnet:17:1 + error.parse.string.invalid_escape_unicode_non_hex.jsonnet:17:1-8: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape_unicode_short.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape_unicode_short.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: unterminated double-quoted string - error.parse.string.invalid_escape_unicode_short.jsonnet:17:1 \ No newline at end of file + error.parse.string.invalid_escape_unicode_short.jsonnet:17:1 + error.parse.string.invalid_escape_unicode_short.jsonnet:17:1-18:0: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape_unicode_short2.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape_unicode_short2.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: invalid string escape - error.parse.string.invalid_escape_unicode_short2.jsonnet:17:1 \ No newline at end of file + error.parse.string.invalid_escape_unicode_short2.jsonnet:17:1 + error.parse.string.invalid_escape_unicode_short2.jsonnet:17:1-7: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape_unicode_short3.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape_unicode_short3.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: unterminated double-quoted string - error.parse.string.invalid_escape_unicode_short3.jsonnet:17:1 \ No newline at end of file + error.parse.string.invalid_escape_unicode_short3.jsonnet:17:1 + error.parse.string.invalid_escape_unicode_short3.jsonnet:17:1-18:0: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.string.unfinished.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.string.unfinished.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: unterminated double-quoted string - error.parse.string.unfinished.jsonnet:17:1 \ No newline at end of file + error.parse.string.unfinished.jsonnet:17:1 + error.parse.string.unfinished.jsonnet:17:1-18:0: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.string.unfinished2.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.string.unfinished2.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: unterminated single-quoted string - error.parse.string.unfinished2.jsonnet:17:1 \ No newline at end of file + error.parse.string.unfinished2.jsonnet:17:1 + error.parse.string.unfinished2.jsonnet:17:1-18:0: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.string_multi_no_newline.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.string_multi_no_newline.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: text block requires new line after ||| - error.parse.string_multi_no_newline.jsonnet:17:1 \ No newline at end of file + error.parse.string_multi_no_newline.jsonnet:17:1 + error.parse.string_multi_no_newline.jsonnet:17:1-18:0: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.text_block_bad_whitespace.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.text_block_bad_whitespace.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: unterminated text block - error.parse.text_block_bad_whitespace.jsonnet:17:1 \ No newline at end of file + error.parse.text_block_bad_whitespace.jsonnet:17:1 + error.parse.text_block_bad_whitespace.jsonnet:17:1-20:3: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.text_block_eof.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.text_block_eof.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: unexpected end of text block - error.parse.text_block_eof.jsonnet:17:1 \ No newline at end of file + error.parse.text_block_eof.jsonnet:17:1 + error.parse.text_block_eof.jsonnet:17:1-18:6: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.text_block_indent_spaces.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.text_block_indent_spaces.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: unterminated text block - error.parse.text_block_indent_spaces.jsonnet:17:1 \ No newline at end of file + error.parse.text_block_indent_spaces.jsonnet:17:1 + error.parse.text_block_indent_spaces.jsonnet:17:1-20:3: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse.text_block_not_terminated.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse.text_block_not_terminated.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: unexpected end of text block - error.parse.text_block_not_terminated.jsonnet:17:1 \ No newline at end of file + error.parse.text_block_not_terminated.jsonnet:17:1 + error.parse.text_block_not_terminated.jsonnet:17:1-19:0: parse imported \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.parse_json.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.parse_json.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: failed to parse json: expected value at line 1 column 1 - error.parse_json.jsonnet:1:14-30: function call \ No newline at end of file + error.parse_json.jsonnet:1:14-28: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.recursive_function_nonterm.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.recursive_function_nonterm.jsonnet.golden @@ -1,201 +1,201 @@ stack overflow, try to reduce recursion, or set --max-stack to bigger value - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:18:4-8: function call - error.recursive_function_nonterm.jsonnet:20:2-7: function call \ No newline at end of file + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:18:4-6: function call + error.recursive_function_nonterm.jsonnet:20:2-5: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.recursive_import.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.recursive_import.jsonnet.golden @@ -1,2 +1,2 @@ infinite recursion detected - error.recursive_import.jsonnet:17:15-22: import \ No newline at end of file + error.recursive_import.jsonnet:17:15-20: import \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.sanity.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.sanity.jsonnet.golden @@ -1,4 +1,4 @@ runtime error: assertion failed: A != B A: 1 B: 2 - error.sanity.jsonnet:17:16-23: function call \ No newline at end of file + error.sanity.jsonnet:17:16-21: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.std_join_types1.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.std_join_types1.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: in std.join all items should be strings - error.std_join_types1.jsonnet:17:9-27: function call \ No newline at end of file + error.std_join_types1.jsonnet:17:9-25: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.std_join_types2.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.std_join_types2.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: in std.join all items should be arrays - error.std_join_types2.jsonnet:17:9-32: function call \ No newline at end of file + error.std_join_types2.jsonnet:17:9-30: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.std_makeArray_negative.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.std_makeArray_negative.jsonnet.golden @@ -1,3 +1,3 @@ type error: number out of bounds: -10 not in 0..4294967295 argument evaluation - error.std_makeArray_negative.jsonnet:17:14-38: function call \ No newline at end of file + error.std_makeArray_negative.jsonnet:17:14-36: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.std_maxArray.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.std_maxArray.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: expected non-empty array - error.std_maxArray.jsonnet:1:13-18: function call \ No newline at end of file + error.std_maxArray.jsonnet:1:13-16: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.std_minArray.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.std_minArray.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: expected non-empty array - error.std_minArray.jsonnet:1:13-18: function call \ No newline at end of file + error.std_minArray.jsonnet:1:13-16: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.std_parseJson.nodigitsep.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.std_parseJson.nodigitsep.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: failed to parse json: trailing characters at line 1 column 4 - error.std_parseJson.nodigitsep.jsonnet:1:14-26: function call \ No newline at end of file + error.std_parseJson.nodigitsep.jsonnet:1:14-24: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.std_parseYaml1.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.std_parseYaml1.jsonnet.golden @@ -3,4 +3,4 @@ | 1 | a: b: | ^ mapping values are not allowed in this context - error.std_parseYaml1.jsonnet:1:14-24: function call \ No newline at end of file + error.std_parseYaml1.jsonnet:1:14-22: function call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.trace_three_param.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.trace_three_param.jsonnet.golden @@ -1,4 +1,4 @@ too many args, function has 2 Function has the following signature: (str, rest = ) - error.trace_three_param.jsonnet:17:20-33: function preparation + error.trace_three_param.jsonnet:17:20-31: function preparation field evaluation \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.trace_zero_param.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.trace_zero_param.jsonnet.golden @@ -1,4 +1,4 @@ function argument is not passed: str Function has the following signature: (str, rest = ) - error.trace_zero_param.jsonnet:17:20-23: function preparation + error.trace_zero_param.jsonnet:17:20-21: function preparation field evaluation \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.verbatim_import.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.verbatim_import.jsonnet.golden @@ -1 +1 @@ -can't resolve C:\can't possibly exist~ from /home/lach/build/jrsonnet-pr/tests/cpp_test_suite/error.verbatim_import.jsonnet \ No newline at end of file +import file not found C:\can't possibly exist~ from error.verbatim_import.jsonnet \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.wrong_type.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.wrong_type.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected char, got number argument evaluation - error.wrong_type.jsonnet:1:14-19: function call \ No newline at end of file + error.wrong_type.jsonnet:1:14-17: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/arrcomp_if6.jsonnet.golden +++ b/tests/go_testdata_golden_override/arrcomp_if6.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: x - arrcomp_if6.jsonnet:1:20-26: error statement \ No newline at end of file + arrcomp_if6.jsonnet:1:20-24: error statement \ No newline at end of file --- a/tests/go_testdata_golden_override/assert3.jsonnet.golden +++ b/tests/go_testdata_golden_override/assert3.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: null - assert3.jsonnet:1:8-17: assertion failure \ No newline at end of file + assert3.jsonnet:1:8-15: assertion failure \ No newline at end of file --- a/tests/go_testdata_golden_override/assert_equal4.jsonnet.golden +++ b/tests/go_testdata_golden_override/assert_equal4.jsonnet.golden @@ -5,4 +5,4 @@ B: { "x": 2 } - assert_equal4.jsonnet:1:16-33: function call \ No newline at end of file + assert_equal4.jsonnet:1:16-31: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/assert_equal5.jsonnet.golden +++ b/tests/go_testdata_golden_override/assert_equal5.jsonnet.golden @@ -7,4 +7,4 @@ - assert_equal5.jsonnet:1:16-30: function call \ No newline at end of file + assert_equal5.jsonnet:1:16-28: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/assert_equal6.jsonnet.golden +++ b/tests/go_testdata_golden_override/assert_equal6.jsonnet.golden @@ -5,4 +5,4 @@ B: - assert_equal6.jsonnet:1:16-35: function call \ No newline at end of file + assert_equal6.jsonnet:1:16-33: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/assert_failed.jsonnet.golden +++ b/tests/go_testdata_golden_override/assert_failed.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: null - assert_failed.jsonnet:1:8-14: assertion failure \ No newline at end of file + assert_failed.jsonnet:1:8-12: assertion failure \ No newline at end of file --- a/tests/go_testdata_golden_override/assert_failed_custom.jsonnet.golden +++ b/tests/go_testdata_golden_override/assert_failed_custom.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: Custom Message - assert_failed_custom.jsonnet:1:8-14: assertion failure \ No newline at end of file + assert_failed_custom.jsonnet:1:8-12: assertion failure \ No newline at end of file --- a/tests/go_testdata_golden_override/bad_function_call.jsonnet.golden +++ b/tests/go_testdata_golden_override/bad_function_call.jsonnet.golden @@ -1,3 +1,3 @@ function argument is not passed: x Function has the following signature: (x) - bad_function_call.jsonnet:1:16-19: function preparation \ No newline at end of file + bad_function_call.jsonnet:1:16-17: function preparation \ No newline at end of file --- a/tests/go_testdata_golden_override/bad_function_call2.jsonnet.golden +++ b/tests/go_testdata_golden_override/bad_function_call2.jsonnet.golden @@ -1,3 +1,3 @@ too many args, function has 1 Function has the following signature: (x) - bad_function_call2.jsonnet:1:16-23: function preparation \ No newline at end of file + bad_function_call2.jsonnet:1:16-21: function preparation \ No newline at end of file --- a/tests/go_testdata_golden_override/bad_function_call_and_error.jsonnet.golden +++ b/tests/go_testdata_golden_override/bad_function_call_and_error.jsonnet.golden @@ -1,3 +1,3 @@ too many args, function has 1 Function has the following signature: (x) - bad_function_call_and_error.jsonnet:1:16-39: function preparation \ No newline at end of file + bad_function_call_and_error.jsonnet:1:16-37: function preparation \ No newline at end of file --- a/tests/go_testdata_golden_override/bitwise_and4.jsonnet.golden +++ b/tests/go_testdata_golden_override/bitwise_and4.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: x - bitwise_and4.jsonnet:1:5-11: error statement \ No newline at end of file + bitwise_and4.jsonnet:1:5-9: error statement \ No newline at end of file --- a/tests/go_testdata_golden_override/bitwise_xor7.jsonnet.golden +++ b/tests/go_testdata_golden_override/bitwise_xor7.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: x - bitwise_xor7.jsonnet:1:5-11: error statement \ No newline at end of file + bitwise_xor7.jsonnet:1:5-9: error statement \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinBase64DecodeBytes_high_codepoint.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinBase64DecodeBytes_high_codepoint.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: invalid base64: Invalid symbol 196, offset 0. - builtinBase64DecodeBytes_high_codepoint.jsonnet:1:22-30: function call \ No newline at end of file + builtinBase64DecodeBytes_high_codepoint.jsonnet:1:22-28: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinBase64DecodeBytes_invalid_base64_data.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinBase64DecodeBytes_invalid_base64_data.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: invalid base64: Invalid input length: 5 - builtinBase64DecodeBytes_invalid_base64_data.jsonnet:1:22-32: function call \ No newline at end of file + builtinBase64DecodeBytes_invalid_base64_data.jsonnet:1:22-30: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinBase64DecodeBytes_wrong_type.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinBase64DecodeBytes_wrong_type.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected string, got number argument evaluation - builtinBase64DecodeBytes_wrong_type.jsonnet:1:22-26: function call \ No newline at end of file + builtinBase64DecodeBytes_wrong_type.jsonnet:1:22-24: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinBase64Decode_high_codepoint.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinBase64Decode_high_codepoint.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: invalid base64: Invalid symbol 196, offset 0. - builtinBase64Decode_high_codepoint.jsonnet:1:17-25: function call \ No newline at end of file + builtinBase64Decode_high_codepoint.jsonnet:1:17-23: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinBase64Decode_invalid_base64_data.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinBase64Decode_invalid_base64_data.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: invalid base64: Invalid input length: 5 - builtinBase64Decode_invalid_base64_data.jsonnet:1:17-27: function call \ No newline at end of file + builtinBase64Decode_invalid_base64_data.jsonnet:1:17-25: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinBase64Decode_wrong_type.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinBase64Decode_wrong_type.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected string, got number argument evaluation - builtinBase64Decode_wrong_type.jsonnet:1:17-21: function call \ No newline at end of file + builtinBase64Decode_wrong_type.jsonnet:1:17-19: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinBase64_invalid_byte_array.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinBase64_invalid_byte_array.jsonnet.golden @@ -2,4 +2,4 @@ - expected string, got array - expected BoundedNumber<0, 255>, got string at self[1] argument evaluation - builtinBase64_invalid_byte_array.jsonnet:1:11-24: function call \ No newline at end of file + builtinBase64_invalid_byte_array.jsonnet:1:11-22: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinBase64_invalid_byte_array1.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinBase64_invalid_byte_array1.jsonnet.golden @@ -2,4 +2,4 @@ - expected string, got array - number out of bounds: -1 not in 0..255 at self[1] argument evaluation - builtinBase64_invalid_byte_array1.jsonnet:1:11-21: function call \ No newline at end of file + builtinBase64_invalid_byte_array1.jsonnet:1:11-19: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinBase64_invalid_byte_array2.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinBase64_invalid_byte_array2.jsonnet.golden @@ -2,4 +2,4 @@ - expected string, got array - number out of bounds: 256 not in 0..255 at self[1] argument evaluation - builtinBase64_invalid_byte_array2.jsonnet:1:11-22: function call \ No newline at end of file + builtinBase64_invalid_byte_array2.jsonnet:1:11-20: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinBase64_non_string_non_array.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinBase64_non_string_non_array.jsonnet.golden @@ -2,4 +2,4 @@ - expected string, got number - expected Array>, got number argument evaluation - builtinBase64_non_string_non_array.jsonnet:1:11-15: function call \ No newline at end of file + builtinBase64_non_string_non_array.jsonnet:1:11-13: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinChar3.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinChar3.jsonnet.golden @@ -1,3 +1,3 @@ type error: number out of bounds: -1 not in 0..4294967295 argument evaluation - builtinChar3.jsonnet:1:9-14: function call \ No newline at end of file + builtinChar3.jsonnet:1:9-12: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinChar5.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinChar5.jsonnet.golden @@ -1,2 +1,2 @@ invalid unicode codepoint: 1114112 - builtinChar5.jsonnet:2:9-19: function call \ No newline at end of file + builtinChar5.jsonnet:2:9-17: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinChar7.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinChar7.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected BoundedNumber<0, 4294967295>, got string argument evaluation - builtinChar7.jsonnet:1:9-17: function call \ No newline at end of file + builtinChar7.jsonnet:1:9-15: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinIsEmpty2.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinIsEmpty2.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected string, got number argument evaluation - builtinIsEmpty2.jsonnet:1:12-17: function call \ No newline at end of file + builtinIsEmpty2.jsonnet:1:12-15: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinManifestJsonEx_cyclic.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinManifestJsonEx_cyclic.jsonnet.golden @@ -198,4 +198,4 @@ field manifestification field manifestification field manifestification - builtinManifestJsonEx_cyclic.jsonnet:1:19-33: function call \ No newline at end of file + builtinManifestJsonEx_cyclic.jsonnet:1:19-31: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinObjectFieldsEx_bad.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinObjectFieldsEx_bad.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected object, got number argument evaluation - builtinObjectFieldsEx_bad.jsonnet:1:19-30: function call \ No newline at end of file + builtinObjectFieldsEx_bad.jsonnet:1:19-28: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinObjectFieldsEx_bad2.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinObjectFieldsEx_bad2.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected boolean, got string argument evaluation - builtinObjectFieldsEx_bad2.jsonnet:1:19-31: function call \ No newline at end of file + builtinObjectFieldsEx_bad2.jsonnet:1:19-29: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinObjectHasExBadBoolean.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinObjectHasExBadBoolean.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected boolean, got string argument evaluation - builtinObjectHasExBadBoolean.jsonnet:1:16-35: function call \ No newline at end of file + builtinObjectHasExBadBoolean.jsonnet:1:16-33: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinObjectHasExBadField.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinObjectHasExBadField.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected string, got number argument evaluation - builtinObjectHasExBadField.jsonnet:1:16-32: function call \ No newline at end of file + builtinObjectHasExBadField.jsonnet:1:16-30: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinObjectHasExBadObject.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinObjectHasExBadObject.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected object, got number argument evaluation - builtinObjectHasExBadObject.jsonnet:1:16-33: function call \ No newline at end of file + builtinObjectHasExBadObject.jsonnet:1:16-31: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinObjectRemoveKey_super_assert.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinObjectRemoveKey_super_assert.jsonnet.golden @@ -1,2 +1,2 @@ no such field: x - builtinObjectRemoveKey_super_assert.jsonnet:2:10-17: assertion condition \ No newline at end of file + builtinObjectRemoveKey_super_assert.jsonnet:2:10-15: assertion condition \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinReverse_not_array.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinReverse_not_array.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected array, got boolean argument evaluation - builtinReverse_not_array.jsonnet:1:12-20: function call \ No newline at end of file + builtinReverse_not_array.jsonnet:1:12-18: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinSplitLimitR5.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinSplitLimitR5.jsonnet.golden @@ -2,4 +2,4 @@ - number out of bounds: -2 not in 0..9007199254740991 - number out of bounds: -2 not in -1..-1 argument evaluation - builtinSplitLimitR5.jsonnet:1:16-45: function call \ No newline at end of file + builtinSplitLimitR5.jsonnet:1:16-43: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinSubStr_first_param_not_string.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinSubStr_first_param_not_string.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected string, got number argument evaluation - builtinSubStr_first_param_not_string.jsonnet:1:11-21: function call \ No newline at end of file + builtinSubStr_first_param_not_string.jsonnet:1:11-19: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinSubStr_second_parameter_not_integer.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinSubStr_second_parameter_not_integer.jsonnet.golden @@ -1,3 +1,3 @@ runtime error: cannot convert number with fractional part to usize argument evaluation - builtinSubStr_second_parameter_not_integer.jsonnet:1:11-29: function call \ No newline at end of file + builtinSubStr_second_parameter_not_integer.jsonnet:1:11-27: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinSubStr_second_parameter_not_number.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinSubStr_second_parameter_not_number.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected BoundedNumber<0, 9007199254740991>, got string argument evaluation - builtinSubStr_second_parameter_not_number.jsonnet:1:11-31: function call \ No newline at end of file + builtinSubStr_second_parameter_not_number.jsonnet:1:11-29: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinSubStr_third_parameter_less_then_zero.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinSubStr_third_parameter_less_then_zero.jsonnet.golden @@ -1,3 +1,3 @@ type error: number out of bounds: -1 not in 0..9007199254740991 argument evaluation - builtinSubStr_third_parameter_less_then_zero.jsonnet:1:11-28: function call \ No newline at end of file + builtinSubStr_third_parameter_less_then_zero.jsonnet:1:11-26: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinSubStr_third_parameter_not_integer.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinSubStr_third_parameter_not_integer.jsonnet.golden @@ -1,3 +1,3 @@ runtime error: cannot convert number with fractional part to usize argument evaluation - builtinSubStr_third_parameter_not_integer.jsonnet:1:11-29: function call \ No newline at end of file + builtinSubStr_third_parameter_not_integer.jsonnet:1:11-27: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinSubStr_third_parameter_not_number.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinSubStr_third_parameter_not_number.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected BoundedNumber<0, 9007199254740991>, got string argument evaluation - builtinSubStr_third_parameter_not_number.jsonnet:1:11-31: function call \ No newline at end of file + builtinSubStr_third_parameter_not_number.jsonnet:1:11-29: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinTrim4.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinTrim4.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected string, got number argument evaluation - builtinTrim4.jsonnet:1:9-14: function call \ No newline at end of file + builtinTrim4.jsonnet:1:9-12: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinXnor2.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinXnor2.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected boolean, got string argument evaluation - builtinXnor2.jsonnet:1:9-25: function call \ No newline at end of file + builtinXnor2.jsonnet:1:9-23: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtinXor2.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtinXor2.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected boolean, got string argument evaluation - builtinXor2.jsonnet:1:8-24: function call \ No newline at end of file + builtinXor2.jsonnet:1:8-22: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtin_exp3.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtin_exp3.jsonnet.golden @@ -1,2 +1,2 @@ convert num value: non-finite - builtin_exp3.jsonnet:1:8-15: function call \ No newline at end of file + builtin_exp3.jsonnet:1:8-13: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtin_exp5.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtin_exp5.jsonnet.golden @@ -1,2 +1,2 @@ convert num value: non-finite - builtin_exp5.jsonnet:1:8-32: function call \ No newline at end of file + builtin_exp5.jsonnet:1:8-30: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtin_log5.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtin_log5.jsonnet.golden @@ -1,2 +1,2 @@ convert num value: non-finite - builtin_log5.jsonnet:1:8-12: function call \ No newline at end of file + builtin_log5.jsonnet:1:8-10: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtin_log7.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtin_log7.jsonnet.golden @@ -1,2 +1,2 @@ convert num value: non-finite - builtin_log7.jsonnet:1:8-13: function call \ No newline at end of file + builtin_log7.jsonnet:1:8-11: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtin_log8.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtin_log8.jsonnet.golden @@ -1,2 +1,2 @@ convert num value: non-finite - builtin_log8.jsonnet:1:8-25: function call \ No newline at end of file + builtin_log8.jsonnet:1:8-23: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtin_manifestTomlEx_array.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtin_manifestTomlEx_array.jsonnet.golden @@ -1,4 +1,4 @@ type error: expected object, got array argument evaluation - builtin_manifestTomlEx_array.jsonnet:11:28-42: function call + builtin_manifestTomlEx_array.jsonnet:11:28-40: function call field evaluation \ No newline at end of file --- a/tests/go_testdata_golden_override/builtin_manifestTomlEx_cyclic.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtin_manifestTomlEx_cyclic.jsonnet.golden @@ -198,4 +198,4 @@ section manifestification section manifestification section manifestification - builtin_manifestTomlEx_cyclic.jsonnet:1:19-38: function call \ No newline at end of file + builtin_manifestTomlEx_cyclic.jsonnet:1:19-36: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtin_manifestTomlEx_null.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtin_manifestTomlEx_null.jsonnet.golden @@ -1,4 +1,4 @@ type error: expected object, got null argument evaluation - builtin_manifestTomlEx_null.jsonnet:2:29-43: function call + builtin_manifestTomlEx_null.jsonnet:2:29-41: function call field evaluation \ No newline at end of file --- a/tests/go_testdata_golden_override/builtin_manifestYamlDoc_cyclic.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtin_manifestYamlDoc_cyclic.jsonnet.golden @@ -198,4 +198,4 @@ field manifestification field manifestification field manifestification - builtin_manifestYamlDoc_cyclic.jsonnet:1:20-29: function call \ No newline at end of file + builtin_manifestYamlDoc_cyclic.jsonnet:1:20-27: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtin_member_object_invalid.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtin_member_object_invalid.jsonnet.golden @@ -2,4 +2,4 @@ - expected array, got object - expected string, got object argument evaluation - builtin_member_object_invalid.jsonnet:1:11-32: function call \ No newline at end of file + builtin_member_object_invalid.jsonnet:1:11-30: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtin_parseInt_invalid.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtin_parseInt_invalid.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: "hello" is not a base 10 integer - builtin_parseInt_invalid.jsonnet:1:13-23: function call \ No newline at end of file + builtin_parseInt_invalid.jsonnet:1:13-21: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtin_parseInt_invalid_decimal.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtin_parseInt_invalid_decimal.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: "123.12" is not a base 10 integer - builtin_parseInt_invalid_decimal.jsonnet:1:13-24: function call \ No newline at end of file + builtin_parseInt_invalid_decimal.jsonnet:1:13-22: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtin_parseInt_invalid_hexadecimal.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtin_parseInt_invalid_hexadecimal.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: "7B316" is not a base 10 integer - builtin_parseInt_invalid_hexadecimal.jsonnet:1:13-23: function call \ No newline at end of file + builtin_parseInt_invalid_hexadecimal.jsonnet:1:13-21: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtin_sqrt2.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtin_sqrt2.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected BoundedNumber<0, open>, got string argument evaluation - builtin_sqrt2.jsonnet:1:9-20: function call \ No newline at end of file + builtin_sqrt2.jsonnet:1:9-18: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/builtin_stripChars_invalid.jsonnet.golden +++ b/tests/go_testdata_golden_override/builtin_stripChars_invalid.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected string, got object argument evaluation - builtin_stripChars_invalid.jsonnet:1:15-4133: function call \ No newline at end of file + builtin_stripChars_invalid.jsonnet:1:15-4131: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/double_thunk.jsonnet.golden +++ b/tests/go_testdata_golden_override/double_thunk.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: xxx - double_thunk.jsonnet:1:21-27: error statement \ No newline at end of file + double_thunk.jsonnet:1:21-25: error statement \ No newline at end of file --- a/tests/go_testdata_golden_override/error.jsonnet.golden +++ b/tests/go_testdata_golden_override/error.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: 42 - error.jsonnet:1:1-7: error statement \ No newline at end of file + error.jsonnet:1:1-5: error statement \ No newline at end of file --- a/tests/go_testdata_golden_override/error_from_array.jsonnet.golden +++ b/tests/go_testdata_golden_override/error_from_array.jsonnet.golden @@ -1,3 +1,3 @@ runtime error: xxx - error_from_array.jsonnet:1:2-8: error statement - error_from_array.jsonnet:1:15-17: element <0> access \ No newline at end of file + error_from_array.jsonnet:1:2-6: error statement + error_from_array.jsonnet:1:15-15: element <0> access \ No newline at end of file --- a/tests/go_testdata_golden_override/error_from_func.jsonnet.golden +++ b/tests/go_testdata_golden_override/error_from_func.jsonnet.golden @@ -1,3 +1,3 @@ runtime error: xxx - error_from_func.jsonnet:1:25-31: error statement - error_from_func.jsonnet:1:37-45: function call \ No newline at end of file + error_from_func.jsonnet:1:25-29: error statement + error_from_func.jsonnet:1:37-43: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/error_function_fail.jsonnet.golden +++ b/tests/go_testdata_golden_override/error_function_fail.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: tried to manifest function - error_function_fail.jsonnet:1:1-7: error statement \ No newline at end of file + error_function_fail.jsonnet:1:1-5: error statement \ No newline at end of file --- a/tests/go_testdata_golden_override/error_hexnumber.jsonnet.golden +++ b/tests/go_testdata_golden_override/error_hexnumber.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: expected end of file, got identifier "x42" - error_hexnumber.jsonnet:1:2 \ No newline at end of file + error_hexnumber.jsonnet:1:2 + error_hexnumber.jsonnet:1:2-4: parse imported \ No newline at end of file --- a/tests/go_testdata_golden_override/error_in_method.jsonnet.golden +++ b/tests/go_testdata_golden_override/error_in_method.jsonnet.golden @@ -1,3 +1,3 @@ runtime error: xxx - error_in_method.jsonnet:1:23-29: error statement - error_in_method.jsonnet:1:41-49: function call \ No newline at end of file + error_in_method.jsonnet:1:23-27: error statement + error_in_method.jsonnet:1:41-47: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/error_in_object_local.jsonnet.golden +++ b/tests/go_testdata_golden_override/error_in_object_local.jsonnet.golden @@ -1,4 +1,4 @@ runtime error: xxx - error_in_object_local.jsonnet:1:20-26: error statement - error_in_object_local.jsonnet:1:39-47: function call + error_in_object_local.jsonnet:1:20-24: error statement + error_in_object_local.jsonnet:1:39-45: function call field evaluation \ No newline at end of file --- a/tests/go_testdata_golden_override/error_object.jsonnet.golden +++ b/tests/go_testdata_golden_override/error_object.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: {"blah": 42} - error_object.jsonnet:1:1-7: error statement \ No newline at end of file + error_object.jsonnet:1:1-5: error statement \ No newline at end of file --- a/tests/go_testdata_golden_override/extvar_error.jsonnet.golden +++ b/tests/go_testdata_golden_override/extvar_error.jsonnet.golden @@ -1,2 +1,2 @@ external variable is not defined: errorVar - extvar_error.jsonnet:1:11-24: function call \ No newline at end of file + extvar_error.jsonnet:1:11-22: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/extvar_hermetic.jsonnet.golden +++ b/tests/go_testdata_golden_override/extvar_hermetic.jsonnet.golden @@ -1,2 +1,2 @@ external variable is not defined: UndeclaredX - extvar_hermetic.jsonnet:1:25-41: function call \ No newline at end of file + extvar_hermetic.jsonnet:1:25-39: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/extvar_not_a_string.jsonnet.golden +++ b/tests/go_testdata_golden_override/extvar_not_a_string.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected string, got number argument evaluation - extvar_not_a_string.jsonnet:1:11-16: function call \ No newline at end of file + extvar_not_a_string.jsonnet:1:11-14: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/extvar_static_error.jsonnet.golden +++ b/tests/go_testdata_golden_override/extvar_static_error.jsonnet.golden @@ -1,2 +1,2 @@ external variable is not defined: staticErrorVar - extvar_static_error.jsonnet:1:11-30: function call \ No newline at end of file + extvar_static_error.jsonnet:1:11-28: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/extvar_unknown.jsonnet.golden +++ b/tests/go_testdata_golden_override/extvar_unknown.jsonnet.golden @@ -1,2 +1,2 @@ external variable is not defined: UNKNOWN - extvar_unknown.jsonnet:1:11-23: function call \ No newline at end of file + extvar_unknown.jsonnet:1:11-21: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/import_block_literal.jsonnet.golden +++ b/tests/go_testdata_golden_override/import_block_literal.jsonnet.golden @@ -1,2 +1,2 @@ -can't resolve block_literals_for_imports_are_not_allowed_and_make_exactly_zero_sense - from /home/lach/build/jrsonnet-pr/tests/go_testdata/import_block_literal.jsonnet \ No newline at end of file +import file not found block_literals_for_imports_are_not_allowed_and_make_exactly_zero_sense + from import_block_literal.jsonnet \ No newline at end of file --- a/tests/go_testdata_golden_override/import_syntax_error.jsonnet.golden +++ b/tests/go_testdata_golden_override/import_syntax_error.jsonnet.golden @@ -1,3 +1,4 @@ syntax error: unexpected end of file syntax_error.jsonnet:1:4 - import_syntax_error.jsonnet:1:1-8: import \ No newline at end of file + syntax_error.jsonnet:1:4-0:0: parse imported + import_syntax_error.jsonnet:1:1-6: import \ No newline at end of file --- a/tests/go_testdata_golden_override/importbin_block_literal.jsonnet.golden +++ b/tests/go_testdata_golden_override/importbin_block_literal.jsonnet.golden @@ -1,2 +1,2 @@ -can't resolve block_literals_for_imports_are_not_allowed_and_make_exactly_zero_sense - from /home/lach/build/jrsonnet-pr/tests/go_testdata/importbin_block_literal.jsonnet \ No newline at end of file +import file not found block_literals_for_imports_are_not_allowed_and_make_exactly_zero_sense + from importbin_block_literal.jsonnet \ No newline at end of file --- a/tests/go_testdata_golden_override/importstr_block_literal.jsonnet.golden +++ b/tests/go_testdata_golden_override/importstr_block_literal.jsonnet.golden @@ -1,2 +1,2 @@ -can't resolve block_literals_for_imports_are_not_allowed_and_make_exactly_zero_sense - from /home/lach/build/jrsonnet-pr/tests/go_testdata/importstr_block_literal.jsonnet \ No newline at end of file +import file not found block_literals_for_imports_are_not_allowed_and_make_exactly_zero_sense + from importstr_block_literal.jsonnet \ No newline at end of file --- a/tests/go_testdata_golden_override/lazy_operator2.jsonnet.golden +++ b/tests/go_testdata_golden_override/lazy_operator2.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: should happen - lazy_operator2.jsonnet:1:9-15: error statement \ No newline at end of file + lazy_operator2.jsonnet:1:9-13: error statement \ No newline at end of file --- a/tests/go_testdata_golden_override/nonexistent_import.jsonnet.golden +++ b/tests/go_testdata_golden_override/nonexistent_import.jsonnet.golden @@ -1 +1 @@ -can't resolve no chance a file with this name exists from /home/lach/build/jrsonnet-pr/tests/go_testdata/nonexistent_import.jsonnet \ No newline at end of file +import file not found no chance a file with this name exists from nonexistent_import.jsonnet \ No newline at end of file --- a/tests/go_testdata_golden_override/nonexistent_import_crazy.jsonnet.golden +++ b/tests/go_testdata_golden_override/nonexistent_import_crazy.jsonnet.golden @@ -1,3 +1,3 @@ -can't resolve ąęółńśćźż " ' +import file not found ąęółńśćźż " ' - from /home/lach/build/jrsonnet-pr/tests/go_testdata/nonexistent_import_crazy.jsonnet \ No newline at end of file + from nonexistent_import_crazy.jsonnet \ No newline at end of file --- a/tests/go_testdata_golden_override/object_comp_assert.jsonnet.golden +++ b/tests/go_testdata_golden_override/object_comp_assert.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: asserts are unsupported in object comprehension - object_comp_assert.jsonnet:1:46 \ No newline at end of file + object_comp_assert.jsonnet:1:46 + object_comp_assert.jsonnet:1:46-46: parse imported \ No newline at end of file --- a/tests/go_testdata_golden_override/object_comp_err_elem.jsonnet.golden +++ b/tests/go_testdata_golden_override/object_comp_err_elem.jsonnet.golden @@ -1,3 +1,3 @@ runtime error: xxx - object_comp_err_elem.jsonnet:1:11-17: error statement + object_comp_err_elem.jsonnet:1:11-15: error statement field evaluation \ No newline at end of file --- a/tests/go_testdata_golden_override/object_comp_err_index.jsonnet.golden +++ b/tests/go_testdata_golden_override/object_comp_err_index.jsonnet.golden @@ -1,3 +1,3 @@ runtime error: xxx - object_comp_err_index.jsonnet:1:4-10: error statement + object_comp_err_index.jsonnet:1:4-8: error statement evaluating field name \ No newline at end of file --- a/tests/go_testdata_golden_override/object_comp_illegal.jsonnet.golden +++ b/tests/go_testdata_golden_override/object_comp_illegal.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: missing object comprehension field - object_comp_illegal.jsonnet:1:34 \ No newline at end of file + object_comp_illegal.jsonnet:1:34 + object_comp_illegal.jsonnet:1:34-34: parse imported \ No newline at end of file --- a/tests/go_testdata_golden_override/object_invariant10.jsonnet.golden +++ b/tests/go_testdata_golden_override/object_invariant10.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: null - object_invariant10.jsonnet:1:23-29: assertion failure \ No newline at end of file + object_invariant10.jsonnet:1:23-27: assertion failure \ No newline at end of file --- a/tests/go_testdata_golden_override/object_invariant11.jsonnet.golden +++ b/tests/go_testdata_golden_override/object_invariant11.jsonnet.golden @@ -1,3 +1,3 @@ assert failed: null - object_invariant11.jsonnet:1:10-16: assertion failure - object_invariant11.jsonnet:1:18-20: field access \ No newline at end of file + object_invariant11.jsonnet:1:10-14: assertion failure + object_invariant11.jsonnet:1:18-18: field access \ No newline at end of file --- a/tests/go_testdata_golden_override/object_invariant13.jsonnet.golden +++ b/tests/go_testdata_golden_override/object_invariant13.jsonnet.golden @@ -1,3 +1,3 @@ runtime error: x - object_invariant13.jsonnet:1:10-16: error statement - object_invariant13.jsonnet:1:10-20: assertion condition \ No newline at end of file + object_invariant13.jsonnet:1:10-14: error statement + object_invariant13.jsonnet:1:10-18: assertion condition \ No newline at end of file --- a/tests/go_testdata_golden_override/object_invariant14.jsonnet.golden +++ b/tests/go_testdata_golden_override/object_invariant14.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: xxx - object_invariant14.jsonnet:1:10-16: assertion failure \ No newline at end of file + object_invariant14.jsonnet:1:10-14: assertion failure \ No newline at end of file --- a/tests/go_testdata_golden_override/object_invariant2.jsonnet.golden +++ b/tests/go_testdata_golden_override/object_invariant2.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: null - object_invariant2.jsonnet:1:10-16: assertion failure \ No newline at end of file + object_invariant2.jsonnet:1:10-14: assertion failure \ No newline at end of file --- a/tests/go_testdata_golden_override/object_invariant7.jsonnet.golden +++ b/tests/go_testdata_golden_override/object_invariant7.jsonnet.golden @@ -1,2 +1,2 @@ no super found - object_invariant7.jsonnet:1:16-29: assertion condition \ No newline at end of file + object_invariant7.jsonnet:1:16-27: assertion condition \ No newline at end of file --- a/tests/go_testdata_golden_override/object_invariant8.jsonnet.golden +++ b/tests/go_testdata_golden_override/object_invariant8.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: null - object_invariant8.jsonnet:1:16-28: assertion failure \ No newline at end of file + object_invariant8.jsonnet:1:16-26: assertion failure \ No newline at end of file --- a/tests/go_testdata_golden_override/object_invariant9.jsonnet.golden +++ b/tests/go_testdata_golden_override/object_invariant9.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: null - object_invariant9.jsonnet:1:23-29: assertion failure \ No newline at end of file + object_invariant9.jsonnet:1:23-27: assertion failure \ No newline at end of file --- a/tests/go_testdata_golden_override/object_invariant_plus.jsonnet.golden +++ b/tests/go_testdata_golden_override/object_invariant_plus.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: null - object_invariant_plus.jsonnet:1:9-15: assertion failure \ No newline at end of file + object_invariant_plus.jsonnet:1:9-13: assertion failure \ No newline at end of file --- a/tests/go_testdata_golden_override/object_invariant_plus2.jsonnet.golden +++ b/tests/go_testdata_golden_override/object_invariant_plus2.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: null - object_invariant_plus2.jsonnet:1:25-31: assertion failure \ No newline at end of file + object_invariant_plus2.jsonnet:1:25-29: assertion failure \ No newline at end of file --- a/tests/go_testdata_golden_override/object_invariant_plus6.jsonnet.golden +++ b/tests/go_testdata_golden_override/object_invariant_plus6.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: xxx - object_invariant_plus6.jsonnet:1:10-16: assertion failure \ No newline at end of file + object_invariant_plus6.jsonnet:1:10-14: assertion failure \ No newline at end of file --- a/tests/go_testdata_golden_override/optional_args11.jsonnet.golden +++ b/tests/go_testdata_golden_override/optional_args11.jsonnet.golden @@ -1,2 +1,2 @@ argument x is already bound - optional_args11.jsonnet:1:20-31: function preparation \ No newline at end of file + optional_args11.jsonnet:1:20-29: function preparation \ No newline at end of file --- a/tests/go_testdata_golden_override/optional_args13.jsonnet.golden +++ b/tests/go_testdata_golden_override/optional_args13.jsonnet.golden @@ -1,3 +1,3 @@ function argument is not passed: y Function has the following signature: (x, y) - optional_args13.jsonnet:1:20-27: function preparation \ No newline at end of file + optional_args13.jsonnet:1:20-25: function preparation \ No newline at end of file --- a/tests/go_testdata_golden_override/optional_args8.jsonnet.golden +++ b/tests/go_testdata_golden_override/optional_args8.jsonnet.golden @@ -1,2 +1,2 @@ parameter y is not defined - optional_args8.jsonnet:2:4-11: function preparation \ No newline at end of file + optional_args8.jsonnet:2:4-9: function preparation \ No newline at end of file --- a/tests/go_testdata_golden_override/optional_args9.jsonnet.golden +++ b/tests/go_testdata_golden_override/optional_args9.jsonnet.golden @@ -1,2 +1,2 @@ argument x is already bound - optional_args9.jsonnet:1:16-27: function preparation \ No newline at end of file + optional_args9.jsonnet:1:16-25: function preparation \ No newline at end of file --- a/tests/go_testdata_golden_override/or4.jsonnet.golden +++ b/tests/go_testdata_golden_override/or4.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: xxx - or4.jsonnet:1:10-16: error statement \ No newline at end of file + or4.jsonnet:1:10-14: error statement \ No newline at end of file --- a/tests/go_testdata_golden_override/pow4.jsonnet.golden +++ b/tests/go_testdata_golden_override/pow4.jsonnet.golden @@ -1,2 +1,2 @@ convert num value: non-finite - pow4.jsonnet:1:8-18: function call \ No newline at end of file + pow4.jsonnet:1:8-16: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/pow7.jsonnet.golden +++ b/tests/go_testdata_golden_override/pow7.jsonnet.golden @@ -1,2 +1,2 @@ convert num value: non-finite - pow7.jsonnet:2:8-24: function call \ No newline at end of file + pow7.jsonnet:2:8-22: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/pow8.jsonnet.golden +++ b/tests/go_testdata_golden_override/pow8.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected number, got string argument evaluation - pow8.jsonnet:1:8-20: function call \ No newline at end of file + pow8.jsonnet:1:8-18: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/pow9.jsonnet.golden +++ b/tests/go_testdata_golden_override/pow9.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected number, got string argument evaluation - pow9.jsonnet:1:8-20: function call \ No newline at end of file + pow9.jsonnet:1:8-18: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/recursive_thunk.jsonnet.golden +++ b/tests/go_testdata_golden_override/recursive_thunk.jsonnet.golden @@ -1,8 +1,8 @@ runtime error: xxx - recursive_thunk.jsonnet:1:35-41: error statement - recursive_thunk.jsonnet:2:19-39: function call - recursive_thunk.jsonnet:2:23-31: function call - recursive_thunk.jsonnet:2:19-39: function call - recursive_thunk.jsonnet:2:23-31: function call - recursive_thunk.jsonnet:2:19-39: function call - recursive_thunk.jsonnet:3:4-8: function call \ No newline at end of file + recursive_thunk.jsonnet:1:35-39: error statement + recursive_thunk.jsonnet:2:19-37: function call + recursive_thunk.jsonnet:2:23-29: function call + recursive_thunk.jsonnet:2:19-37: function call + recursive_thunk.jsonnet:2:23-29: function call + recursive_thunk.jsonnet:2:19-37: function call + recursive_thunk.jsonnet:3:4-6: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/stacktrace_assert.jsonnet.golden +++ b/tests/go_testdata_golden_override/stacktrace_assert.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: null - stacktrace_assert.jsonnet:1:10-16: assertion failure \ No newline at end of file + stacktrace_assert.jsonnet:1:10-14: assertion failure \ No newline at end of file --- a/tests/go_testdata_golden_override/static_error_eof.jsonnet.golden +++ b/tests/go_testdata_golden_override/static_error_eof.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: expected ';', got end of file - static_error_eof.jsonnet:1:12 \ No newline at end of file + static_error_eof.jsonnet:1:12 + static_error_eof.jsonnet:1:12-0:0: parse imported \ No newline at end of file --- a/tests/go_testdata_golden_override/std.codepoint3.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.codepoint3.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected char, got string argument evaluation - std.codepoint3.jsonnet:1:14-21: function call \ No newline at end of file + std.codepoint3.jsonnet:1:14-19: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.codepoint6.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.codepoint6.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected char, got string argument evaluation - std.codepoint6.jsonnet:1:14-19: function call \ No newline at end of file + std.codepoint6.jsonnet:1:14-17: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.codepoint7.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.codepoint7.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected char, got string argument evaluation - std.codepoint7.jsonnet:2:0-2:0: function call \ No newline at end of file + std.codepoint7.jsonnet:2:14-0:0: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.codepoint8.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.codepoint8.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected char, got number argument evaluation - std.codepoint8.jsonnet:1:14-19: function call \ No newline at end of file + std.codepoint8.jsonnet:1:14-17: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.filter2.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.filter2.jsonnet.golden @@ -1,4 +1,4 @@ runtime error: x - std.filter2.jsonnet:1:12-18: error statement + std.filter2.jsonnet:1:12-16: error statement argument evaluation - std.filter2.jsonnet:1:11-27: function call \ No newline at end of file + std.filter2.jsonnet:1:11-25: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.filter4.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.filter4.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected function, got number argument evaluation - std.filter4.jsonnet:1:11-20: function call \ No newline at end of file + std.filter4.jsonnet:1:11-18: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.filter5.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.filter5.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected array, got number argument evaluation - std.filter5.jsonnet:1:11-32: function call \ No newline at end of file + std.filter5.jsonnet:1:11-30: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.filter6.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.filter6.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected function, got number argument evaluation - std.filter6.jsonnet:1:11-22: function call \ No newline at end of file + std.filter6.jsonnet:1:11-20: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.filter8.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.filter8.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected function, got array argument evaluation - std.filter8.jsonnet:1:11-37: function call \ No newline at end of file + std.filter8.jsonnet:1:11-35: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.filter_swapped_args.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.filter_swapped_args.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected function, got array argument evaluation - std.filter_swapped_args.jsonnet:1:11-39: function call \ No newline at end of file + std.filter_swapped_args.jsonnet:1:11-37: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.flatmap5.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.flatmap5.jsonnet.golden @@ -1,5 +1,5 @@ runtime error: a - std.flatmap5.jsonnet:1:21-27: error statement - std.flatmap5.jsonnet:2:21-49: function call + std.flatmap5.jsonnet:1:21-25: error statement + std.flatmap5.jsonnet:2:21-47: function call argument evaluation - std.flatmap5.jsonnet:2:9-50: function call \ No newline at end of file + std.flatmap5.jsonnet:2:9-48: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.join7.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.join7.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: in std.join all items should be strings - std.join7.jsonnet:1:9-28: function call \ No newline at end of file + std.join7.jsonnet:1:9-26: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.join8.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.join8.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: in std.join all items should be arrays - std.join8.jsonnet:1:9-34: function call \ No newline at end of file + std.join8.jsonnet:1:9-32: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.makeArrayNamed3.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.makeArrayNamed3.jsonnet.golden @@ -1,2 +1,2 @@ parameter blahblah is not defined - std.makeArrayNamed3.jsonnet:1:14-55: function preparation \ No newline at end of file + std.makeArrayNamed3.jsonnet:1:14-53: function preparation \ No newline at end of file --- a/tests/go_testdata_golden_override/std.makeArray_bad.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.makeArray_bad.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected BoundedNumber<0, 4294967295>, got string argument evaluation - std.makeArray_bad.jsonnet:1:14-37: function call \ No newline at end of file + std.makeArray_bad.jsonnet:1:14-35: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.makeArray_bad2.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.makeArray_bad2.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected function, got string argument evaluation - std.makeArray_bad2.jsonnet:1:14-26: function call \ No newline at end of file + std.makeArray_bad2.jsonnet:1:14-24: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.makeArray_noninteger.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.makeArray_noninteger.jsonnet.golden @@ -1,3 +1,3 @@ runtime error: cannot convert number with fractional part to u32 argument evaluation - std.makeArray_noninteger.jsonnet:1:14-35: function call \ No newline at end of file + std.makeArray_noninteger.jsonnet:1:14-33: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.makeArray_noninteger_big.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.makeArray_noninteger_big.jsonnet.golden @@ -1,3 +1,3 @@ type error: number out of bounds: 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 not in 0..4294967295 argument evaluation - std.makeArray_noninteger_big.jsonnet:1:14-37: function call \ No newline at end of file + std.makeArray_noninteger_big.jsonnet:1:14-35: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.manifestYamlDoc_error.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.manifestYamlDoc_error.jsonnet.golden @@ -1,5 +1,5 @@ runtime error: foo - std.manifestYamlDoc_error.jsonnet:1:31-37: error statement + std.manifestYamlDoc_error.jsonnet:1:31-35: error statement field evaluation field manifestification - std.manifestYamlDoc_error.jsonnet:1:20-48: function call \ No newline at end of file + std.manifestYamlDoc_error.jsonnet:1:20-46: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.maxArrayOnEmpty.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.maxArrayOnEmpty.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: expected non-empty array - std.maxArrayOnEmpty.jsonnet:1:13-18: function call \ No newline at end of file + std.maxArrayOnEmpty.jsonnet:1:13-16: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.md5_6.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.md5_6.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected string, got number argument evaluation - std.md5_6.jsonnet:1:8-13: function call \ No newline at end of file + std.md5_6.jsonnet:1:8-11: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.minArrayOnEmpty.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.minArrayOnEmpty.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: expected non-empty array - std.minArrayOnEmpty.jsonnet:1:13-18: function call \ No newline at end of file + std.minArrayOnEmpty.jsonnet:1:13-16: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.modulo2.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.modulo2.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected number, got string argument evaluation - std.modulo2.jsonnet:1:11-23: function call \ No newline at end of file + std.modulo2.jsonnet:1:11-21: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.modulo3.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.modulo3.jsonnet.golden @@ -1,3 +1,3 @@ type error: expected number, got string argument evaluation - std.modulo3.jsonnet:1:11-23: function call \ No newline at end of file + std.modulo3.jsonnet:1:11-21: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.primitiveEquals10.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.primitiveEquals10.jsonnet.golden @@ -1,4 +1,4 @@ runtime error: x - std.primitiveEquals10.jsonnet:1:21-27: error statement + std.primitiveEquals10.jsonnet:1:21-25: error statement argument evaluation - std.primitiveEquals10.jsonnet:1:20-36: function call \ No newline at end of file + std.primitiveEquals10.jsonnet:1:20-34: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.primitiveEquals13.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.primitiveEquals13.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: primitiveEquals operates on primitive types, got array - std.primitiveEquals13.jsonnet:1:20-29: function call \ No newline at end of file + std.primitiveEquals13.jsonnet:1:20-27: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.primitiveEquals6.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.primitiveEquals6.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: primitiveEquals operates on primitive types, got object - std.primitiveEquals6.jsonnet:1:20-29: function call \ No newline at end of file + std.primitiveEquals6.jsonnet:1:20-27: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.primitiveEquals7.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.primitiveEquals7.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: cannot test equality of functions - std.primitiveEquals7.jsonnet:1:20-51: function call \ No newline at end of file + std.primitiveEquals7.jsonnet:1:20-49: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.primitiveEquals9.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.primitiveEquals9.jsonnet.golden @@ -1,4 +1,4 @@ runtime error: x - std.primitiveEquals9.jsonnet:1:25-31: error statement + std.primitiveEquals9.jsonnet:1:25-29: error statement argument evaluation - std.primitiveEquals9.jsonnet:1:20-36: function call \ No newline at end of file + std.primitiveEquals9.jsonnet:1:20-34: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.sort3.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.sort3.jsonnet.golden @@ -1,3 +1,3 @@ runtime error: foo - std.sort3.jsonnet:1:16-22: error statement - std.sort3.jsonnet:1:9-30: function call \ No newline at end of file + std.sort3.jsonnet:1:16-20: error statement + std.sort3.jsonnet:1:9-28: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.sort4.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.sort4.jsonnet.golden @@ -1,2 +1,2 @@ binary operation array < number is not implemented - std.sort4.jsonnet:1:9-30: function call \ No newline at end of file + std.sort4.jsonnet:1:9-28: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/std.toString5.jsonnet.golden +++ b/tests/go_testdata_golden_override/std.toString5.jsonnet.golden @@ -1,4 +1,4 @@ runtime error: x - std.toString5.jsonnet:1:14-20: error statement + std.toString5.jsonnet:1:14-18: error statement argument evaluation - std.toString5.jsonnet:1:13-25: function call \ No newline at end of file + std.toString5.jsonnet:1:13-23: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/strReplace3.jsonnet.golden +++ b/tests/go_testdata_golden_override/strReplace3.jsonnet.golden @@ -1,2 +1,2 @@ runtime error: `from` string must not be zero length - strReplace3.jsonnet:1:15-36: function call \ No newline at end of file + strReplace3.jsonnet:1:15-34: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/supersugar8.jsonnet.golden +++ b/tests/go_testdata_golden_override/supersugar8.jsonnet.golden @@ -1,2 +1,2 @@ assert failed: null - supersugar8.jsonnet:1:10-17: assertion failure \ No newline at end of file + supersugar8.jsonnet:1:10-15: assertion failure \ No newline at end of file --- a/tests/go_testdata_golden_override/syntax_error.jsonnet.golden +++ b/tests/go_testdata_golden_override/syntax_error.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: unexpected end of file - syntax_error.jsonnet:1:4 \ No newline at end of file + syntax_error.jsonnet:1:4 + syntax_error.jsonnet:1:4-0:0: parse imported \ No newline at end of file --- a/tests/go_testdata_golden_override/tailstrict2.jsonnet.golden +++ b/tests/go_testdata_golden_override/tailstrict2.jsonnet.golden @@ -1,4 +1,4 @@ runtime error: xxx - tailstrict2.jsonnet:1:13-19: error statement - tailstrict2.jsonnet:2:15-19: function call - tailstrict2.jsonnet:2:19-27: function call \ No newline at end of file + tailstrict2.jsonnet:1:13-17: error statement + tailstrict2.jsonnet:2:15-17: function call + tailstrict2.jsonnet:2:19-25: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/too_many_arguments.jsonnet.golden +++ b/tests/go_testdata_golden_override/too_many_arguments.jsonnet.golden @@ -1,3 +1,3 @@ too many args, function has 3 Function has the following signature: (x, y, z) - too_many_arguments.jsonnet:1:23-36: function preparation \ No newline at end of file + too_many_arguments.jsonnet:1:23-34: function preparation \ No newline at end of file --- a/tests/go_testdata_golden_override/type_error.jsonnet.golden +++ b/tests/go_testdata_golden_override/type_error.jsonnet.golden @@ -1,4 +1,4 @@ runtime error: xxx - type_error.jsonnet:1:10-16: error statement + type_error.jsonnet:1:10-14: error statement argument evaluation - type_error.jsonnet:1:9-23: function call \ No newline at end of file + type_error.jsonnet:1:9-21: function call \ No newline at end of file --- a/tests/go_testdata_golden_override/unfinished_args.jsonnet.golden +++ b/tests/go_testdata_golden_override/unfinished_args.jsonnet.golden @@ -1,2 +1,3 @@ syntax error: expected ')', got end of file - unfinished_args.jsonnet:1:17 \ No newline at end of file + unfinished_args.jsonnet:1:17 + unfinished_args.jsonnet:1:17-0:0: parse imported \ No newline at end of file --- a/tests/tests/cpp_test_suite.rs +++ b/tests/tests/cpp_test_suite.rs @@ -21,7 +21,8 @@ fn run(file: &Path, root: &Path) -> String { let mut s = State::builder(); - let std_context = ContextInitializer::new(PathResolver::Relative(root.to_owned())); + let resolver = PathResolver::Relative(root.to_owned()); + let std_context = ContextInitializer::new(resolver.clone()); // C++ test suite std_context.add_ext_str("var1".into(), "test".into()); std_context @@ -59,7 +60,7 @@ let _entered = s.enter(); let trace_format = CompactFormat { - resolver: PathResolver::FileName, + resolver: resolver.clone(), max_trace: 20, padding: 4, }; @@ -168,14 +169,9 @@ "string_times_number.jsonnet", ]; -#[test] -fn cpp_test_suite() -> io::Result<()> { - for root_dir in ["cpp_test_suite", "go_testdata"] { - let root_tests = PathBuf::from(env!("CARGO_MANIFEST_DIR")); - let root = root_tests.join(root_dir); - let root_override = root_tests.join(format!("{root_dir}_golden_override")); - - for entry in fs::read_dir(&root).map_err(|e| io::Error::other(format!("failed to enumerate cpp_test_suite dir (Note: it needs to be cloned from C++ jsonnet repo for this test): {e}")))? { +fn run_test_suite(root: PathBuf, root_override: PathBuf) -> io::Result<()> { + dbg!(&root); + for entry in fs::read_dir(&root).map_err(|e| io::Error::other(format!("failed to enumerate test suite dir (Note: it needs to be cloned from upstream jsonnet repo for this test): {e}")))? { let entry = entry?; if entry.path().extension().is_none_or(|e| e != "jsonnet") { continue; @@ -265,6 +261,25 @@ } println!("done!"); } + Ok(()) +} + +#[test] +fn upstream_test_suite() -> io::Result<()> { + let manifest = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + if let Some(cpp_jsonnet) = std::env::var_os("CPP_JSONNET_FOR_TESTS") { + let path = PathBuf::from(cpp_jsonnet).join("test_suite"); + let path_override = manifest.join("cpp_test_suite_golden_override"); + run_test_suite(path, path_override)?; + } else { + eprintln!("no cpp jsonnet available for tests"); + } + if let Some(go_jsonnet) = std::env::var_os("GO_JSONNET_FOR_TESTS") { + let path = PathBuf::from(go_jsonnet).join("testdata"); + let path_override = manifest.join("go_testdata_golden_override"); + run_test_suite(path, path_override)?; + } else { + eprintln!("no go jsonnet available for tests"); } jrsonnet_gcmodule::with_thread_object_space(ObjectSpace::leak); --- a/tests/tests/snapshots/golden__golden@issue187.rev.jsonnet.snap +++ b/tests/tests/snapshots/golden__golden@issue187.rev.jsonnet.snap @@ -4,4 +4,4 @@ input_file: tests/golden/issue187.rev.jsonnet --- runtime error: bad utf8 - issue187.rev.jsonnet:1:15-92: function call + issue187.rev.jsonnet:1:15-90: function call --- a/tests/tests/snapshots/golden__golden@issue23.jsonnet.snap +++ b/tests/tests/snapshots/golden__golden@issue23.jsonnet.snap @@ -4,4 +4,4 @@ input_file: tests/golden/issue23.jsonnet --- infinite recursion detected - issue23.jsonnet:1:1-8: import + issue23.jsonnet:1:1-6: import --- a/tests/tests/snapshots/golden__golden@issue40.jsonnet.snap +++ b/tests/tests/snapshots/golden__golden@issue40.jsonnet.snap @@ -4,5 +4,5 @@ input_file: tests/golden/issue40.jsonnet --- assert failed: is number - issue40.jsonnet:6:10-31: assertion failure - issue40.jsonnet:9:19-32: function call + issue40.jsonnet:6:10-29: assertion failure + issue40.jsonnet:9:19-30: function call --- a/tests/tests/snapshots/golden__golden@test_assertThrow.jsonnet.snap +++ b/tests/tests/snapshots/golden__golden@test_assertThrow.jsonnet.snap @@ -4,4 +4,4 @@ input_file: tests/golden/test_assertThrow.jsonnet --- runtime error: expected argument to throw on evaluation, but it returned instead - test_assertThrow.jsonnet:2:17-26: function call + test_assertThrow.jsonnet:2:17-24: function call --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -17,3 +17,6 @@ ungrammar.workspace = true xshell.workspace = true clap = { workspace = true, features = ["derive"] } + +[target.'cfg(target_os = "linux")'.dependencies] +nix.workspace = true --- /dev/null +++ b/xtask/src/bench.rs @@ -0,0 +1,140 @@ +use std::{ + ffi::OsString, + mem, + process::{Command, Stdio}, + time::Instant, +}; + +use anyhow::{bail, Result}; +use nix::{libc, sys::wait::WaitStatus, unistd::Pid}; + +#[derive(Debug, Clone)] +pub struct Stats { + pub min: f64, + pub max: f64, + pub mean: f64, + pub stddev: f64, +} + +impl Stats { + fn from_samples(samples: &[f64]) -> Self { + let n = samples.len() as f64; + let mean = samples.iter().sum::() / n; + let var = if samples.len() > 1 { + samples.iter().map(|x| (x - mean).powi(2)).sum::() / (n - 1.0) + } else { + 0.0 + }; + Self { + min: samples.iter().copied().fold(f64::INFINITY, f64::min), + max: samples.iter().copied().fold(f64::NEG_INFINITY, f64::max), + mean, + stddev: var.sqrt(), + } + } +} + +#[derive(Debug, Clone)] +pub struct BenchResult { + pub runs: u32, + /// Wall-clock time per run, seconds. + pub wall_secs: Stats, + /// Peak resident set per run, KiB (Linux `ru_maxrss`). + pub max_rss_kib: Stats, +} + +pub struct BenchOpts<'a> { + pub program: &'a OsString, + pub args: &'a [OsString], + pub runs: u32, + pub warmup: u32, + pub output: bool, +} + +pub fn bench(opts: BenchOpts<'_>) -> Result { + if opts.runs == 0 { + bail!("runs must be >= 1"); + } + + for _ in 0..opts.warmup { + run_once(opts.program, opts.args, opts.output)?; + } + + let mut wall = Vec::with_capacity(opts.runs as usize); + let mut rss = Vec::with_capacity(opts.runs as usize); + for _ in 0..opts.runs { + let s = run_once(opts.program, opts.args, opts.output)?; + wall.push(s.wall_secs); + rss.push(s.max_rss_kib as f64); + } + + Ok(BenchResult { + runs: opts.runs, + wall_secs: Stats::from_samples(&wall), + max_rss_kib: Stats::from_samples(&rss), + }) +} + +struct Sample { + wall_secs: f64, + max_rss_kib: i64, +} + +fn run_once(program: &OsString, args: &[OsString], silent: bool) -> Result { + let mut cmd = Command::new(program); + cmd.args(args); + if silent { + cmd.stdout(Stdio::null()).stderr(Stdio::null()); + } + + let start = Instant::now(); + let child = cmd.spawn()?; + let pid = child.id() as libc::pid_t; + // We'll reap via wait4 ourselves; don't let std touch this handle again. + mem::forget(child); + + let mut status: libc::c_int = 0; + let mut ru: libc::rusage = unsafe { mem::zeroed() }; + let waited = unsafe { libc::wait4(pid, &raw mut status, 0, &raw mut ru) }; + let elapsed = start.elapsed(); + if waited < 0 { + return Err(std::io::Error::last_os_error().into()); + } + + match WaitStatus::from_raw(Pid::from_raw(pid), status)? { + WaitStatus::Exited(_, 0) => {} + WaitStatus::Exited(_, code) => bail!("child exited with code {code}"), + WaitStatus::Signaled(_, sig, _) => bail!("child killed by signal {sig:?}"), + other => bail!("unexpected wait status: {other:?}"), + } + + Ok(Sample { + wall_secs: elapsed.as_secs_f64(), + max_rss_kib: ru.ru_maxrss, + }) +} + +#[cfg(target_os = "linux")] +pub fn bench_cmd(args: &[String], runs: u32, warmup: u32, output: bool) -> Result<()> { + let program = std::ffi::OsString::from(&args[0]); + let rest: Vec = args[1..].iter().map(Into::into).collect(); + let r = bench(BenchOpts { + program: &program, + args: &rest, + runs, + warmup, + output, + })?; + eprintln!( + "runs: {} wall: {:.3}s ± {:.3}s [{:.3}..{:.3}]", + r.runs, r.wall_secs.mean, r.wall_secs.stddev, r.wall_secs.min, r.wall_secs.max, + ); + eprintln!( + " max_rss: {} ± {} KiB [{}..{}]", + r.max_rss_kib.mean as i64, + r.max_rss_kib.stddev as i64, + r.max_rss_kib.min as i64, + r.max_rss_kib.max as i64, + ); + Ok(()) +} --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -1,7 +1,11 @@ +#[cfg(not(target_os = "linux"))] +use anyhow::bail; use anyhow::Result; use clap::Parser; -use xshell::{Shell, cmd}; +use xshell::{cmd, Shell}; +#[cfg(target_os = "linux")] +mod bench; mod sourcegen; #[derive(Parser)] @@ -35,8 +39,18 @@ test_file: String, args: Vec, }, - /// Update C++/Golang golden testsuites from git - UpdateTestsuites, + /// Benchmark a command: repeated runs, reports time + RSS stats (Linux only) + Bench { + #[arg(long, default_value_t = 10)] + runs: u32, + #[arg(long, default_value_t = 1)] + warmup: u32, + /// Show command output + #[arg(long, short = 'q')] + output: bool, + #[arg(trailing_var_arg = true, required = true)] + args: Vec, + }, } fn main() -> Result<()> { @@ -107,36 +121,12 @@ Ok(()) } - Opts::UpdateTestsuites => { - let _pushd = sh.push_dir("tests"); - let git_dir = sh.create_temp_dir()?; - let git_dir_path = git_dir.path(); - cmd!( - sh, - "git clone https://github.com/google/jsonnet.git --depth=1 {git_dir_path}/jsonnet" - ) - .run()?; - cmd!( - sh, - "git clone https://github.com/google/go-jsonnet.git --depth=1 {git_dir_path}/go-jsonnet" - ) - .run()?; - sh.remove_path("cpp_test_suite")?; - sh.remove_path("go_testdata")?; - sh.remove_path("cpp_perf_tests")?; - sh.remove_path("cpp_benchmarks")?; - sh.remove_path("go_builtin_benchmarks")?; - cmd!(sh, "mv {git_dir_path}/jsonnet/test_suite cpp_test_suite").run()?; - cmd!(sh, "mv {git_dir_path}/go-jsonnet/testdata go_testdata").run()?; - cmd!(sh, "mv {git_dir_path}/jsonnet/perf_tests cpp_perf_tests").run()?; - cmd!(sh, "mv {git_dir_path}/jsonnet/benchmarks cpp_benchmarks").run()?; - cmd!( - sh, - "mv {git_dir_path}/go-jsonnet/builtin-benchmarks go_builtin_benchmarks" - ) - .run()?; - - Ok(()) - } + #[cfg(target_os = "linux")] + Opts::Bench { + runs, + warmup, + output, + args, + } => bench::bench_cmd(&args, runs, warmup, output), } }