Fix indentation for multiline Some-, toMap- and merge-expressions (#1377)
The loss of indentation for toMap and merge was due to
75e6cc5ca7
. I have included Some for
consistency.
Fixes #1376.
Also improve format test failure messages
This commit is contained in:
parent
6bc182a08a
commit
7634ee740b
|
@ -1,4 +1,5 @@
|
|||
{-# LANGUAGE CPP #-}
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE RecordWildCards #-}
|
||||
|
||||
|
@ -837,22 +838,20 @@ prettyCharacterSet characterSet expression =
|
|||
prettyApplicationExpression a0
|
||||
|
||||
prettyApplicationExpression :: Pretty a => Expr Src a -> Doc Ann
|
||||
prettyApplicationExpression a0 = case a0 of
|
||||
App {} -> result
|
||||
Some {} -> result
|
||||
ToMap {} -> result
|
||||
Merge {} -> result
|
||||
Note _ b -> prettyApplicationExpression b
|
||||
_ -> prettyImportExpression a0
|
||||
prettyApplicationExpression = \case
|
||||
App a b -> f (prettyApplicationExpression a) [b]
|
||||
Some a -> f (builtin "Some") [a]
|
||||
ToMap a Nothing -> f (keyword "toMap") [a]
|
||||
Merge a b Nothing -> f (keyword "merge") [a, b]
|
||||
Note _ b -> prettyApplicationExpression b
|
||||
e -> prettyImportExpression e
|
||||
where
|
||||
result = enclose' "" "" " " "" (reverse (docs a0))
|
||||
|
||||
docs (App a b) = ( prettyImportExpression b, Pretty.indent 2 (prettyImportExpression b) ) : docs a
|
||||
docs (Some a) = map duplicate [ prettyImportExpression a , builtin "Some" ]
|
||||
docs (ToMap a Nothing) = map duplicate [ prettyImportExpression a, keyword "toMap" ]
|
||||
docs (Merge a b Nothing) = map duplicate [ prettyImportExpression b, prettyImportExpression a, keyword "merge" ]
|
||||
docs (Note _ b) = docs b
|
||||
docs b = map duplicate [ prettyImportExpression b ]
|
||||
f a bs =
|
||||
enclose'
|
||||
"" "" " " ""
|
||||
( duplicate a
|
||||
: map (fmap (Pretty.indent 2) . duplicate . prettyImportExpression) bs
|
||||
)
|
||||
|
||||
prettyImportExpression :: Pretty a => Expr Src a -> Doc Ann
|
||||
prettyImportExpression (Embed a) =
|
||||
|
|
|
@ -61,6 +61,10 @@ formatTest characterSet prefix =
|
|||
expectedText <- Text.IO.readFile outputFile
|
||||
|
||||
let message =
|
||||
"The formatted expression did not match the expected output"
|
||||
"The formatted expression did not match the expected output\n"
|
||||
<> "Expected:\n\n" <> Text.unpack expectedText <> "\n\n"
|
||||
<> "Actual:\n\n" <> Text.unpack actualText <> "\n\n"
|
||||
<> "Expected (show): " <> show expectedText <> "\n"
|
||||
<> "Actual (show): " <> show actualText <> "\n"
|
||||
|
||||
Tasty.HUnit.assertEqual message expectedText actualText
|
||||
Tasty.HUnit.assertBool message (actualText == expectedText)
|
||||
|
|
5
dhall/tests/format/applicationMultilineA.dhall
Normal file
5
dhall/tests/format/applicationMultilineA.dhall
Normal file
|
@ -0,0 +1,5 @@
|
|||
{ app = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff aaaaaaaaaaaaaaaaa
|
||||
, some = Some aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
, merge = merge aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
|
||||
, toMap = toMap aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
}
|
14
dhall/tests/format/applicationMultilineB.dhall
Normal file
14
dhall/tests/format/applicationMultilineB.dhall
Normal file
|
@ -0,0 +1,14 @@
|
|||
{ app =
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
aaaaaaaaaaaaaaaaa
|
||||
, some =
|
||||
Some
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
, merge =
|
||||
merge
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
|
||||
, toMap =
|
||||
toMap
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
}
|
|
@ -34,15 +34,15 @@ in defaults.Config
|
|||
, dark_room = Some False
|
||||
, disclose =
|
||||
Some
|
||||
( defaults.Disclose
|
||||
⫽ { inventory = Some { prompt = True, default = True }
|
||||
, attributes = Some { prompt = True, default = False }
|
||||
, monsters_killed = Some { prompt = False, default = True }
|
||||
, monsters_genocided = Some { prompt = False, default = False }
|
||||
, conduct = Some { prompt = False, default = False }
|
||||
, dungeon_overview = Some { prompt = False, default = False }
|
||||
}
|
||||
)
|
||||
( defaults.Disclose
|
||||
⫽ { inventory = Some { prompt = True, default = True }
|
||||
, attributes = Some { prompt = True, default = False }
|
||||
, monsters_killed = Some { prompt = False, default = True }
|
||||
, monsters_genocided = Some { prompt = False, default = False }
|
||||
, conduct = Some { prompt = False, default = False }
|
||||
, dungeon_overview = Some { prompt = False, default = False }
|
||||
}
|
||||
)
|
||||
, dogname = Some "Cujo"
|
||||
, extmenu = Some False
|
||||
, fixinv = Some True
|
||||
|
|
Loading…
Reference in New Issue
Block a user