@@ -612,13 +612,15 @@ data PDecl' t
612612 -- ^ Record declaration
613613 | PClass (Docstring (Either Err PTerm)) SyntaxInfo FC
614614 [(Name, t)] -- constraints
615− Name
615+ Name -- class name
616616 [(Name, t)] -- parameters
617617 [(Name, Docstring (Either Err PTerm))] -- parameter docstrings
618618 [Name] -- determining parameters
619619 [PDecl' t] -- declarations
620+ (Maybe Name) -- instance constructor name
621+ (Docstring (Either Err PTerm)) -- instance constructor docs
620622 -- ^ Type class: arguments are documentation, syntax info, source location, constraints,
621− -- class name, parameters, method declarations
623+ -- class name, parameters, method declarations, optional constructor name
622624 | PInstance
623625 (Docstring (Either Err PTerm)) -- Instance docs
624626 [(Name, Docstring (Either Err PTerm))] -- Parameter docs
@@ -733,7 +735,7 @@ declared (PData _ _ _ _ _ (PLaterdecl n _)) = [n]
733735declared (PParams _ _ ds) = concatMap declared ds
734736declared (PNamespace _ ds) = concatMap declared ds
735737declared (PRecord _ _ _ _ n _ _ _ cn _ _) = n : maybeToList cn
736−declared (PClass _ _ _ _ n _ _ _ ms) = n : concatMap declared ms
738+declared (PClass _ _ _ _ n _ _ _ ms cn cd) = n : (maybeToList cn ++ concatMap declared ms)
737739declared (PInstance _ _ _ _ _ _ _ _ _ _) = []
738740declared (PDSL n _) = [n]
739741declared (PSyntax _ _) = []
@@ -753,7 +755,7 @@ tldeclared (PData _ _ _ _ _ (PDatadecl n _ ts)) = n : map fstt ts
753755tldeclared (PParams _ _ ds) = []
754756tldeclared (PMutual _ ds) = concatMap tldeclared ds
755757tldeclared (PNamespace _ ds) = concatMap tldeclared ds
756−tldeclared (PClass _ _ _ _ n _ _ _ ms) = concatMap tldeclared ms
758+tldeclared (PClass _ _ _ _ n _ _ _ ms cn _) = n : (maybeToList cn ++ concatMap tldeclared ms)
757759tldeclared (PInstance _ _ _ _ _ _ _ _ _ _) = []
758760tldeclared _ = []
759761
@@ -769,7 +771,7 @@ defined (PData _ _ _ _ _ (PLaterdecl n _)) = []
769771defined (PParams _ _ ds) = concatMap defined ds
770772defined (PNamespace _ ds) = concatMap defined ds
771773defined (PRecord _ _ _ _ n _ _ _ cn _ _) = n : maybeToList cn
772−defined (PClass _ _ _ _ n _ _ _ ms) = n : concatMap defined ms
774+defined (PClass _ _ _ _ n _ _ _ ms cn _) = n : (maybeToList cn ++ concatMap defined ms)
773775defined (PInstance _ _ _ _ _ _ _ _ _ _) = []
774776defined (PDSL n _) = [n]
775777defined (PSyntax _ _) = []
@@ -1070,7 +1072,7 @@ highestFC (PQuoteName _) = Nothing
10701072
10711073-- Type class data
10721074
1073−data ClassInfo = CI { instanceName :: Name,
1075+data ClassInfo = CI { instanceCtorName :: Name,
10741076 class_methods :: [(Name, (FnOpts, PTerm))],
10751077 class_defaults :: [(Name, (Name, PDecl))], -- method name -> default impl
10761078 class_default_superclasses :: [PDecl],
@@ -1782,7 +1784,7 @@ showDeclImp o (PData _ _ _ _ _ d) = showDImp o { ppopt_impl = True } d
17821784showDeclImp o (PParams _ ns ps) = text "params" <+> braces (text (show ns) <> line <> showDecls o ps <> line)
17831785showDeclImp o (PNamespace n ps) = text "namespace" <+> text n <> braces (line <> showDecls o ps <> line)
17841786showDeclImp _ (PSyntax _ syn) = text "syntax" <+> text (show syn)
1785−showDeclImp o (PClass _ _ _ cs n ps _ _ ds)
1787+showDeclImp o (PClass _ _ _ cs n ps _ _ ds _ _)
17861788 = text "class" <+> text (show cs) <+> text (show n) <+> text (show ps) <> line <> showDecls o ds
17871789showDeclImp o (PInstance _ _ _ _ cs n _ t _ ds)
17881790 = text "instance" <+> text (show cs) <+> text (show n) <+> prettyImp o t <> line <> showDecls o ds