[commit: ghc] master: Give a better error message for unterminated quasiquotations (fixes #5204). (20548c9)
Simon Peyton Jones
simonpj at microsoft.com
Thu Sep 29 18:23:17 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/ghc
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/20548c92fb307fc012956c66efa9164843d921c7
>---------------------------------------------------------------
commit 20548c92fb307fc012956c66efa9164843d921c7
Author: Geoffrey Mainland <gmainlan at microsoft.com>
Date: Thu Sep 29 12:31:49 2011 +0100
Give a better error message for unterminated quasiquotations (fixes #5204).
>---------------------------------------------------------------
compiler/parser/Lexer.x | 15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/compiler/parser/Lexer.x b/compiler/parser/Lexer.x
index ec11cd5..ea575fe 100644
--- a/compiler/parser/Lexer.x
+++ b/compiler/parser/Lexer.x
@@ -1418,18 +1418,18 @@ lex_quasiquote_tok span buf len = do
-- 'tail' drops the initial '[',
-- while the -1 drops the trailing '|'
quoteStart <- getSrcLoc
- quote <- lex_quasiquote ""
+ quote <- lex_quasiquote quoteStart ""
end <- getSrcLoc
return (L (mkRealSrcSpan (realSrcSpanStart span) end)
(ITquasiQuote (mkFastString quoter,
mkFastString (reverse quote),
mkRealSrcSpan quoteStart end)))
-lex_quasiquote :: String -> P String
-lex_quasiquote s = do
+lex_quasiquote :: RealSrcLoc -> String -> P String
+lex_quasiquote start s = do
i <- getInput
case alexGetChar' i of
- Nothing -> lit_error i
+ Nothing -> quasiquote_error start
-- NB: The string "|]" terminates the quasiquote,
-- with absolutely no escaping. See the extensive
@@ -1440,7 +1440,12 @@ lex_quasiquote s = do
-> do { setInput i; return s }
Just (c, i) -> do
- setInput i; lex_quasiquote (c : s)
+ setInput i; lex_quasiquote start (c : s)
+
+quasiquote_error :: RealSrcLoc -> P a
+quasiquote_error start = do
+ (AI end buf) <- getInput
+ reportLexError start end buf "unterminated quasiquotation"
-- -----------------------------------------------------------------------------
-- Warnings
More information about the Cvs-ghc
mailing list