mockersf / hocon.rs

Parse HOCON configuration files in Rust
MIT License
78 stars 16 forks source link

panic when using the `=+` field separator on. an array that was substituted #27

Closed mockersf closed 4 years ago

mockersf commented 4 years ago

the following document:

{
    "array1": [1],
    "v": ${array1}
    "v" += 2
}

panics:

RUST_BACKTRACE=1 cargo run --example hocon2json -- tests/data/error.conf
    Finished dev [unoptimized + debuginfo] target(s) in 0.16s
     Running `target/debug/examples/hocon2json tests/data/basic.conf`
thread 'main' panicked at 'index 2 out of range for slice of length 1', src/internals/internal.rs:377:45
stack backtrace:
   0: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/libstd/panicking.rs:0
   1: core::fmt::write
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/libstd/panicking.rs:0
   2: std::io::Write::write_fmt
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/libstd/panicking.rs:0
   3: std::panicking::default_hook::{{closure}}
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/libstd/panicking.rs:0
   4: std::panicking::default_hook
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/libstd/panicking.rs:0
   5: std::panicking::rust_panic_with_hook
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/libstd/panicking.rs:0
   6: rust_begin_unwind
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/libstd/panicking.rs:0
   7: core::panicking::panic_fmt
             at src/libcore/panicking.rs:101
   8: core::slice::slice_index_len_fail
             at src/libcore/slice/mod.rs:2751
   9: <core::ops::range::Range<usize> as core::slice::SliceIndex<[T]>>::index
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/libcore/slice/mod.rs:2919
  10: core::slice::<impl core::ops::index::Index<I> for [T]>::index
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/libcore/slice/mod.rs:2732
  11: <alloc::vec::Vec<T> as core::ops::index::Index<I>>::index
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/liballoc/vec.rs:1942
  12: hocon::internals::internal::HoconInternal::merge
             at src/internals/internal.rs:377
  13: hocon::HoconLoader::hocon
             at src/lib.rs:452
  14: hocon2json::parse_to_json
             at examples/hocon2json.rs:33
  15: hocon2json::main
             at examples/hocon2json.rs:43
  16: std::rt::lang_start::{{closure}}
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/libstd/rt.rs:67
  17: std::rt::lang_start_internal
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/libstd/panicking.rs:0
  18: std::rt::lang_start
             at /Users/francois/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/libstd/rt.rs:67
  19: main
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.