From 3e28f8b42c1521d25225c089c3ae0b59823bffa0 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Wed, 21 Aug 2024 14:35:50 -0400 Subject: [PATCH] missed .cpp --- src/expression/Lambda.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/expression/Lambda.cpp b/src/expression/Lambda.cpp index 98f69e3a..c21df94b 100644 --- a/src/expression/Lambda.cpp +++ b/src/expression/Lambda.cpp @@ -253,10 +253,19 @@ namespace xo { const std::vector> & argv, const rp & body) { - TypeDescr lambda_td = + TypeDescr lambda_td = assemble_lambda_td(argv, body); + rp env = LocalEnv::make(argv); - TypeDescr body_valuetype = nullptr; + rp retval + = new LambdaAccess(name, + lambda_td, + env, + body); + /* need two-phase construction b/c pointer cycle */ + env->assign_origin(retval.get()); + + return retval; } rp @@ -267,6 +276,14 @@ namespace xo { nullptr /*local_env*/, nullptr /*body*/); } + + LambdaAccess::LambdaAccess(const std::string & name, + TypeDescr lambda_td, + const rp & local_env, + const rp & body) + : Lambda(name, lambda_td, local_env, body) + {} + } /*namespace ast*/ } /*namespace xo*/