From 1a1ad1a17dfbe1b4da3a0bb174c6830ac318a3a7 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Fri, 29 Sep 2017 09:11:26 -0400 Subject: Revert "Merge branch 'improved-make-overridable' of git://github.com/ElvishJerricco/nixpkgs" This reverts commit c3af1210b4c5d7ef380e75add463b37574fdcc8b, reversing changes made to 49f175cd0c80a39e1d05fc687c4a2a40e0aba58c. --- lib/fixed-points.nix | 34 ++++------------------------------ 1 file changed, 4 insertions(+), 30 deletions(-) (limited to 'lib/fixed-points.nix') diff --git a/lib/fixed-points.nix b/lib/fixed-points.nix index 2526360c111..13e053b5aa7 100644 --- a/lib/fixed-points.nix +++ b/lib/fixed-points.nix @@ -72,34 +72,8 @@ rec { # Same as `makeExtensible` but the name of the extending attribute is # customized. - makeExtensibleWithCustomName = extenderName: f: makeExtensibleWithInterface - (fixedPoint: extend: fixedPoint // { ${extenderName} = ext: extend (_: ext); }) - (_: f); - - # A version of `makeExtensible` that allows the function being fixed - # to return a different interface than the interface returned to the - # user. Along with `self` and `super` views of the internal - # interface, a `self` view of the output interface is also - # provided. `extend` is not added to the output by default. This is - # the job of the interface. - # - # nix-repl> foo = {a, b}: {c = a + b;} - # - # nix-repl> interface = {args, val, ...}: extend: val // {inherit extend;} - # - # nix-repl> obj = makeExtensibleWithInterface interface (output: self: { args = {a = 1; b = 2;}; val = foo self.args; }) - # - # nix-repl> obj.c - # 3 - # - # nix-repl> obj = obj.extend (output: self: super: { args = super.args // { b = output.d; }; }) - # - # nix-repl> obj = obj.extend (output: self: super: { val = super.val // { d = 10; }; }) - # - # nix-repl> { inherit (obj) c d; } - # { c = 11; d = 10; } - makeExtensibleWithInterface = interface: f: let i = interface - (fix' (f i)) - (fext: makeExtensibleWithInterface interface (i': (extends (fext i') (f i')))); - in i; + makeExtensibleWithCustomName = extenderName: rattrs: + fix' rattrs // { + ${extenderName} = f: makeExtensibleWithCustomName extenderName (extends f rattrs); + }; } -- cgit 1.4.1