Balance assertion errors now show line of failed assertion posting. Fixes #481.

This commit is contained in:
Sam Jeeves 2017-10-14 22:10:57 +02:00 committed by Simon Michael
parent e33cce52bc
commit 11684843a0
2 changed files with 8 additions and 1 deletions

View File

@ -535,7 +535,9 @@ checkBalanceAssertion p@Posting{ pbalanceassertion = Just ass} amt
(case ptransaction p of (case ptransaction p of
Nothing -> ":" -- shouldn't happen Nothing -> ":" -- shouldn't happen
Just t -> printf " in %s:\nin transaction:\n%s" Just t -> printf " in %s:\nin transaction:\n%s"
(showGenericSourcePos $ tsourcepos t) (chomp $ show t) :: String) (showGenericSourcePos postingPos) (chomp $ show t) :: String
where postingLine = fromJust $ elemIndex p $ tpostings t -- assume postings are in order
postingPos = increaseSourceLine (1+postingLine) (tsourcepos t))
(showPostingLine p) (showPostingLine p)
(showDate $ postingDate p) (showDate $ postingDate p)
(T.unpack $ paccount p) -- XXX pack (T.unpack $ paccount p) -- XXX pack

View File

@ -42,6 +42,7 @@ module Hledger.Data.Transaction (
sourceFilePath, sourceFilePath,
sourceFirstLine, sourceFirstLine,
showGenericSourcePos, showGenericSourcePos,
increaseSourceLine,
-- * misc. -- * misc.
tests_Hledger_Data_Transaction tests_Hledger_Data_Transaction
) )
@ -81,6 +82,10 @@ sourceFirstLine = \case
GenericSourcePos _ line _ -> line GenericSourcePos _ line _ -> line
JournalSourcePos _ (line, _) -> line JournalSourcePos _ (line, _) -> line
increaseSourceLine :: Int -> GenericSourcePos -> GenericSourcePos
increaseSourceLine val (GenericSourcePos fp line col) = GenericSourcePos fp (line+val) col
increaseSourceLine val (JournalSourcePos fp (first, _)) = GenericSourcePos fp (first+val) 0
showGenericSourcePos :: GenericSourcePos -> String showGenericSourcePos :: GenericSourcePos -> String
showGenericSourcePos = \case showGenericSourcePos = \case
GenericSourcePos fp line column -> show fp ++ " (line " ++ show line ++ ", column " ++ show column ++ ")" GenericSourcePos fp line column -> show fp ++ " (line " ++ show line ++ ", column " ++ show column ++ ")"