Merge pull request #5477 from league/check-overlay-args

In checkOverlay, accept underscored names for final/prev args.
This commit is contained in:
Eelco Dolstra 2021-11-03 21:18:58 +01:00 committed by GitHub
commit ae14113969
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -346,10 +346,14 @@ struct CmdFlakeCheck : FlakeCommand
auto checkOverlay = [&](const std::string & attrPath, Value & v, const Pos & pos) { auto checkOverlay = [&](const std::string & attrPath, Value & v, const Pos & pos) {
try { try {
state->forceValue(v, pos); 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'"); throw Error("overlay does not take an argument named 'final'");
auto body = dynamic_cast<ExprLambda *>(v.lambda.fun->body); auto body = dynamic_cast<ExprLambda *>(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'"); throw Error("overlay does not take an argument named 'prev'");
// FIXME: if we have a 'nixpkgs' input, use it to // FIXME: if we have a 'nixpkgs' input, use it to
// evaluate the overlay. // evaluate the overlay.