From: Ian Lynagh Date: Sun, 29 Nov 2009 14:58:40 +0000 (+0000) Subject: Make the alternative layout rule cope with file pragmas X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=d8b99b7e9b2ce9fd8ba97fa10657082ceac09c59;hp=f9460db84b4eb145d1356435127cce0a1a775c70 Make the alternative layout rule cope with file pragmas --- diff --git a/compiler/parser/Lexer.x b/compiler/parser/Lexer.x index dca51e4..43ddf7c 100644 --- a/compiler/parser/Lexer.x +++ b/compiler/parser/Lexer.x @@ -1144,6 +1144,7 @@ setLine code span buf len = do setFile :: Int -> Action setFile code span buf len = do let file = lexemeToFastString (stepOn buf) (len-2) + setAlrLastLoc noSrcSpan setSrcLoc (mkSrcLoc file (srcSpanEndLine span) (srcSpanEndCol span)) _ <- popLexState pushLexState code @@ -1981,7 +1982,8 @@ alternativeLayoutRuleToken t mExpectingOCurly <- getAlrExpectingOCurly let thisLoc = getLoc t thisCol = srcSpanStartCol thisLoc - newLine = srcSpanStartLine thisLoc > srcSpanEndLine lastLoc + newLine = (lastLoc == noSrcSpan) + || (srcSpanStartLine thisLoc > srcSpanEndLine lastLoc) case (unLoc t, context, mExpectingOCurly) of -- I think our implicit open-curly handling is slightly -- different to John's, in how it interacts with newlines