Fix adding at shallow depth

This commit is contained in:
Jonathan Turner 2019-08-20 15:36:52 +12:00
parent 154a45bbd6
commit 136b5693cd
2 changed files with 14 additions and 4 deletions

View File

@ -354,7 +354,16 @@ impl Value {
if let Value::Object(ref mut o) = new_obj {
let mut current = o;
for idx in 0..split_path.len() - 1 {
if split_path.len() == 1 {
// Special case for inserting at the top level
current
.entries
.insert(path.to_string(), Tagged::from_item(new_value, tag));
return Some(Tagged::from_item(new_obj, tag));
}
for idx in 0..split_path.len() {
match current.entries.get_mut(split_path[idx]) {
Some(next) => {
if idx == (split_path.len() - 2) {

View File

@ -23,9 +23,10 @@ impl Add {
Some(f) => match obj.insert_data_at_path(value_tag, &f, v) {
Some(v) => return Ok(v),
None => {
return Err(ShellError::string(
"add could not find place to insert field",
))
return Err(ShellError::string(format!(
"add could not find place to insert field {:?} {}",
obj, f
)))
}
},
None => Err(ShellError::string(