From 3f070cc417ab71cf8b20d5a9db62ff515d209846 Mon Sep 17 00:00:00 2001 From: Christopher League Date: Wed, 3 Nov 2021 09:25:27 -0400 Subject: [PATCH] In checkOverlay, accept underscored names for final/prev args. Resolves #4416. --- src/nix/flake.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/nix/flake.cc b/src/nix/flake.cc index 68bb76742..5855348ac 100644 --- a/src/nix/flake.cc +++ b/src/nix/flake.cc @@ -346,10 +346,14 @@ struct CmdFlakeCheck : FlakeCommand auto checkOverlay = [&](const std::string & attrPath, Value & v, const Pos & pos) { try { state->forceValue(v, pos); - if (!v.isLambda() || v.lambda.fun->hasFormals() || std::string(v.lambda.fun->arg) != "final") + if (!v.isLambda() || v.lambda.fun->hasFormals() || + (std::string(v.lambda.fun->arg) != "final" && + std::string(v.lambda.fun->arg) != "_final")) throw Error("overlay does not take an argument named 'final'"); auto body = dynamic_cast(v.lambda.fun->body); - if (!body || body->hasFormals() || std::string(body->arg) != "prev") + if (!body || body->hasFormals() || + (std::string(body->arg) != "prev" && + std::string(body->arg) != "_prev")) throw Error("overlay does not take an argument named 'prev'"); // FIXME: if we have a 'nixpkgs' input, use it to // evaluate the overlay.