From 4848681cf1e5cae5ca65f593bfcc1e47b81c59d6 Mon Sep 17 00:00:00 2001
From: simonpj <unknown>
Date: Thu, 6 May 2004 12:29:50 +0000
Subject: [PATCH] [project @ 2004-05-06 12:29:50 by simonpj] Make addSrcSpan
 ignore unhelpful spans

---
 ghc/compiler/typecheck/TcRnMonad.lhs | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/ghc/compiler/typecheck/TcRnMonad.lhs b/ghc/compiler/typecheck/TcRnMonad.lhs
index fe410c6cbe15..35f916902b11 100644
--- a/ghc/compiler/typecheck/TcRnMonad.lhs
+++ b/ghc/compiler/typecheck/TcRnMonad.lhs
@@ -29,7 +29,7 @@ import VarEnv		( TidyEnv, emptyTidyEnv )
 import ErrUtils		( Message, Messages, emptyMessages, errorsFound, 
 			  mkErrMsg, mkWarnMsg, printErrorsAndWarnings,
 			  mkLocMessage, mkLongErrMsg )
-import SrcLoc		( mkGeneralSrcSpan, SrcSpan, Located(..) )
+import SrcLoc		( mkGeneralSrcSpan, isGoodSrcSpan, SrcSpan, Located(..) )
 import NameEnv		( emptyNameEnv )
 import NameSet		( emptyDUs, emptyNameSet )
 import OccName		( emptyOccEnv )
@@ -99,7 +99,7 @@ initTc hsc_env mod do_this
 	     } ;
 	     lcl_env = TcLclEnv {
 		tcl_errs       = errs_var,
-		tcl_loc	       = mkGeneralSrcSpan FSLIT("Top level of module"),
+		tcl_loc	       = mkGeneralSrcSpan FSLIT("Top level"),
 		tcl_ctxt       = [],
 		tcl_rdr	       = emptyLocalRdrEnv,
 		tcl_th_ctxt    = topStage,
@@ -374,7 +374,9 @@ getSrcSpanM :: TcRn SrcSpan
 getSrcSpanM = do { env <- getLclEnv; return (tcl_loc env) }
 
 addSrcSpan :: SrcSpan -> TcRn a -> TcRn a
-addSrcSpan loc = updLclEnv (\env -> env { tcl_loc = loc })
+addSrcSpan loc thing_inside
+  | isGoodSrcSpan loc = updLclEnv (\env -> env { tcl_loc = loc }) thing_inside
+  | otherwise	      = thing_inside	-- Don't overwrite useful info with useless
 
 addLocM :: (a -> TcM b) -> Located a -> TcM b
 addLocM fn (L loc a) = addSrcSpan loc $ fn a
-- 
GitLab