fix(tvix/eval): thunk lambda expressions

As cl/8658 and b/274 reveal, lambda expressions are also wrapped in
thunks.

Resolves b/274.

Change-Id: I02fe5c8730ac76748d940e4f4427116587875275
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8662
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
This commit is contained in:
sterni 2023-05-29 12:45:35 +02:00 committed by clbot
parent 2aab01ac29
commit d09f333d0e

View file

@ -284,11 +284,9 @@ impl Compiler<'_> {
ast::Expr::Ident(ident) => self.compile_ident(slot, ident), ast::Expr::Ident(ident) => self.compile_ident(slot, ident),
ast::Expr::With(with) => self.thunk(slot, with, |c, s| c.compile_with(s, with)), ast::Expr::With(with) => self.thunk(slot, with, |c, s| c.compile_with(s, with)),
ast::Expr::Lambda(lambda) => { ast::Expr::Lambda(lambda) => self.thunk(slot, lambda, move |c, s| {
self.compile_lambda_or_thunk(false, slot, lambda, |c, s| { c.compile_lambda_or_thunk(false, s, lambda, |c, s| c.compile_lambda(s, lambda))
c.compile_lambda(s, lambda) }),
})
}
ast::Expr::Apply(apply) => { ast::Expr::Apply(apply) => {
self.thunk(slot, apply, move |c, s| c.compile_apply(s, apply)) self.thunk(slot, apply, move |c, s| c.compile_apply(s, apply))
} }