X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FbasicTypes%2FSrcLoc.lhs;h=2dc6c48415c17a7d54eb8cd8c540ea2b5da3bb0a;hb=3e83dfb21b2f2220dce97427fff5c19459ae68d1;hp=51d4318b0be60e8c785d8a28b959b04e4c7a62f3;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1;p=ghc-hetmet.git diff --git a/compiler/basicTypes/SrcLoc.lhs b/compiler/basicTypes/SrcLoc.lhs index 51d4318..2dc6c48 100644 --- a/compiler/basicTypes/SrcLoc.lhs +++ b/compiler/basicTypes/SrcLoc.lhs @@ -26,16 +26,17 @@ module SrcLoc ( pprDefnLoc, SrcSpan, -- Abstract - noSrcSpan, + noSrcSpan, mkGeneralSrcSpan, - isGoodSrcSpan, + isGoodSrcSpan, isOneLineSpan, mkSrcSpan, srcLocSpan, combineSrcSpans, - srcSpanFile, - srcSpanStartLine, srcSpanEndLine, - srcSpanStartCol, srcSpanEndCol, srcSpanStart, srcSpanEnd, + -- These are dubious exports, because they crash on some inputs, + -- used only in Lexer.x where we are sure what the Span looks like + srcSpanFile, srcSpanEndLine, srcSpanEndCol, + Located(..), getLoc, unLoc, noLoc, eqLocated, cmpLocated, combineLocs, addCLoc ) where @@ -156,7 +157,7 @@ instance Outputable SrcLoc where hcat [text "{-# LINE ", int src_line, space, char '\"', ftext src_path, text " #-}"] - ppr (ImportedLoc mod) = ptext SLIT("Imported from") <+> text mod + ppr (ImportedLoc mod) = ptext SLIT("Defined in") <+> text mod ppr (UnhelpfulLoc s) = ftext s \end{code} @@ -222,6 +223,19 @@ isGoodSrcSpan SrcSpanMultiLine{} = True isGoodSrcSpan SrcSpanPoint{} = True isGoodSrcSpan _ = False +isOneLineSpan :: SrcSpan -> Bool +-- True if the span is known to straddle more than one line +-- By default, it returns False +isOneLineSpan s + | isGoodSrcSpan s = srcSpanStartLine s == srcSpanEndLine s + | otherwise = False + +-------------------------------------------------------- +-- Don't export these four; +-- they panic on Imported, Unhelpful. +-- They are for internal use only +-- Urk! Some are needed for Lexer.x; see comment in export list + srcSpanStartLine SrcSpanOneLine{ srcSpanLine=l } = l srcSpanStartLine SrcSpanMultiLine{ srcSpanSLine=l } = l srcSpanStartLine SrcSpanPoint{ srcSpanLine=l } = l @@ -241,13 +255,13 @@ srcSpanEndCol SrcSpanOneLine{ srcSpanECol=c } = c srcSpanEndCol SrcSpanMultiLine{ srcSpanECol=c } = c srcSpanEndCol SrcSpanPoint{ srcSpanCol=c } = c srcSpanEndCol _ = panic "SrcLoc.srcSpanEndCol" +-------------------------------------------------------- srcSpanStart (ImportedSpan str) = ImportedLoc str srcSpanStart (UnhelpfulSpan str) = UnhelpfulLoc str -srcSpanStart s = - mkSrcLoc (srcSpanFile s) - (srcSpanStartLine s) - (srcSpanStartCol s) +srcSpanStart s = mkSrcLoc (srcSpanFile s) + (srcSpanStartLine s) + (srcSpanStartCol s) srcSpanEnd (ImportedSpan str) = ImportedLoc str srcSpanEnd (UnhelpfulSpan str) = UnhelpfulLoc str @@ -340,7 +354,7 @@ pprUserSpan (SrcSpanPoint src_path line col) char ':', int col ] -pprUserSpan (ImportedSpan mod) = ptext SLIT("Imported from") <+> quotes (text mod) +pprUserSpan (ImportedSpan mod) = ptext SLIT("Defined in") <+> text mod pprUserSpan (UnhelpfulSpan s) = ftext s \end{code}