error when pattern matching on props
coot opened this issue · 2 comments
coot commented
Consider a react class:
data Message
= Hello
| Bye
instance showMessage :: Show Message where
show Hello = "Hello :)"
show Bye = "Bye!"
cls :: ReactClass Message
cls = createClass (spec unit renderFn)
where
renderFn this = do
msg <- getProps this
pure $ div' [ text (show msg) ]
When rendering it PureScript will fail to pattern match on Hello and Bye and will error.
index.js:34228 Uncaught Error: Failed pattern match at Main line 24, column 1 - line 24, column 37: Object
coot commented
There are two possible workarounds for this:
- ask the user to wrap the type inside a record.
- we do that for him for props the same way it is done for
statealready
I prefer the second choice as it will support all the language features out of the box, but this adds some runtime overhead (creating the wrapper objects & gc them after they become unreferenced).
