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 294ed7e commit 740d957
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 20 deletions.
25 changes: 14 additions & 11 deletions src/Nixfmt/Pretty.hs
Original file line number Diff line number Diff line change
Expand Up @@ -358,10 +358,10 @@ instance Pretty Parameter where
-- param:
pretty (IDParameter i) = pretty i
-- {}:
pretty (SetParameter bopen [] bclose) =
group $ pretty (moveTrailingCommentUp bopen) <> hardspace <> pretty bclose
pretty (SetParameter bopen@Ann{sourceLine = openLine} [] bclose@Ann{sourceLine = closeLine}) =
group $ pretty (moveTrailingCommentUp bopen) <> (if openLine /= closeLine then hardline else hardspace) <> pretty bclose
-- { stuff }:
pretty (SetParameter bopen attrs bclose) =
pretty (SetParameter bopen@Ann{sourceLine = openLine} attrs bclose@Ann{sourceLine = closeLine}) =
group $
pretty (moveTrailingCommentUp bopen)
<> surroundWith sep (nest $ sepBy sep $ handleTrailingComma $ map moveParamAttrComment $ moveParamsComments attrs)
Expand All @@ -376,14 +376,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 openLine /= closeLine
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 740d957

Please sign in to comment.