I did a pass through all files, fixing bits that have annoyed me here and there based on vibes. Roughly: - Replaced some out values like bools or strings with lists where appropriate. Those tests were likely older than the value printer - Added some parser tests where it makes sense - Gently touched some formatting woes, while trying to not cause too much diff noise - Removed some dead `with (import ./lib.nix);` code Change-Id: I8c40b2110f0b7799f68ae38ba61f049c5f1f6ee8
22 lines
692 B
Nix
22 lines
692 B
Nix
with import ./lib.nix;
|
|
|
|
let
|
|
as = { x.y.z = 123; a.b.c = 456; };
|
|
bs = { f-o-o.bar = "foo"; };
|
|
or = x: y: x || y;
|
|
in
|
|
[
|
|
as.x.y.z
|
|
as.foo or "foo"
|
|
as.x.y.bla or as.a.b.c
|
|
as.a.b.c or as.x.y.z
|
|
as.x.y.bla or bs.f-o-o.bar or "xyzzy"
|
|
as.x.y.bla or bs.bar.foo or "xyzzy"
|
|
(123).bla or null.foo or "xyzzy"
|
|
# Backwards compatibility test for `fun or` being handled as intended.
|
|
# n.b. this code contains a type error, because the nul value should be false instead of [].
|
|
# but the code expands to `true || (false || (false || [])))`, so as long as at least one value in the list is true
|
|
# it short-circuits and never runs into the type error
|
|
(fold or [] [true false false])
|
|
]
|