diff --git a/lix/libexpr/flake/flake.cc b/lix/libexpr/flake/flake.cc index 94ba34433..9e3711a48 100644 --- a/lix/libexpr/flake/flake.cc +++ b/lix/libexpr/flake/flake.cc @@ -1015,6 +1015,7 @@ Value prim_flakeRefToString(EvalState & state, Value ** args) "while evaluating the argument passed to builtins.flakeRefToString"); fetchers::Attrs attrs; for (const auto & attr : *args[0]->attrs()) { + state.forceValue(attr.value, noPos); auto t = attr.value.type(); if (t == nInt) { auto intValue = attr.value.integer().value; diff --git a/tests/functional2/lang/builtins.flakeRefToString/eval-fail-negative-integer.err.exp b/tests/functional2/lang/builtins.flakeRefToString/eval-fail-negative-integer.err.exp index fdb4a591a..5e8db03ae 100644 --- a/tests/functional2/lang/builtins.flakeRefToString/eval-fail-negative-integer.err.exp +++ b/tests/functional2/lang/builtins.flakeRefToString/eval-fail-negative-integer.err.exp @@ -1,14 +1,9 @@ error: - … while calling the 'seq' builtin - at /pwd/in.nix:1:16: - 1| let n = -1; in builtins.seq n (builtins.flakeRefToString { - | ^ - 2| type = "github"; - … while calling the 'flakeRefToString' builtin - at /pwd/in.nix:1:32: - 1| let n = -1; in builtins.seq n (builtins.flakeRefToString { - | ^ - 2| type = "github"; + at /pwd/in.nix:4:1: + 3| in + 4| builtins.flakeRefToString { + | ^ + 5| type = "github"; error: negative value given for flake ref attr repo: -1 diff --git a/tests/functional2/lang/builtins.flakeRefToString/in-negative-integer.nix b/tests/functional2/lang/builtins.flakeRefToString/in-negative-integer.nix index e0208eb25..790f138ca 100644 --- a/tests/functional2/lang/builtins.flakeRefToString/in-negative-integer.nix +++ b/tests/functional2/lang/builtins.flakeRefToString/in-negative-integer.nix @@ -1,7 +1,10 @@ -let n = -1; in builtins.seq n (builtins.flakeRefToString { +let + n = -1; +in +builtins.flakeRefToString { type = "github"; owner = "NixOS"; repo = n; ref = "23.05"; dir = "lib"; -}) +}