projects
/
ghc-hetmet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
1e70cb6
)
Add another GHC layout rule relaxation to RelaxedLayout
author
Ian Lynagh
<igloo@earth.li>
Wed, 24 Nov 2010 20:59:57 +0000
(20:59 +0000)
committer
Ian Lynagh
<igloo@earth.li>
Wed, 24 Nov 2010 20:59:57 +0000
(20:59 +0000)
compiler/parser/Lexer.x
patch
|
blob
|
history
diff --git
a/compiler/parser/Lexer.x
b/compiler/parser/Lexer.x
index
e52880b
..
823fc6d
100644
(file)
--- a/
compiler/parser/Lexer.x
+++ b/
compiler/parser/Lexer.x
@@
-211,7
+211,7
@@
$tab+ { warn Opt_WarnTabs (text "Warning: Tab character") }
-- context if the curly brace is missing.
-- Careful! This stuff is quite delicate.
<layout, layout_do> {
-- context if the curly brace is missing.
-- Careful! This stuff is quite delicate.
<layout, layout_do> {
- \{ / { notFollowedBy '-' } { pop_and open_brace }
+ \{ / { notFollowedBy '-' } { hopefully_open_brace }
-- we might encounter {-# here, but {- has been handled already
\n ;
^\# (line)? { begin line_prag1 }
-- we might encounter {-# here, but {- has been handled already
\n ;
^\# (line)? { begin line_prag1 }
@@
-757,6
+757,19
@@
pop :: Action
pop _span _buf _len = do _ <- popLexState
lexToken
pop _span _buf _len = do _ <- popLexState
lexToken
+hopefully_open_brace :: Action
+hopefully_open_brace span buf len
+ = do relaxed <- extension relaxedLayout
+ ctx <- getContext
+ (AI l _) <- getInput
+ let offset = srcLocCol l
+ isOK = relaxed ||
+ case ctx of
+ Layout prev_off : _ -> prev_off < offset
+ _ -> True
+ if isOK then pop_and open_brace span buf len
+ else failSpanMsgP span (text "Missing block")
+
pop_and :: Action -> Action
pop_and act span buf len = do _ <- popLexState
act span buf len
pop_and :: Action -> Action
pop_and act span buf len = do _ <- popLexState
act span buf len