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 CPP #-}
|
||||||
|
{-# LANGUAGE LambdaCase #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
|
|
||||||
|
@ -837,22 +838,20 @@ prettyCharacterSet characterSet expression =
|
||||||
prettyApplicationExpression a0
|
prettyApplicationExpression a0
|
||||||
|
|
||||||
prettyApplicationExpression :: Pretty a => Expr Src a -> Doc Ann
|
prettyApplicationExpression :: Pretty a => Expr Src a -> Doc Ann
|
||||||
prettyApplicationExpression a0 = case a0 of
|
prettyApplicationExpression = \case
|
||||||
App {} -> result
|
App a b -> f (prettyApplicationExpression a) [b]
|
||||||
Some {} -> result
|
Some a -> f (builtin "Some") [a]
|
||||||
ToMap {} -> result
|
ToMap a Nothing -> f (keyword "toMap") [a]
|
||||||
Merge {} -> result
|
Merge a b Nothing -> f (keyword "merge") [a, b]
|
||||||
Note _ b -> prettyApplicationExpression b
|
Note _ b -> prettyApplicationExpression b
|
||||||
_ -> prettyImportExpression a0
|
e -> prettyImportExpression e
|
||||||
where
|
where
|
||||||
result = enclose' "" "" " " "" (reverse (docs a0))
|
f a bs =
|
||||||
|
enclose'
|
||||||
docs (App a b) = ( prettyImportExpression b, Pretty.indent 2 (prettyImportExpression b) ) : docs a
|
"" "" " " ""
|
||||||
docs (Some a) = map duplicate [ prettyImportExpression a , builtin "Some" ]
|
( duplicate a
|
||||||
docs (ToMap a Nothing) = map duplicate [ prettyImportExpression a, keyword "toMap" ]
|
: map (fmap (Pretty.indent 2) . duplicate . prettyImportExpression) bs
|
||||||
docs (Merge a b Nothing) = map duplicate [ prettyImportExpression b, prettyImportExpression a, keyword "merge" ]
|
)
|
||||||
docs (Note _ b) = docs b
|
|
||||||
docs b = map duplicate [ prettyImportExpression b ]
|
|
||||||
|
|
||||||
prettyImportExpression :: Pretty a => Expr Src a -> Doc Ann
|
prettyImportExpression :: Pretty a => Expr Src a -> Doc Ann
|
||||||
prettyImportExpression (Embed a) =
|
prettyImportExpression (Embed a) =
|
||||||
|
|
|
@ -61,6 +61,10 @@ formatTest characterSet prefix =
|
||||||
expectedText <- Text.IO.readFile outputFile
|
expectedText <- Text.IO.readFile outputFile
|
||||||
|
|
||||||
let message =
|
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
|
, dark_room = Some False
|
||||||
, disclose =
|
, disclose =
|
||||||
Some
|
Some
|
||||||
( defaults.Disclose
|
( defaults.Disclose
|
||||||
⫽ { inventory = Some { prompt = True, default = True }
|
⫽ { inventory = Some { prompt = True, default = True }
|
||||||
, attributes = Some { prompt = True, default = False }
|
, attributes = Some { prompt = True, default = False }
|
||||||
, monsters_killed = Some { prompt = False, default = True }
|
, monsters_killed = Some { prompt = False, default = True }
|
||||||
, monsters_genocided = Some { prompt = False, default = False }
|
, monsters_genocided = Some { prompt = False, default = False }
|
||||||
, conduct = Some { prompt = False, default = False }
|
, conduct = Some { prompt = False, default = False }
|
||||||
, dungeon_overview = Some { prompt = False, default = False }
|
, dungeon_overview = Some { prompt = False, default = False }
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
, dogname = Some "Cujo"
|
, dogname = Some "Cujo"
|
||||||
, extmenu = Some False
|
, extmenu = Some False
|
||||||
, fixinv = Some True
|
, fixinv = Some True
|
||||||
|
|
Loading…
Reference in New Issue
Block a user