diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc index 6af179e4e..29b8500e0 100644 --- a/src/libexpr/primops.cc +++ b/src/libexpr/primops.cc @@ -3344,7 +3344,7 @@ static void prim_mapAttrs(EvalState & state, const PosIdx pos, Value ** args, Va Value * vName = Value::toPtr(state.symbols[i.name]); Value * vFun2 = state.allocValue(); vFun2->mkApp(args[0], vName); - attrs.alloc(i.name).mkApp(vFun2, i.value); + attrs.alloc(i.name, i.pos).mkApp(vFun2, i.value); } v.mkAttrs(attrs.alreadySorted()); diff --git a/tests/functional/lang/eval-okay-getattrpos-mapattrs.exp b/tests/functional/lang/eval-okay-getattrpos-mapattrs.exp new file mode 100644 index 000000000..f6dd73af0 --- /dev/null +++ b/tests/functional/lang/eval-okay-getattrpos-mapattrs.exp @@ -0,0 +1 @@ +{ column = 5; file = "/pwd/lang/eval-okay-getattrpos-mapattrs.nix"; line = 3; } diff --git a/tests/functional/lang/eval-okay-getattrpos-mapattrs.nix b/tests/functional/lang/eval-okay-getattrpos-mapattrs.nix new file mode 100644 index 000000000..4c4b76b82 --- /dev/null +++ b/tests/functional/lang/eval-okay-getattrpos-mapattrs.nix @@ -0,0 +1,7 @@ +let + attrs = { + a = { }; + }; + + mappedAttrs = builtins.mapAttrs (key: value: value) attrs; +in builtins.unsafeGetAttrPos "a" mappedAttrs