about summary refs log tree commit diff
path: root/tvix/eval/src/value
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2022-08-23T19·54+0300
committertazjin <tazjin@tvl.su>2022-09-01T21·56+0000
commit6f31c895ffe2dc5dd8281d812252d5db0644ec77 (patch)
tree9e45e371bc7d066b8666a3df532c6d241ee1165b /tvix/eval/src/value
parent4715f9a3a0135e1b6bc1f24fbafc9b1ce1a9bc20 (diff)
refactor(tvix/eval): return a lambda from the compiler r/4576
Changes the internal compiler plumbing to not just return a chunk of
code, but the same chunk wrapped inside of a lambda value.

This is one more step towards compiling runtime lambdas.

Change-Id: If0035f8e65a2970c5ae123fc068a2396e1d8fd72
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6240
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
Diffstat (limited to 'tvix/eval/src/value')
-rw-r--r--tvix/eval/src/value/lambda.rs19
1 files changed, 15 insertions, 4 deletions
diff --git a/tvix/eval/src/value/lambda.rs b/tvix/eval/src/value/lambda.rs
index 2cecb4f537..d8609f50f3 100644
--- a/tvix/eval/src/value/lambda.rs
+++ b/tvix/eval/src/value/lambda.rs
@@ -3,10 +3,21 @@ use std::rc::Rc;
 
 use crate::chunk::Chunk;
 
-use super::NixString;
-
 #[derive(Clone, Debug)]
 pub struct Lambda {
-    name: Option<NixString>,
-    chunk: Rc<Chunk>,
+    // name: Option<NixString>,
+    pub(crate) chunk: Rc<Chunk>,
+}
+
+impl Lambda {
+    pub fn new_anonymous() -> Self {
+        Lambda {
+            // name: None,
+            chunk: Default::default(),
+        }
+    }
+
+    pub fn chunk(&mut self) -> &mut Rc<Chunk> {
+        &mut self.chunk
+    }
 }