diff --git a/crates/nu-command/tests/commands/mut_.rs b/crates/nu-command/tests/commands/mut_.rs index bc274c8917..cb8f12d6ac 100644 --- a/crates/nu-command/tests/commands/mut_.rs +++ b/crates/nu-command/tests/commands/mut_.rs @@ -171,3 +171,9 @@ fn mut_path_operator_assign() { assert_eq!(actual.out, "5"); } + +#[test] +fn mut_records_update_properly() { + let actual = nu!(pipeline("mut a = {}; $a.b.c = 100; $a.b.c")); + assert_eq!(actual.out, "100"); +} diff --git a/crates/nu-protocol/src/value/mod.rs b/crates/nu-protocol/src/value/mod.rs index 24de846e3d..faa303986d 100644 --- a/crates/nu-protocol/src/value/mod.rs +++ b/crates/nu-protocol/src/value/mod.rs @@ -1036,8 +1036,8 @@ impl Value { } } if !found { + cols.push(col_name.clone()); if cell_path.len() == 1 { - cols.push(col_name.clone()); vals.push(new_val); } else { let mut new_col = Value::Record {