git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Support exports using square brackets in FFI modules under psc-bundle
1454a9fPhil Freeman
psc-bundle/Main.hs+13−3
@@ -242,12 +242,22 @@ toModule mids mid top
242 = pure (Member n False name decl [])
242 = pure (Member n False name decl [])
243 toModuleElement n
243 toModuleElement n
244 | JSExpression (e : op : decl) <- node n
244 | JSExpression (e : op : decl) <- node n
245− , JSMemberDot [ exports ] _ nm <- node e
245+ , Just name <- accessor (node e)
246− , JSIdentifier "exports" <- node exports
247 , JSOperator eq <- node op
246 , JSOperator eq <- node op
248 , JSLiteral "=" <- node eq
247 , JSLiteral "=" <- node eq
249− , JSIdentifier name <- node nm
250 = pure (Member n True name decl [])
248 = pure (Member n True name decl [])
249+ where
250+ accessor :: Node -> Maybe String
251+ accessor (JSMemberDot [ exports ] _ nm)
252+ | JSIdentifier "exports" <- node exports
253+ , JSIdentifier name <- node nm
254+ = Just name
255+ accessor (JSMemberSquare [ exports ] _ nm _)
256+ | JSIdentifier "exports" <- node exports
257+ , JSExpression [e] <- node nm
258+ , JSStringLiteral _ name <- node e
259+ = Just name
260+ accessor _ = Nothing
251 toModuleElement n
261 toModuleElement n
252 | JSExpression (mnExp : op : obj: _) <- node n
262 | JSExpression (mnExp : op : obj: _) <- node n
253 , JSMemberDot [ mn ] _ e <- node mnExp
263 , JSMemberDot [ mn ] _ e <- node mnExp