Balance assertion errors now show line of failed assertion posting. Fixes #481.
This commit is contained in:
		
							parent
							
								
									e33cce52bc
								
							
						
					
					
						commit
						11684843a0
					
				@ -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
 | 
				
			||||||
 | 
				
			|||||||
@ -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 ++ ")"
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user