style: format entire depot with nixpkgs-fmt

This CL can be used to compare the style of nixpkgs-fmt against other
formatters (nixpkgs, alejandra).

Change-Id: I87c6abff6bcb546b02ead15ad0405f81e01b6d9e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4397
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: lukegb <lukegb@tvl.fyi>
Reviewed-by: wpcarro <wpcarro@gmail.com>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Reviewed-by: kanepyork <rikingcoding@gmail.com>
Reviewed-by: tazjin <tazjin@tvl.su>
Reviewed-by: cynthia <cynthia@tvl.fyi>
Reviewed-by: edef <edef@edef.eu>
Reviewed-by: eta <tvl@eta.st>
Reviewed-by: grfn <grfn@gws.fyi>
This commit is contained in:
Vincent Ambo 2022-01-30 19:06:58 +03:00 committed by tazjin
parent 2d10d60fac
commit aa122cbae7
310 changed files with 7278 additions and 5490 deletions

View file

@ -4,22 +4,24 @@ let
# if so sets `isTag` to `true` and sets the name and value.
# If not, sets `isTag` to `false` and sets `errmsg`.
verifyTag = tag:
let cases = builtins.attrNames tag;
len = builtins.length cases;
let
cases = builtins.attrNames tag;
len = builtins.length cases;
in
if builtins.length cases == 1
then let name = builtins.head cases; in {
isTag = true;
name = name;
val = tag.${name};
errmsg = null;
}
then
let name = builtins.head cases; in {
isTag = true;
name = name;
val = tag.${name};
errmsg = null;
}
else {
isTag = false;
errmsg =
( "match: an instance of a sum is an attrset "
+ "with exactly one element, yours had ${toString len}"
+ ", namely: ${lib.generators.toPretty {} cases}" );
("match: an instance of a sum is an attrset "
+ "with exactly one element, yours had ${toString len}"
+ ", namely: ${lib.generators.toPretty {} cases}");
name = null;
val = null;
};
@ -63,21 +65,22 @@ let
# ] 1
# => { smol = 1; }
discrDef = defTag: fs: v:
let res = lib.findFirst
(t: t.val v)
null
(map assertIsTag fs);
let
res = lib.findFirst
(t: t.val v)
null
(map assertIsTag fs);
in
if res == null
then { ${defTag} = v; }
else { ${res.name} = v; };
if res == null
then { ${defTag} = v; }
else { ${res.name} = v; };
# Like `discrDef`, but fail if there is no match.
discr = fs: v:
let res = discrDef null fs v; in
assert lib.assertMsg (res != null)
"tag.discr: No predicate found that matches ${lib.generators.toPretty {} v}";
res;
assert lib.assertMsg (res != null)
"tag.discr: No predicate found that matches ${lib.generators.toPretty {} v}";
res;
# The canonical pattern matching primitive.
# A sum value is an attribute set with one element,
@ -104,17 +107,17 @@ let
match = sum: matcher:
let cases = builtins.attrNames sum;
in assert
let len = builtins.length cases; in
lib.assertMsg (len == 1)
( "match: an instance of a sum is an attrset "
+ "with exactly one element, yours had ${toString len}"
+ ", namely: ${lib.generators.toPretty {} cases}" );
let len = builtins.length cases; in
lib.assertMsg (len == 1)
("match: an instance of a sum is an attrset "
+ "with exactly one element, yours had ${toString len}"
+ ", namely: ${lib.generators.toPretty {} cases}");
let case = builtins.head cases;
in assert
lib.assertMsg (matcher ? ${case})
( "match: \"${case}\" is not a valid case of this sum, "
lib.assertMsg (matcher ? ${case})
("match: \"${case}\" is not a valid case of this sum, "
+ "the matcher accepts: ${lib.generators.toPretty {}
(builtins.attrNames matcher)}" );
(builtins.attrNames matcher)}");
matcher.${case} sum.${case};
# A `match` with the arguments flipped.
@ -148,15 +151,16 @@ let
;
};
in {
inherit
verifyTag
tagName
tagValue
discr
discrDef
match
matchLam
tests
;
in
{
inherit
verifyTag
tagName
tagValue
discr
discrDef
match
matchLam
tests
;
}

View file

@ -17,7 +17,7 @@ let
errmsg = null;
})
(assertEq "is not Tag"
(removeAttrs (verifyTag { foo = "bar"; baz = 42; }) ["errmsg"])
(removeAttrs (verifyTag { foo = "bar"; baz = 42; }) [ "errmsg" ])
{
isTag = false;
name = null;
@ -41,7 +41,8 @@ let
(discr [
{ bool = lib.isBool; }
{ int = lib.isInt; }
] true)
]
true)
{ bool = true; })
(assertEq "fallback to default"
(discrDef "def" [
@ -53,19 +54,24 @@ let
match-test = it "can match things" [
(assertEq "match example"
(let
success = { res = 42; };
failure = { err = "no answer"; };
matcher = {
res = i: i + 1;
err = _: 0;
};
in {
one = match success matcher;
two = match failure matcher;
(
let
success = { res = 42; };
failure = { err = "no answer"; };
matcher = {
res = i: i + 1;
err = _: 0;
};
in
{
one = match success matcher;
two = match failure matcher;
}
)
{
one = 43;
two = 0;
})
{ one = 43;
two = 0; })
(assertEq "matchLam & pipe"
(lib.pipe { foo = 42; } [
(matchLam {
@ -81,8 +87,8 @@ let
];
in
runTestsuite "tag" [
isTag-test
discr-test
match-test
]
runTestsuite "tag" [
isTag-test
discr-test
match-test
]