Skip to content

Commit

Permalink
Always preserve expanded attribute parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
infinisil committed Jul 19, 2024
1 parent e81d7d0 commit 158663d
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 18 deletions.
23 changes: 14 additions & 9 deletions src/Nixfmt/Pretty.hs
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,9 @@ instance Pretty Parameter where
pretty (IDParameter i) = pretty i
-- {}:
pretty (SetParameter bopen [] bclose) =
group $ pretty (moveTrailingCommentUp bopen) <> hardspace <> pretty bclose
group $ pretty (moveTrailingCommentUp bopen) <> sep <> pretty bclose
where
sep = if sourceLine bopen /= sourceLine bclose then hardline else hardspace
-- { stuff }:
pretty (SetParameter bopen attrs bclose) =
group $
Expand All @@ -332,14 +334,17 @@ instance Pretty Parameter where
[pretty (ParamAttr name maybeDefault Nothing) <> trailing ","]
handleTrailingComma (x : xs) = pretty x : handleTrailingComma xs

sep = case attrs of
[ParamEllipsis _] -> line
-- Attributes must be without default
[ParamAttr _ Nothing _] -> line
[ParamAttr _ Nothing _, ParamEllipsis _] -> line
[ParamAttr _ Nothing _, ParamAttr _ Nothing _] -> line
[ParamAttr _ Nothing _, ParamAttr _ Nothing _, ParamEllipsis _] -> line
_ -> hardline
sep =
if sourceLine bopen /= sourceLine bclose
then hardline
else case attrs of
[ParamEllipsis _] -> line
-- Attributes must be without default
[ParamAttr _ Nothing _] -> line
[ParamAttr _ Nothing _, ParamEllipsis _] -> line
[ParamAttr _ Nothing _, ParamAttr _ Nothing _] -> line
[ParamAttr _ Nothing _, ParamAttr _ Nothing _, ParamEllipsis _] -> line
_ -> hardline
pretty (ContextParameter param1 at param2) =
pretty param1 <> pretty at <> pretty param2

Expand Down
23 changes: 17 additions & 6 deletions test/diff/idioms_lib_3/out.nix
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
#
# Tests can be found in ./tests/misc.nix
# Documentation in the manual, #sec-generators
{ lib }:
{
lib,
}:
with (lib).trivial;
let
libStr = lib.strings;
Expand All @@ -29,7 +31,8 @@ rec {
# The builtin `toString` function has some strange defaults,
# suitable for bash scripts but not much else.
mkValueStringDefault =
{ }:
{
}:
v:
with builtins;
let
Expand Down Expand Up @@ -203,7 +206,10 @@ rec {
# allow lists as values for duplicate keys
listsAsDuplicateKeys ? false,
}:
{ globalSection, sections }:
{
globalSection,
sections,
}:
(
if globalSection == { } then
""
Expand Down Expand Up @@ -279,7 +285,10 @@ rec {

# Generates JSON from an arbitrary (non-function) value.
# For more information see the documentation of the builtin.
toJSON = { }: builtins.toJSON;
toJSON =
{
}:
builtins.toJSON;

# YAML has been a strict superset of JSON since 1.2, so we
# use toJSON. Before it only had a few differences referring
Expand Down Expand Up @@ -465,7 +474,8 @@ rec {

# PLIST handling
toPlist =
{ }:
{
}:
v:
let
isFloat = builtins.isFloat or (x: false);
Expand Down Expand Up @@ -546,7 +556,8 @@ rec {
# Note that integers are translated to Integer and never
# the Natural type.
toDhall =
{ }@args:
{
}@args:
v:
with builtins;
let
Expand Down
7 changes: 6 additions & 1 deletion test/diff/key_value/out.nix
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,12 @@ rec {
c = 2;
};
n = pkgs: { };
o = { pkgs, ... }: { };
o =
{
pkgs,
...
}:
{ };

a
# b
Expand Down
11 changes: 9 additions & 2 deletions test/diff/lambda/out.nix
Original file line number Diff line number Diff line change
Expand Up @@ -81,15 +81,22 @@ in

(
a:
{ b, ... }:
{
b,
...
}:
c: {
# Stuff
}
)

(
a:
{ b, c, ... }:
{
b,
c,
...
}:
d: {
# Stuff
}
Expand Down

0 comments on commit 158663d

Please sign in to comment.