about summary refs log tree commit diff
path: root/src/fix-ng/eval.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/fix-ng/eval.cc')
-rw-r--r--src/fix-ng/eval.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/fix-ng/eval.cc b/src/fix-ng/eval.cc
index 785467741631..46bb1f94188d 100644
--- a/src/fix-ng/eval.cc
+++ b/src/fix-ng/eval.cc
@@ -160,6 +160,11 @@ Expr evalExpr2(EvalState & state, Expr e)
     if (ATmatch(e, "Rec([<list>])", &bnds))
         return expandRec(e, (ATermList) bnds);
 
+    /* Let expressions `let {..., body = ...}' are just desugared
+       into `(rec {..., body = ...}).body'. */
+    if (ATmatch(e, "LetRec(<term>)", &e1))
+        return evalExpr(state, ATmake("Select(Rec(<term>), \"body\")", e1));
+
     /* Barf. */
     throw badTerm("invalid expression", e);
 }