diff --git a/crates/nu-command/src/filters/values.rs b/crates/nu-command/src/filters/values.rs index 023cf6c8e1..5a6be33b75 100644 --- a/crates/nu-command/src/filters/values.rs +++ b/crates/nu-command/src/filters/values.rs @@ -166,6 +166,13 @@ fn values( Value::Record { val, .. } => { Ok(val.vals.into_pipeline_data(ctrlc).set_metadata(metadata)) } + Value::LazyRecord { val, .. } => Ok(val + .collect()? + .as_record()? + .vals + .clone() + .into_pipeline_data(ctrlc) + .set_metadata(metadata)), // Propagate errors Value::Error { error, .. } => Err(*error), other => Err(ShellError::OnlySupportsThisInputType { diff --git a/crates/nu-command/tests/commands/insert.rs b/crates/nu-command/tests/commands/insert.rs index 50a8810538..8ffc265f96 100644 --- a/crates/nu-command/tests/commands/insert.rs +++ b/crates/nu-command/tests/commands/insert.rs @@ -79,3 +79,11 @@ fn insert_support_lazy_record() { nu!(r#"let x = (lazy make -c ["h"] -g {|a| $a | str upcase}); $x | insert a 10 | get a"#); assert_eq!(actual.out, "10"); } + +#[test] +fn lazy_record_test_values() { + let actual = nu!( + r#"lazy make --columns ["haskell", "futures", "nushell"] --get-value { |lazything| $lazything + "!" } | values | length"# + ); + assert_eq!(actual.out, "3"); +}