git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Record constructor field puns, fix #921
commiteae6a4d1fd9aa91e8c686071f2667e1daa3eb8a7 authorBalaji R. Rao <balajirrao@gmail.com> dateMon 9 Nov 2015, 00:44 (11 years ago) parentfd682fa
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