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

Field puns, fix #921

commit3c357d9349be571b9eb3510ee7dbbffe23218e69 authorPhil Freeman <paf31@cantab.net> dateTue 3 Nov 2015, 12:02 (11 years ago) parentdc54faf5cc3031
2 files changed+15−5
examples/passing/FieldPuns.purs+8 src/Language/PureScript/Parser/Declarations.hs+7−5
examples/passing/FieldPuns.pursnew file+8
@@ -0,0 +1,8 @@
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: "Hello", name: "World" }
src/Language/PureScript/Parser/Declarations.hs+7−5
@@ -517,11 +517,13 @@ parseNullBinder :: TokenParser Binder
517517parseNullBinder = underscore *> return NullBinder
518518
519519parseIdentifierAndBinder :: TokenParser (String, Binder)
520−parseIdentifierAndBinder = do
521− name <- lname <|> stringLiteral
522− C.indented *> (equals <|> colon)
523− binder <- C.indented *> parseBinder
524− return (name, binder)
520+parseIdentifierAndBinder =
521+ do name <- lname
522+ b <- P.option (VarBinder (Ident name)) rest
523+ return (name, b)
524+ <|> (,) <$> stringLiteral <*> rest
525+ where
526+ rest = C.indented *> (equals <|> colon) *> C.indented *> parseBinder
525527
526528-- |
527529-- Parse a binder