on master help sign in
Merge pull request #408 from timthelion/parserQuoteFix

Fix bug in parser

commit7def8158c1c9b89aa57a487b8d5e0f600642d7df authorEvan Czaplicki <info@elm-lang.org> dateSat 21 Dec 2013, 22:37 (13 years ago) parent384f86fcbbd42d
3 files changed+19−7
compiler/Parse/Helpers.hs+5−1 compiler/Parse/Literal.hs+2−6 tests/good/QuotesAndComments.elm+12
compiler/Parse/Helpers.hs+5−1
@@ -274,7 +274,7 @@ ignoreUntil :: IParser a -> IParser (Maybe a)
274274ignoreUntil end = go
275275 where
276276 ignore p = const () <$> p
277− filler = choice [ ignore str
277+ filler = choice [ try (ignore chr) <|> ignore str
278278 , ignore multiComment
279279 , ignore (markdown (\_ _ -> mzero))
280280 , ignore anyChar
@@ -337,3 +337,7 @@ str = choice [ quote >> dewindows <$> manyTill (backslashed <|> anyChar) quote
337337 ('\n':rest) -> '\n' : dewindows rest
338338 ('\r':rest) -> '\n' : dewindows rest
339339 _ -> []
340+
341+chr :: IParser Char
342+chr = betwixt '\'' '\'' (backslashed <|> satisfy (/='\''))
343+ <?> "character"
compiler/Parse/Literal.hs+2−6
@@ -8,7 +8,7 @@ import Text.Parsec.Indent
88import Parse.Helpers
99import SourceSyntax.Literal
1010
11−literal = num <|> (Str <$> str) <|> chr
11+literal = num <|> (Str <$> str) <|> (Chr <$> chr)
1212
1313num :: IParser Literal
1414num = fmap toLit (preNum <?> "number")
@@ -20,8 +20,4 @@ num = fmap toLit (preNum <?> "number")
2020 ('.':) <$> many1 digit
2121 minus = try $ do string "-"
2222 lookAhead digit
23− return "-"
24−
25−chr :: IParser Literal
26−chr = Chr <$> betwixt '\'' '\'' (backslashed <|> satisfy (/='\''))
27− <?> "character"
23+ return "-"
tests/good/QuotesAndComments.elmnew file+12
@@ -0,0 +1,12 @@
1+f x =
2+ let
3+ x' = x+1
4+ in
5+ x'
6+
7+g = '\"'
8+
9+n = '\''
10+
11+{- this is an {- embeded comment -} -}
12+main = plainText "{-"