aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJade Lovelace <software@lfcode.ca>2024-03-29 18:26:40 -0700
committerJade Lovelace <software@lfcode.ca>2024-03-29 18:29:59 -0700
commit817322fbfb2a76289d3af9f2810cb01a5cb6ab88 (patch)
treec961bf6fb88be8dfcca74e5e41adc9ff93161ca4
parent6646b803964cc60a25723ac92cf97d4e828a83c3 (diff)
Document ExprLambda fields
We got confused what formals did and had to briefly figure it out. We should just have docs, so these are some. Change-Id: If3e794a401e69d022785cbfa0b0c2e2284f41f58
-rw-r--r--src/libexpr/nixexpr.hh10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libexpr/nixexpr.hh b/src/libexpr/nixexpr.hh
index e5755bb99..64a9ddeec 100644
--- a/src/libexpr/nixexpr.hh
+++ b/src/libexpr/nixexpr.hh
@@ -243,6 +243,7 @@ struct Formal
Expr * def;
};
+/** Attribute set destructuring in arguments of a lambda, if present */
struct Formals
{
typedef std::vector<Formal> Formals_;
@@ -270,9 +271,18 @@ struct Formals
struct ExprLambda : Expr
{
+ /** Where the lambda is defined in Nix code. May be falsey if the
+ * position is not known. */
PosIdx pos;
+ /** Name of the lambda. This is set if the lambda is defined in a
+ * let-expression or an attribute set, such that there is a name.
+ * Lambdas may have a falsey symbol as the name if they are anonymous */
Symbol name;
+ /** The argument name of this particular lambda. Is a falsey symbol if there
+ * is no such argument. */
Symbol arg;
+ /** Formals are present when the lambda destructures an attr set as
+ * argument, with or without ellipsis */
Formals * formals;
Expr * body;
ExprLambda(PosIdx pos, Symbol arg, Formals * formals, Expr * body)