git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Merge pull request #1618 from balajirrao/master

Record constructor field puns, fix #921

commite480f5dd3881df9810f1c52078ad81a4f5cad5ad authorPhil Freeman <paf31@cantab.net> dateTue 10 Nov 2015, 09:52 (11 years ago) parentf1c330feae6a4d
2 files changed+17−2
examples/passing/FieldConsPuns.purs+10 src/Language/PureScript/Parser/Declarations.hs+7−2
examples/passing/FieldConsPuns.pursnew file+10
@@ -0,0 +1,10 @@
1+module Main where
2+
3+import Prelude
4+import Control.Monad.Eff.Console
5+
6+greet { greeting, name } = log $ greeting <> ", " <> name <> "."
7+
8+main = greet { greeting, name} where
9+ greeting = "Hello"
10+ name = "World"
src/Language/PureScript/Parser/Declarations.hs+7−2
@@ -334,9 +334,14 @@ parseObjectLiteral :: TokenParser Expr
334334parseObjectLiteral = ObjectConstructor <$> braces (commaSep parseIdentifierAndValue)
335335
336336parseIdentifierAndValue :: TokenParser (String, Maybe Expr)
337−parseIdentifierAndValue = (,) <$> (C.indented *> (lname <|> stringLiteral) <* C.indented <* colon)
338− <*> (C.indented *> val)
337+parseIdentifierAndValue =
338+ do
339+ name <- C.indented *> lname
340+ b <- P.option (Just $ Var $ Qualified Nothing (Ident name)) rest
341+ return (name, b)
342+ <|> (,) <$> (C.indented *> stringLiteral) <*> rest
339343 where
344+ rest = C.indented *> colon *> C.indented *> val
340345 val = (Just <$> parseValue) <|> (underscore *> pure Nothing)
341346
342347parseAbs :: TokenParser Expr