Skip to content

Commit 3c357d9

Browse files
committed
Merge pull request purescript#1603 from purescript/fieldpuns
Field puns, fix purescript#921
2 parents dc54faf + 5cc3031 commit 3c357d9

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

examples/passing/FieldPuns.purs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -517,11 +517,13 @@ parseNullBinder :: TokenParser Binder
517517
parseNullBinder = underscore *> return NullBinder
518518

519519
parseIdentifierAndBinder :: 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

0 commit comments

Comments
 (0)