From 6de4db100ff8e3e7e9dc36de8568dfcf0c9760f1 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Wed, 10 Sep 2025 12:49:11 +0200 Subject: [PATCH] Add tests/f/lang/eval-okay-tryeval-failed-thunk-reeval --- .../lang/eval-okay-tryeval-failed-thunk-reeval.err.exp | 1 + .../lang/eval-okay-tryeval-failed-thunk-reeval.exp | 1 + .../lang/eval-okay-tryeval-failed-thunk-reeval.nix | 7 +++++++ 3 files changed, 9 insertions(+) create mode 100644 tests/functional/lang/eval-okay-tryeval-failed-thunk-reeval.err.exp create mode 100644 tests/functional/lang/eval-okay-tryeval-failed-thunk-reeval.exp create mode 100644 tests/functional/lang/eval-okay-tryeval-failed-thunk-reeval.nix diff --git a/tests/functional/lang/eval-okay-tryeval-failed-thunk-reeval.err.exp b/tests/functional/lang/eval-okay-tryeval-failed-thunk-reeval.err.exp new file mode 100644 index 000000000..ba0da519d --- /dev/null +++ b/tests/functional/lang/eval-okay-tryeval-failed-thunk-reeval.err.exp @@ -0,0 +1 @@ +trace: throwing diff --git a/tests/functional/lang/eval-okay-tryeval-failed-thunk-reeval.exp b/tests/functional/lang/eval-okay-tryeval-failed-thunk-reeval.exp new file mode 100644 index 000000000..be54b4b4e --- /dev/null +++ b/tests/functional/lang/eval-okay-tryeval-failed-thunk-reeval.exp @@ -0,0 +1 @@ +"done" diff --git a/tests/functional/lang/eval-okay-tryeval-failed-thunk-reeval.nix b/tests/functional/lang/eval-okay-tryeval-failed-thunk-reeval.nix new file mode 100644 index 000000000..b398e26fd --- /dev/null +++ b/tests/functional/lang/eval-okay-tryeval-failed-thunk-reeval.nix @@ -0,0 +1,7 @@ +# Since Nix 2.32, errors are memoized +let + # This attribute value will only be evaluated once. + foo = builtins.trace "throwing" throw "nope"; +in +# Trigger and catch the error twice. +builtins.seq (builtins.tryEval foo).success builtins.seq (builtins.tryEval foo).success "done"