@@ -20,6 +20,7 @@ import Language.PureScript.Declarations
20import Language.PureScript.Names
20import Language.PureScript.Names
21import Language.PureScript.Types
21import Language.PureScript.Types
22import Language.PureScript.Values
22import Language.PureScript.Values
23+import Language.PureScript.CodeGen.JS.AST
24desugarTypeClasses :: [Module] -> [Module]
25desugarTypeClasses :: [Module] -> [Module]
25desugarTypeClasses = map desugarModule
26desugarTypeClasses = map desugarModule
@@ -40,7 +41,10 @@ typeClassDictionaryDeclaration name arg members = TypeSynonymDeclaration name [a
40 memberToNameAndType _ = error "Invalid declaration in type class definition"
41 memberToNameAndType _ = error "Invalid declaration in type class definition"
42typeClassMemberToDictionaryAccessor :: ProperName -> String -> Declaration -> Declaration
43typeClassMemberToDictionaryAccessor :: ProperName -> String -> Declaration -> Declaration
43−typeClassMemberToDictionaryAccessor name arg (TypeDeclaration ident ty) = ExternDeclaration ident Nothing (ForAll arg (ConstrainedType [(Qualified Nothing name, TypeVar arg)] ty))
44+typeClassMemberToDictionaryAccessor name arg (TypeDeclaration ident ty) =
45+ ExternDeclaration ident
46+ (Just (JSFunction (Just (Ident arg)) [Ident "dict"] (JSReturn (JSAccessor arg (JSVar (Ident "dict"))))))
47+ (ForAll arg (ConstrainedType [(Qualified Nothing name, TypeVar arg)] ty))
44typeClassMemberToDictionaryAccessor _ _ _ = error "Invalid declaration in type class definition"
48typeClassMemberToDictionaryAccessor _ _ _ = error "Invalid declaration in type class definition"