diff options
author | Griffin Smith <root@gws.fyi> | 2022-10-08T17·33-0400 |
---|---|---|
committer | grfn <grfn@gws.fyi> | 2022-10-08T19·02+0000 |
commit | 278bccc1ea3542610012177171234ad1c3c44dcf (patch) | |
tree | 029d2723a6dd1e788cc5c165e015df255c033bed /tvix/eval/src/value | |
parent | f6bcd11cad1e370deb0580ae1a7f4d050cd75bab (diff) |
refactor(tvix/eval): Encapsulate Value::Attrs construction r/5067
Factor out the construction of Value::Attrs (including the Rc) into a new `attrs` constructor function, to abstract away the presence of the Rc itself. Change-Id: I42fd4c3841e1db368db999ddd651277ff995f025 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6892 Autosubmit: grfn <grfn@gws.fyi> Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/eval/src/value')
-rw-r--r-- | tvix/eval/src/value/arbitrary.rs | 4 | ||||
-rw-r--r-- | tvix/eval/src/value/mod.rs | 8 |
2 files changed, 10 insertions, 2 deletions
diff --git a/tvix/eval/src/value/arbitrary.rs b/tvix/eval/src/value/arbitrary.rs index 20be3732e007..cd7629cfb923 100644 --- a/tvix/eval/src/value/arbitrary.rs +++ b/tvix/eval/src/value/arbitrary.rs @@ -1,7 +1,7 @@ //! Support for configurable generation of arbitrary nix values use proptest::{prelude::*, strategy::BoxedStrategy}; -use std::{ffi::OsString, rc::Rc}; +use std::ffi::OsString; use super::{NixAttrs, NixList, NixString, Value}; @@ -70,7 +70,7 @@ fn non_internal_value() -> impl Strategy<Value = Value> { Default::default(), Parameters::Strategy(inner.clone()) )) - .prop_map(|a| Value::Attrs(Rc::new(a))), + .prop_map(Value::attrs), any_with::<NixList>((Default::default(), Parameters::Strategy(inner))) .prop_map(Value::List) ] diff --git a/tvix/eval/src/value/mod.rs b/tvix/eval/src/value/mod.rs index e6a6052c21dd..dd61ecf0bbea 100644 --- a/tvix/eval/src/value/mod.rs +++ b/tvix/eval/src/value/mod.rs @@ -115,6 +115,14 @@ impl<'a> Deref for ForceResult<'a> { } } +/// Constructors +impl Value { + /// Construct a [`Value::Attrs`] from a [`NixAttrs`]. + pub fn attrs(attrs: NixAttrs) -> Self { + Self::Attrs(Rc::new(attrs)) + } +} + impl Value { /// Coerce a `Value` to a string. See `CoercionKind` for a rundown of what /// input types are accepted under what circumstances. |