Skip to content

Commit faaf5b8

Browse files
authored
Merge pull request #13451 from NixOS/mergify/bp/2.28-maintenance/pr-13450
libexpr: Fix invalid handling of errors for imported functions (backport #13450)
2 parents 7a98e1b + 34f0690 commit faaf5b8

6 files changed

+33
-2
lines changed

src/libexpr/eval.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1564,7 +1564,7 @@ void EvalState::callFunction(Value & fun, std::span<Value *> args, Value & vRes,
15641564
symbols[i.name])
15651565
.atPos(lambda.pos)
15661566
.withTrace(pos, "from call site")
1567-
.withFrame(*fun.payload.lambda.env, lambda)
1567+
.withFrame(*vCur.payload.lambda.env, lambda)
15681568
.debugThrow();
15691569
}
15701570
env2.values[displ++] = i.def->maybeThunk(*this, env2);
@@ -1591,7 +1591,7 @@ void EvalState::callFunction(Value & fun, std::span<Value *> args, Value & vRes,
15911591
.atPos(lambda.pos)
15921592
.withTrace(pos, "from call site")
15931593
.withSuggestions(suggestions)
1594-
.withFrame(*fun.payload.lambda.env, lambda)
1594+
.withFrame(*vCur.payload.lambda.env, lambda)
15951595
.debugThrow();
15961596
}
15971597
unreachable();
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
error:
2+
… from call site
3+
at /pwd/lang/eval-fail-missing-arg-import.nix:1:1:
4+
1| import ./non-eval-trivial-lambda-formals.nix { }
5+
| ^
6+
2|
7+
8+
error: function 'anonymous lambda' called without required argument 'a'
9+
at /pwd/lang/non-eval-trivial-lambda-formals.nix:1:1:
10+
1| { a }: a
11+
| ^
12+
2|
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import ./non-eval-trivial-lambda-formals.nix { }
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
error:
2+
… from call site
3+
at /pwd/lang/eval-fail-undeclared-arg-import.nix:1:1:
4+
1| import ./non-eval-trivial-lambda-formals.nix {
5+
| ^
6+
2| a = "a";
7+
8+
error: function 'anonymous lambda' called with unexpected argument 'b'
9+
at /pwd/lang/non-eval-trivial-lambda-formals.nix:1:1:
10+
1| { a }: a
11+
| ^
12+
2|
13+
Did you mean a?
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import ./non-eval-trivial-lambda-formals.nix {
2+
a = "a";
3+
b = "b";
4+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{ a }: a

0 commit comments

Comments
 (0)