summaryrefslogtreecommitdiff
path: root/ghc/compiler/parser/Lexer.x
diff options
context:
space:
mode:
Diffstat (limited to 'ghc/compiler/parser/Lexer.x')
-rw-r--r--ghc/compiler/parser/Lexer.x6
1 files changed, 4 insertions, 2 deletions
diff --git a/ghc/compiler/parser/Lexer.x b/ghc/compiler/parser/Lexer.x
index 0f2e23e42f..316cb10e33 100644
--- a/ghc/compiler/parser/Lexer.x
+++ b/ghc/compiler/parser/Lexer.x
@@ -198,7 +198,7 @@ $white_no_nl+ ;
"[|" { token ITopenExpQuote }
"[e|" { token ITopenExpQuote }
"[p|" { token ITopenPatQuote }
- "[d|" { token ITopenDecQuote }
+ "[d|" { layout_token ITopenDecQuote }
"[t|" { token ITopenTypQuote }
"|]" { token ITcloseQuote }
}
@@ -561,8 +561,9 @@ type Action = SrcLoc -> SrcLoc -> StringBuffer -> Int -> P Token
special :: Token__ -> Action
special tok loc end _buf len = return (T loc end tok)
-token :: Token__ -> Action
+token, layout_token :: Token__ -> Action
token t loc end buf len = return (T loc end t)
+layout_token t loc end buf len = pushLexState layout >> return (T loc end t)
idtoken :: (StringBuffer -> Int -> Token__) -> Action
idtoken f loc end buf len = return (T loc end $! (f buf len))
@@ -770,6 +771,7 @@ maybe_layout ITmdo = pushLexState layout_do
maybe_layout ITof = pushLexState layout
maybe_layout ITlet = pushLexState layout
maybe_layout ITwhere = pushLexState layout
+maybe_layout ITrec = pushLexState layout
maybe_layout _ = return ()
-- Pushing a new implicit layout context. If the indentation of the