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:
parent
2d10d60fac
commit
aa122cbae7
310 changed files with 7278 additions and 5490 deletions
|
|
@ -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
|
||||
;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue