···251 }:
252 assert builtins.isInt depthLimit;
253 let
0000000000254 transform = depth:
255 if depthLimit != null && depth > depthLimit then
256 if throwOnDepthLimit
···261 let
262 evalNext = x: mapAny (depth + 1) (transform (depth + 1) x);
263 in
264- if isAttrs v then mapAttrs (const evalNext) v
265 else if isList v then map evalNext v
266 else transform (depth + 1) v;
267 in
···251 }:
252 assert builtins.isInt depthLimit;
253 let
254+ specialAttrs = [
255+ "__functor"
256+ "__functionArgs"
257+ "__toString"
258+ "__pretty"
259+ ];
260+ stepIntoAttr = evalNext: name:
261+ if builtins.elem name specialAttrs
262+ then id
263+ else evalNext;
264 transform = depth:
265 if depthLimit != null && depth > depthLimit then
266 if throwOnDepthLimit
···271 let
272 evalNext = x: mapAny (depth + 1) (transform (depth + 1) x);
273 in
274+ if isAttrs v then mapAttrs (stepIntoAttr evalNext) v
275 else if isList v then map evalNext v
276 else transform (depth + 1) v;
277 in